美文网首页
cordova-plugin-ionic-webview

cordova-plugin-ionic-webview

作者: SandLZ | 来源:发表于2019-05-08 21:03 被阅读0次
node 10.15.0
ionic 4.12.0
cordova 9.0
# platforms
cordova-android:8.0.0
cordova-ios: 5.0.0

安装

ionic cordova plugin add cordova-plugin-ionic-webview
npm install @ionic-native/ionic-webview

配置

config.xml

// 默认值: localhost
<preference name="Hostname" value="app" />
// Android Scheme 默认:http(没必要无需设置)
//<preference name="Scheme" value="https" />
// ios Scheme 默认:ionic(没必要无需设置)
//<preference name="iosScheme" value="httpsionic" />
// 修改后需要增加如下配置 ionic:// 默认被允许 无需额外操作
<allow-navigation href="http://app/*" />
<allow-navigation href="https://app/*" />
// 对应iosScheme 
//<allow-navigation href="httpsionic://*"/>

修改后的

iOS: ionic://app
Android: http://app

跨域问题

如果后端关闭了跨域,且并未对ionic://apphttp://app开启允许跨域,如第三方API.

Android平台

  • MIXED_CONTENT_ALWAYS_ALLOW 0
  • MIXED_CONTENT_NEVER_ALLOW 1
  • MIXED_CONTENT_COMPATIBILITY_MODE 2
<preference name="MixedContentMode" value="0" />

Android可通过如上设置来避免跨域问题。

iOS

iOS默认使用WKWebView,WKWebView禁止跨域.

方案一(不推荐)

使用旧的UIWebView替代
好处:改动小
坏处:性能较差,新特性无法使用,其他坑

方案二(不推荐)

使用插件cordova-plugin-advanced-http,所有请求通过此插件发送

方案三(推荐)

使用代理程序,app所有接口走代理

本地文件加载问题

import {WebView} from '@ionic-native/ionic-webview/ngx';
constructor(private webView: WebView) {}
this.webView.convertFileSrc(filePath);

别忘了在app.module.ts中声明

import {WebView} from '@ionic-native/ionic-webview/ngx';
providers: [
    WebView
]

相关文章

网友评论

      本文标题:cordova-plugin-ionic-webview

      本文链接:https://www.haomeiwen.com/subject/dycboqtx.html