ITMS-90809:Deprecated API Usage

最近上架苹果应用时,收到这么一封邮件:


苹果邮件截图.png

官方文档是这么解释的:

In apps that run in iOS 8 and later, use the WKWebView class instead of using UIWebView. Additionally, consider setting the WKPreferences property javaScriptEnabled to false if you render files that are not supposed to run JavaScript.

简单来说就是苹果爸爸打算于2020年12月废弃使用UIWebView,如果你的App适配的iOS版本大于8.0,就请全部替换为WKWebView

代码全局搜索了一下和UIWebView相关的代码,该适配的适该删除的删除。

但是,重点来了:后面再次提交构建版本的时候,又一次收到了这封邮件,还是关于UIWebView。
what?我不是都删了吗?
忽略了一个关键点就是第三方SDK,但是因为大多数第三方SDK都是使用的.a或.framework封装看不到具体代码实现,所以无法证实到底哪些SDK使用了UIWebView,不过也不是没有办法,cd到工程目录并使用下面这个命令:

find . -type f | grep -e ".a" -e ".framework" | xargs grep -s UIWebView

结果:

[./App/module/3rdPart/WXAPI/README.txt:1. 修改包含"UIWebView"字符的类名
Binary file ./App/module/3rdPart/GT3Captcha/GT3Captcha.framework/GT3Captcha matches

发现在GT3Captcha.framework这个文件中有引用,这个文件对应的是极验的SDK,打开对应开发网站找到iOS更新日志:


极验SDK更新日志.png

其实人家早就针对iOS13做了更新,下载最新版本SDK替换原来的就可以了

相关的还有例如libWeChatSDK.a和TencentOpenAPI.framework,做过QQ第三方登录的童鞋肯定有印象:

/**
 * 登录授权
 * \param permissions 授权信息列表
 * \param bInSafari 是否使用safari进行登录.<b>IOS SDK 1.3版本开始此参数废除</b>
 */
- (BOOL)authorize:(NSArray *)permissions
         inSafari:(BOOL)bInSafari;

解决办法同理,上对应QQ互联开发平台下载最新的SDK替换一下即可

如果本文对你有所帮助记得点个赞哈

推荐阅读更多精彩内容