解决cocos 2dx/creator2.4在ios18下openURL无法调用的问题

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

objectivec 复制代码
//修复openURL在ios18下无法调用的问题
bool Application::openURL(const std::string &url)
{
    // NSString* msg = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding];
    // NSURL* nsUrl = [NSURL URLWithString:msg];
    // return [[UIApplication sharedApplication] openURL:nsUrl];

    @autoreleasepool {
        NSURL *nsUrl = [NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]];
        
        // 检查是否为 HTTP/HTTPS URL
        if ([[nsUrl scheme] isEqualToString:@"http"] || [[nsUrl scheme] isEqualToString:@"https"]) {
            if (@available(iOS 14.5, *)) {
                NSDictionary *options = @{UIApplicationOpenExternalURLOptionsEventAttributionKey : @YES};

                [[UIApplication sharedApplication] openURL:nsUrl options:options completionHandler:^(BOOL success) {
                    if (success) {
                        // URL成功打开
                    } else {
                        // URL打开失败
                    }
                }];

                return YES;
            }
        }
        
        // 其他情况使用旧方法
        if (@available(iOS 10.0, *)) {
            [[UIApplication sharedApplication] openURL:nsUrl options:@{} completionHandler:nil];
        } else {
            [[UIApplication sharedApplication] openURL:nsUrl];
        }
        return YES;
    }
    return NO;
}
相关推荐
泓博3 小时前
Objective-c把字符解析成字典
开发语言·ios·objective-c
瓜子三百克4 小时前
Objective-C 路由表原理详解
开发语言·ios·objective-c
帅次4 小时前
Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
flutter·macos·ios·objective-c·iphone·swift·safari
fengyun28915 小时前
Mac电脑 卸载工具 App Cleaner
macos
aerror9 小时前
Xbox One 控制器转换为 macOS HID 设备的工作原理分析
macos·xbox
晴风向上10 小时前
mac mini m4安装node.js@16以下版本方法
macos·node.js
JPCstorm11 小时前
Mac homebrew 安装教程
macos
秋窗712 小时前
Mac 部署Latex OCR并优化体验(打包成App并支持全局快捷键)
macos·ocr·latex
FreeBuf_12 小时前
朝鲜APT组织使用Nim语言恶意软件对macOS发起隐秘Web3与加密货币攻击
macos·web3·策略模式
我唔知啊14 小时前
OC底层原理二:OC对象的分类(实例对象、类对象、元类对象)
ios·objective-c