Xcode16踩坑:UIApplication.openURL(_:)方法已彻底废弃

一、自2025年4月24日起,所有上传至 App Store Connect 的App都必须使用Xcode16打包

近来仍在使用Xcode15打包提审的小伙伴想必都收到了苹果提醒你升级Xcode16的警告邮件了吧。没升级的小伙伴抓紧了。

Although delivery was successful, you may want to correct the following issues in your next delivery. Once you've corrected the issues, upload a new binary to App Store Connect.

ITMS-90725: SDK version issue - This app was built with the iOS 17.2 SDK. Starting April 24, 2025, all iOS and iPadOS apps must be built with the iOS 18 SDK or later, included in Xcode 16 or later, in order to be uploaded to App Store Connect or submitted for distribution.

Apple Developer Relations。

二、Xcode16苹果彻底废弃了UIApplication.openURL(_:)方法

近来接到客诉,有iOS18用户反馈无法拉起微信登录。经过排查我发现是 UIApplication.openURL 方法的锅。

苹果在iOS18 Release Notes(125695759)中写道:

Applications built with iOS 18, iPadOS 18, Mac Catalyst 18, or tvOS 18 SDKs will call to the deprecated method UIApplication.openURL(_:). The specified URL will not open and will always return false

Xcode16(iOS18 SDK)苹果彻底废弃了UIApplication.openURL(_:)方法,UIApplication.openURL方法将会无效,不会打开传入的URL,方法将总是返回false

经过测试

Xcode15打包,iOS18没问题 ✅

Xcode16打包,iOS18有问题 ❌、18以下系统没问题✅

Xcode16调试iOS18设备,调用UIApplication.openURL(_:)方法,会没有效果,且Xcode控制台会直接报错:
BUG IN CLIENT OF UIKIT: The caller of UIApplication.openURL(_:) needs to migrate to the non-deprecated UIApplication.open(_:options:completionHandler:). Force returning false (NO).

所以,请全面检查一下你的工程,将旧的 UIApplication.openURL(_:)方法替换成新方法[UIApplication openURL:options:completionHandler:],options参数传空字典就行。

objectivec 复制代码
//Swift
UIApplication.shared.open(url, options: [:]) { success in
            
}

//OC
[UIApplication.sharedApplication openURL:url options:@{} completionHandler:^(BOOL success) {

}];

这里有个小技巧:不要通过字符串去查找,因为OC有多种写法、Swift写法也不一样,容易漏。可以编译项目,然后从Xcode编译警告中筛选"open"来过滤,如下图

三、请将微信SDK更新到最新版本(2.0.4)

上述原因也是导致微信授权登录失败的原因,因为微信旧版SDK(低于2.0.4)里使用了废弃的UIApplication.openURL(_:)方法。部分用户点微信登录时,微信SDK的[WXApi sendReq:completion]方法可能会返回false,微信拉起失败。

ini 复制代码
[WXApi sendReq:req completion:^(BOOL success) {
        if (!success) {
           
        }
}];

微信官方文档上也对此做了说明:

由于老版本 SDK 中使用的 openUrl 接口为系统废弃接口,如开发者在 iOS18 升级 Xcode16 进行打包,则会偶现SDK无法拉起微信的问题。

而该问题已经 在 2.0.4 得 版本换新接口。因此,请近期有发版计划的开发者及时更新到2.0.4,避免影响用户日常使用

所以,请尽早将微信SDK升级到最新版本(2.0.4),以免影响微信登录、微信分享功能。

万恶的苹果,害楼主不得不将万年不更的微信SDK、QQ SDK都升级到最新版了。

参考文献
【苹果官方文档】iOS18 Release Notes
【微信开放社区】iOS 18 WXApi sendReq 无法唤起微信
【微信开放平台】iOS接入文档

相关推荐
徐同保1 天前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
夏幻灵2 天前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte12 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone
rose and war2 天前
python和jinja版本问题导致的访问报500
python·ios
fendoudexiaoniao_ios2 天前
iOS 列表拖拽cell排序
ios·swift
风栖柳白杨2 天前
【语音识别】Qwen3-ASR原理及部署
人工智能·python·语音识别·xcode·audiolm
2501_915106322 天前
当 Perfdog 开始收费之后,我重新整理了一替代方案
android·ios·小程序·https·uni-app·iphone·webview
2501_915918412 天前
中小团队发布,跨平台 iOS 上架,证书、描述文件创建管理,测试分发一体化方案
android·ios·小程序·https·uni-app·iphone·webview