解决 ipa 上传 App Store 邮箱报错问题 UIWebView不支持解决办法

问题:
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
Best regards,
The App Store Team
在这里插入图片描述
解决:
使用Xcode 9以上 打开项目

  1. 更新iOS到6.1.0

(1)更新前先备份一份。
(2)更新 : build > src 右键命令行启动 输入以下命令
cordova platform remove ios
cordova platform add ios (或者 ios@6.1.0)
在这里插入图片描述
(3)更新后,选择项目 > Singing&Capabilities > Siging 选择正确的自己的文件,发布或开发签名文件
在这里插入图片描述
(4)将更新后Classes中缺少的文件从备份的文件中拷贝过来。
在这里插入图片描述
在这里插入图片描述
参考:
https://ask.csdn.net/questions/5873051

  1. 更新CDVWKinAppBrowser.h系列文件。更新后的文件去除了userAnget的使用,因为userAnget是UIWebView的内容
    下载
    https://github.com/apache/cordova-plugin-inappbrowser/pull/635
    将这里的src > iOS 下的文件替换项目目录Plugins中的文件
    在这里插入图片描述

  2. 替换CordovaLib文件

网盘下载链接
链接:https://pan.baidu.com/s/1qv84XtoK0yDDY4iFs1GDWg
提取码:ejx0
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V4的分享

GET下载链接:https://github.com/apache/cordova-ios/commit/20248c196d35c9b8390dbbd2953f9bc1191b6c6d

在这里插入图片描述
(4)删除CordovaLib.xcodeproj > private > Plugins 下的 CDVUIWebViewEngine 文件夹(如果有的话)

参考:
https://blog.csdn.net/qq_38904099/article/details/107559724

  1. 在项目的ios目录下执行命令
    cordova plugin add cordova-plugin-wkwebview-engine

(1)解决跨域问题
打开Xcode找到CDVWKWebViewEngine.m 正常在Plugins目录中
找到这个方法,里面添加代码

  • (WKWebViewConfiguration*) createConfigurationFromSettings:(NSDictionary*)settings
    {
    WKWebViewConfiguration* configuration = [[WKWebViewConfiguration alloc] init];

    这里还有一部分代码,不用删除

    //在return上面添加下面两行代码
    [configuration.preferences setValue:@YES forKey:@“allowFileAccessFromFileURLs”];
    [configuration setValue:@YES forKey:@"_allowUniversalAccessFromFileURLs"];
    return configuration;
    }
    在这里插入图片描述
    (2)修改config.xml文件
    设置只支持WKWebView设置

    在这里插入图片描述
  1. 搜索UIWebView全部替换为WKWebView
    在项目上右键
    在这里插入图片描述
    搜索全部替换,基本上是一些注释的地方
    在这里插入图片描述

  2. 最后Archive 将报错的地方注释掉。
    错误的地方基本上是userAgent 的地方,前面已经将userAgent换掉了。成功后就可以上传了。

  3. 如果没有Archive
    (1)选择Any ios Device
    在这里插入图片描述
    (2)然后product > Archive
    在这里插入图片描述
    可能问题:
    头文件找不着问题
    在这里插入图片描述
    我们需要在Targets下面的Build Settings中的Search Paths中的Paths配置下,将静态库,和静态库下的Headers拖进去,添加路径即可。
    即下面标注部分:
    (1)
    target->Build Settings-> Rez Search Path填写的路径是${SRCROOT},User Header Search Path处同样也写${SRCROOT}。
    (2)
    在工程target->Build Phrases->Compile Sources->Link Binary With Libraries添加对应的静态库
    在工程target->Build Settings-> Rez Search Path 设置
    $(PROJECT)
    在工程target->Build Settings-> Header Search Path 设置$(PROJECT)

参考链接:
https://blog.csdn.net/Silence723/article/details/80064043

模拟真机运行

  1. 选择要运行的手机
    在这里插入图片描述
  2. 更改编译运行方式为release
    在这里插入图片描述
  3. 选择release执行
    在这里插入图片描述
  4. 更改选择项目 > Build&Setting > Architectures > Build Active Architecture Only 的Release 为yes
    在这里插入图片描述

完成。

以上纯属根据自己的操作经历编写,如有问题还望指正。

补充:查看项目中是否含有UIWebView主要有两处

第一处是上面提到的在项目中全局搜索,这只能找到项目中使用到的UIWebView。
第二部是使用命令查看所有位置包括第三方库中是否引用UIWebView,打开命令框,进入项目目录,输入命:

grep -r UIWebView .

如果没有,那就是没有使用到的了。如果还有查看那写地方使用了。
如果是第三方插件,那就更新这些插件。使用输入命令:

pod update 

全部更新。也可指定更新某一个 ,在命令后面加插件名
更新后使用 xxx.xcworkspace 启动项目
如果pod命令没有,参考:https://www.jianshu.com/p/6d51362b7e64

至此差不多就可以上架了。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐