iOS15 canOpenURL: failed for URL: XXXX, Scheme失效问题

此现象针对于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: XXXX, Scheme失效问题)