IOS 18下openURL 失效问题

突然有一天有玩家反馈说应用打开外部连接打不开了,于是查了一下,报错:

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).

由于ios18废弃了旧的openURL接口,我们需要修改CCApplication-ios.mm文件的Application::openURL方法:

原先方法:

复制代码
void Application::openURL(const std::string &url)
{
    NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding];
    NSURL* nsUrl = [NSURL URLWithString:msg];
    [[UIApplication sharedApplication] openURL:nsUrl];

}

改后方法:

复制代码
void Application::openURL(const std::string &url)
{
    NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding];
    NSURL* nsUrl = [NSURL URLWithString:msg];
    if (@available(iOS 10.0, *)) {
         [[UIApplication sharedApplication] openURL:nsUrl options:@{} completionHandler:nil];
    } else {
        [[UIApplication sharedApplication] openURL:nsUrl];
    }
}

这里ios 18 将打开链接的方法里面添加了回调方法,我们没有用的话可以填空,这样ios18的设备也能打开外链了。

需要注意的是 cocos 工程的话,有好几个地方需要修改。

相关推荐
VirusTarget4 小时前
探索 Xcode String Catalog:现代化 iOS 应用国际化指南
ios
pop_xiaoli5 小时前
SQLite3语句以及FMDB数据存储初步学习
学习·ios·sqlite·objective-c·cocoa
磊怀9 小时前
iOS 中的引用计数
ios
游戏开发爱好者813 小时前
iOS 崩溃日志分析工具全指南,多工具协同构建稳定性分析体系
android·macos·ios·小程序·uni-app·cocoa·iphone
00后程序员张1 天前
如何提高 IPA 安全性 多工具组合打造可复用的 iOS 加固与反编译防护体系(IPA 安全 iOS 加固 无源码混淆 Ipa Guard 实战)
android·安全·ios·小程序·uni-app·iphone·webview
洞窝技术1 天前
前端开发APP之跨平台开发(ReactNative0.74.5)
android·react native·ios
EricStone1 天前
iOS语音转换SDK相关记录
ios
2501_916007471 天前
Fastlane 结合 开心上架 命令行版本实现跨平台上传发布 iOS App
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张1 天前
iOS 26 内存占用监控 多工具协同下的性能稳定性分析实战
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915909061 天前
iOS 26 性能监控工具有哪些?多工具协同打造全方位性能分析体系
android·macos·ios·小程序·uni-app·cocoa·iphone