iOS判断是否安装某APP: canOpenUrl

-canOpenURL: 和 -openURL:

工作中有时候需要判断当前设备中是否安装某款应该,这时候就需要用到Apple 提供的 - canOpenURL: API 来测试相应 APP 的 scheme 是否有效来实现。

如何知道某个 APP 支持的所有 scheme

如何知道对应的 APP 是否在设备上呢?我们需要知道这个 APP 支持的所有 scheme,一些常用的大型应用很容易在网上可以查询到,或者自己下载IPA包,交IPA包扩展名改为ZIP,然后解压,找到Info.plist文件,搜索 CFBundleURLSchemes 就可以看到这个 APP 给自己定义的 scheme 了。

以下列举部分常用APP Url Scheme:

QQ mqq://
微信是 weixin://
网易新闻 newsapp://
淘宝 taobao://
点评 dianping:// dianping://search
微博 sinaweibo://
weico微博 weico://
支付宝 alipay://
豆瓣fm: doubanradio://
微盘 sinavdisk://
网易公开课 ntesopen://
美团 imeituan://
人人 renren://
我查查 wcc://
1号店 wccbyihaodian://
有道词典 yddictproapp://
知乎 zhihu://
优酷 youku://
ZAKER zakeripad://
mdict mdict://
京东hd openApp.jdiPad://
易迅 icson://;yixunipad://
wunderlist wunderlist://
查找朋友 grenada://;findmyfriends://;fmf1://
查找iphone fmip1://
触宝拨号:dialer://
蜂窝网络:prefs:root=MOBILE_DATA_SETTINGS_ID
WIFI:prefs:root=WIFI(WIFI这几个字母一定要大写)
定位服务:prefs:root=LOCATION_SERVICES
备忘录:mobilenotes://
高德地图:iosamap://
今日头条 snssdk141://

如何使用 -canOpenURL:

由于iOS9及以后版本的系统中出于对用户隐私的保护,需要在Info.plist 中设置白名单

点击工程文件,选择相应的 Target,点击 Info 选项,展开 Custom iOS Target Properties
找到或者添加 LSApplicationQueriesSchemes 到属性列表中。同时在这个数组下面添加相应的 scheme

<key>LSApplicationQueriesSchemeskey>

<array>

<string>APP Schemestring>

array>

如果没有将 scheme 添加到白名单中却在 -canOpenURL: 中使用了,你的查询会报error
(需要注意的是,最多只能添加50个)

代码示例:

+ (BOOL)canOpenURL:(NSString *)url {
    return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]];
}
[self canOpenURL:@"weixin://"];

你可能感兴趣的:(iOS开发)