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

相关推荐
ACP广源盛1392462567313 小时前
iOS 27 开放 AI 生态@ACP#小型化扩展黄金风口,IX8008全面超越 ASM2806,铸就嵌入式 AI 扩展核心
人工智能·嵌入式硬件·macos·ios·计算机外设·objective-c·cocoa
人月神话Lee14 小时前
【图像处理】卷积原理与卷积核——图像处理的核心引擎
ios·ai编程·图像识别
用户2235862182016 小时前
如何在超大型的工程中使用 Claude Code?
前端·ios·claude
00后程序员张18 小时前
HTTPS单向认证、双向认证、抓包原理与反抓包策略详解
网络协议·http·ios·小程序·https·uni-app·iphone
Daniel_Coder20 小时前
iOS Widget 开发-14:iOS 18 控制中心组件开发
ios·swift·widget·activitykit·widgetkit·控制中心组件
七牛云行业应用21 小时前
OpenAI Codex手机版上线实战:iOS/Android 5步配置远程控制指南(2026)
android·ios·智能手机
2501_915921431 天前
使用Swift和Xcode创建简单iOS应用完整教程
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
Daniel_Coder1 天前
iOS Widget 开发-13:Live Activity 实战详解
ios·swift·widget·widgetkit·controls·live activity
库奇噜啦呼1 天前
【iOS】Spotify项目总结
ios·iphone
鹤卿1232 天前
OC UI ——UIGestureRecognizer 手势识别
ui·ios·objective-c