美文网首页
iOS15 canOpenURL: failed for URL

iOS15 canOpenURL: failed for URL

作者: ShawnAlex | 来源:发表于2021-10-29 15:26 被阅读0次

    此现象针对于ios15之前没问题, 升级到ios15之后遇到的。

    下面例子我这边都拿支付宝 alipay举例, 其他同理

    方法
        if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"alipay://"]]) { 
          //此设备安装支付宝app
           
            [[AlipaySDK defaultService] payOrder:orderString fromScheme:kALIPAY_APP_SCHEMES callback:^(NSDictionary *resultDic) {
                NSLog(@"reslut = %@",resultDic);
            }];
    
       } else {
          //此设备没安装支付宝app
          NSLog(@"打开支付宝失败,请确认是否安装");
       }
    
    ios15下报错
    canOpenURL: failed for URL: "alipay://" - error: "This app is not allowed to query for scheme alipay"
    

    ios15之前正常调用的话Info.plist里面白名单LSApplicationQueriesSchemes肯定加过alipay
    但是问题就发生在加白名单这里。

    ios15及以后Info.plistLSApplicationQueriesSchemes下配置的scheme数量超过50, canOpenURL 直接判断为 NO。苹果官方不太希望我们过多的打开其他App。

    例如:

    我支付宝位置53, 打不开


    例子1
    解决:

    我将支付宝位置换成48, 正常打开


    例子2
    总结:

    苹果建议之后AppLSApplicationQueriesSchemes下配置的scheme数量不要超过50个,
    所以建议将其控制在50以内, 该问题即可解决。

    相关文章

      网友评论

          本文标题:iOS15 canOpenURL: failed for URL

          本文链接:https://www.haomeiwen.com/subject/fjvialtx.html