突然有一天有玩家反饋說應用打開外部連接打不開了,于是查了一下,報錯:
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 工程的話,有好幾個地方需要修改。