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 工程的话,有好几个地方需要修改。

相关推荐
晓风伴月2 小时前
微信小程序:在ios中border边框显示不全
ios·微信小程序·小程序
2501_916013746 小时前
iOS 加固工具使用经验与 App 安全交付流程的实战分享
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063210 小时前
Fiddler 中文版抓包实战 构建标准化调试流程提升团队协作效率
android·ios·小程序·https·uni-app·iphone·webview
iReaShare11 小时前
iPhone 数据擦除软件评测(最新且全面)
ios
iReaShare11 小时前
轻松将文件从 iPhone 传输到 Mac
ios
杂雾无尘16 小时前
swift 基础:关联引用讲解
ios·swift·客户端
货拉拉技术16 小时前
iOS疑难Crash-iOS18.0+ BackBoardServices exit 崩溃治理
ios
毛发浓密的女猴子16 小时前
iOS 基础篇(一): char、int、long、NSInteger类型对比
ios
瓜子三百克19 小时前
SwiftUI 全面介绍与使用指南
ios·swiftui·swift