此现象针对于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.plist
中LSApplicationQueriesSchemes
下配置的scheme
数量超过50
, canOpenURL 直接判断为 NO
。苹果官方不太希望我们过多的打开其他App。
例如:
我支付宝位置53, 打不开
例子1
解决:
我将支付宝位置换成48, 正常打开
例子2
总结:
苹果建议之后AppLSApplicationQueriesSchemes
下配置的scheme
数量不要超过50个,
所以建议将其控制在50以内, 该问题即可解决。
网友评论