iOS提审构建版本,报错ITMS-90809,用WKWebView替代废弃的UIWebView

在提审新iOS应用包时,遇到ITMS-90809错误提示UIWebView已废弃。苹果建议使用WKWebView代替。由于项目使用了cocos2dx-lua 3.10,无法直接升级引擎,只能手动修改。通过命令行或Xcode搜索定位UIWebView,删除或升级相关SDK,将项目代码中的UIWebView替换为WKWebView。使用class_dump工具验证移除情况。若引擎中存在UIWebView,参考官方论坛的升级指南进行修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目有新包提审,在上传到App Store时,没有刷出来或者刷出来后又没了,并且收到App Store官方的邮件,是项目程序中包含了苹果官方已经废弃的类UIWebView,

官方回复邮件
部分翻译

苹果官方推荐使用WKWebView替换原来的UIWebView。

因为我用的引擎是cocos2dx-lua 3.10,在触控官网查需要升级引擎版本才能避免这个问题,因为项目原因不能升级引擎,只能通过自己手动的方式修改。在项目中搜索UIWebView有两种方式,第一种通过命令行查找,打开终端进入项目目录,即xxxxxx.xcodeproj所在目录,输入grep -r UIWebView . (注意后面还有一个点)

<think>好的,用户遇到了ITMS-90809的错误,这个错误是因为使用了已经被废弃UIWebView。用户提到他们是因为使用UIWebView来获取UserAgent导致的这个问题。现在需要找到解决方案,替换WKWebView。 首先,我需要确认UIWebViewWKWebView的区别。UIWebView是旧版的Web视图组件,而WKWebView是苹果推荐的替代品,具有更好的性能和安全性。所以,替换WKWebView是正确的方向。 接下来,用户当前使用UIWebView获取UserAgent。需要找到如何使用WKWebView来实现同样的功能。UIWebView获取UserAgent的方法可能是在初始化时或者通过某个回调获取,而WKWebView的方式可能不同。 查阅苹果的文档,WKWebView可以通过evaluateJavaScript方法来执行JavaScript代码,从而获取UserAgent。或者,也可以使用WKWebView的实例方法来获取。不过,可能需要注意的是,WKWebView的UserAgent可能需要异步获取,因为它的初始化可能需要时间。 另外,可能还需要考虑是否需要在应用的全局设置中设置UserAgent,或者只是临时获取。如果是全局设置,可能需要使用WKWebView的配置来设置默认的UserAgent。 然后,我需要编写示例代码,展示如何用WKWebView替换UIWebView来获取UserAgent。例如,创建一个WKWebView实例,然后在其加载完成后执行JavaScript来获取UserAgent,或者在初始化时设置UserAgent。 还要注意,WKWebView的使用可能需要处理异步回调,因为它的方法是异步执行的,不像UIWebView可能是同步的。因此,在代码中需要处理回调函数,确保UserAgent在获取之后再进行后续操作。 此外,用户可能需要修改项目中所有使用UIWebView的地方,不仅仅是获取UserAgent的部分,确保完全替换WKWebView,以避免其他潜在的警告或错误。 最后,提醒用户在替换后进行充分的测试,确保获取UserAgent的功能正常,并且应用的其他部分没有因为替换WebView组件而出现问题。同时,建议检查所有第三方库,确保它们也没有使用UIWebView,如果有的话,需要更新到使用WKWebView版本。</think>你的报错是苹果强制要求使用WKWebView替代UIWebView引起的。以下是详细解决方案: **分步解决指南:** 一、定位问题根源 1. 全局搜索`UIWebView`关键字 2. 特别注意获取UserAgent的代码段,类似: ```swift let webView = UIWebView() let userAgent = webView.stringByEvaluatingJavaScript(from: "navigator.userAgent") ``` 二、替换WKWebView方案 ```swift // 新版获取方式(Swift示例) let webView = WKWebView() webView.evaluateJavaScript("navigator.userAgent") { (result, error) in if let userAgent = result as? String { print("获取成功:\(userAgent)") // 保存到UserDefaults或全局变量 UserDefaults.standard.set(userAgent, forKey: "UserAgent") } } ``` 三、全局设置UserAgent(可选) 若需要设置默认UA: ```swift WKWebViewConfiguration().applicationNameForUserAgent = "CustomUserAgent" ``` 四、注意事项 1. 异步处理:WKWebView所有操作都是异步的,需使用闭包回调 2. 生命周期:保持webView实例的强引用直到回调完成 3. 兼容性:iOS 11+适用,如需支持更低版本需做版本判断 五、检查第三方库 1. 执行`grep -r "UIWebView" .` 2. 若发现第三方库包含UIWebView- 更新库到最新版本 - 联系库作者要求更新 - 必要时更换替代库 **验证步骤:** 1. 删除DerivedData 2. 完整清理项目(Cmd+Shift+K) 3. 使用Xcode 14+编译 4. 使用`nm`命令检查二进制文件: ```bash nm YourApp.app/YourApp | grep UIWebView ``` 应无任何输出 **扩展建议:** - 使用UserAgent缓存机制提升性能 - 在App启动时预取UserAgent - 关键业务逻辑添加UA备用方案 完成修改后重新打包提交即可通过苹果审核。整个过程需要重点关注异步回调的处理和第三方库的兼容性检查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值