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)
{if (@available(iOS 10.0, *)) {[[UIApplication sharedApplication] openURL:nsUrl options:@{} completionHandler:nil];} else {[[UIApplication sharedApplication] openURL:nsUrl];}
}
这里ios 18 将打开链接的方法里面添加了回调方法,我们没有用的话可以填空,这样ios18的设备也能打开外链了。