如题,在不使用任何第三方SDK的情况下,可简单通过如下方式判断
// 是否安装微信
BOOL wechat = [[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"mqqapi://"]];
// 是否安装QQ
BOOL qq = [[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"weixin://"]];
在未在项目中info.plist文件中配置白名单的情况下,直接运行,Xcode控制台有如下提示:
-canOpenURL: failed for URL: "mqqapi://" - error: "This app is not allowed to query for scheme mqqapi"
-canOpenURL: failed for URL: "weixin://" - error: "This app is not allowed to query for scheme weixin"
[ 原因分析 ]
在iOS9版本以后需要增加一个信任的可跳转的白名单,才能进行应用之间的唤起。
如需要通过此方式判断移动设备是否安装指定的应用,应该在工程的info.plist文件中做如下配置:
[ 可直接复制使用 ]
<key>LSApplicationQueriesSchemes</key>
<array>
<string>mqqOpensdkSSoLogin</string>
<string>mqzone</string>
<string>sinaweibo</string>
<string>alipayauth</string>
<string>alipay</string>
<string>safepay</string>
<string>mqq</string>
<string>mqqapi</string>
<string>mqqopensdkapiV3</string>
<string>mqqopensdkapiV2</string>
<string>mqqapiwallet</string>
<string>mqqwpa</string>
<string>mqqbrowser</string>
<string>wtloginmqq2</string>
<string>weixin</string>
<string>wechat</string>
</array>
上面的Schemes设置涉及:qq登录绑定、qq支付、qq分享、微信支付、微信登录绑定、新浪登录绑定、支付宝支付、支付宝登录绑定
[ 总结 ]
涉及到客户端的跳转,都需要设置scheme到LSApplicationQueriesSchemes,如使用第三方,可直接看其官网,要不访问提供方的如微信,QQ,支付宝API官方看开发文档,开发文档都会第一时间给开发者提供解决方案。