zoukankan      html  css  js  c++  java
  • Cordova项目 UiwebView替换为WKWebview

    2020年3月之前已经上线的项目,可以继续使用UIWebView继续迭代版本,每次提交审核会收到苹果的警告邮件;2020年3月之后的项目,必须使用WKWebView,提交审核才能通过,不然提示二进制数据错误。审核不通过

    官方已经发布了支持WKWebView的cordova ios@6.1.0,去掉了UIWebVIew,看下面操作:
    cordova platforms rm ios
    cordova platforms add ios@6.1.0
    看完上面就完了,下面开始介绍把现有或者新建的Cordova项目从使用UIWebView浏览器改造成使用WKWebview浏览器
    一、首先安装cordova-plugin-wkwebview-engine插件
    写给新手:首先cd cordova项目名称下面
    比如:
    cordova create Demo com.company.app Demo
    cd Demo
    cordova plugin add cordova-plugin-wkwebview-engine
    老手都会添加插件
    安装了插件,你再次运行,进行真机调试,日志就能看到using WKWebView,如果这一步做完了,真机运行出现白屏,找到这个文件cordova_plugins.js,里面的插件引用出现了问题,核对一下各个插件的路径对不对。 注意,安装了这个插件之后,就要把iOS最低兼容的iOS版本从iOS 8调到iOS 9+,看下面修改:  iOS 9+以上才支持WKWebView,至于苹果为什么要这么做呢,自己去百度百科WKWebVIew,会更安全,功能更强大。

    二、解决跨域问题(这才是最重要的问题!)
    打开Xcode找到这个文件CDVWKWebViewEngine.m,

    找到这个方法,里面添加代码
    - (WKWebViewConfiguration*) createConfigurationFromSettings:(NSDictionary*)settings
    {
    WKWebViewConfiguration* configuration = [[WKWebViewConfiguration alloc] init];
    ...
    这里还有一部分代码,不用删除
    ...
    //在return上面添加下面两行代码
    [configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
    [configuration setValue:@YES forKey:@"_allowUniversalAccessFromFileURLs"];
    return configuration;
    }
    解决跨域问题,Cookie获取不到的情况。

    三、修改config.xml文件,调整部分功能
    1、支持页面右滑返回上一页,左滑进入下一页。

    <preference name="AllowBackForwardNavigationGestures" value="true" />
    注:前提是你打开过下一页。

    特别建议:不建议开启这个功能,因为部分页面逻辑是不让随意返回到上一页的,业务逻辑混乱,数据异常,出现bug。

    2、只支持WKWebView设置

    <preference name="WKWebViewOnly" value="true" />
    其他、3DTouch或者AirPlay什么的功能自己百度解决

    四、去除苹果警告,顺利通过苹果审核,上架App Store
    你发现,你上面的工作都做了,还是会收到苹果警告邮件或者二进制文件被拒绝。那是因为苹果通过代码检测,你的项目中还是存在UIWebView,下面教你怎么快速去除UIWebView的代码:

    1、删除6个文件,看下图:

    2、使用Xcode打开你的cordova ios项目,就是双击Demo.xcworkspace文件,搜索替换UIWebView为WKWebView.

    这一步要注意,可能有一些三方SDK或者网络框架AFNetWork里面也包含UIWebVIew,这就要去更新这些SDK或者网络框架了,修改成WKWebView之后,运行报错的代码行请注释掉。

    原文链接:https://blog.csdn.net/qq_38904099/article/details/107559724

  • 相关阅读:
    Postman的使用和测试
    Django报错 django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
    MySQL 修改字段类型或长度
    mysql导入导出sql文件
    Django 无法同步数据库model相应字段问题
    Django objects.all()、objects.get()与objects.filter()之间的区别介绍
    inconsistent use of tabs and spaces in indentation
    JavaScript 计时器
    JavaScript--编程题
    JavaScript--Array 数组对象
  • 原文地址:https://www.cnblogs.com/it-Ren/p/14590144.html
Copyright © 2011-2022 走看看