iOS - 如何探测手机上是否安装了某个APP

1.核心知识点:通过canOpenURL来打判断app是否存在,URL中包含的是该APP的url scheme

2.详解“url scheme”:

(1)url scheme到底是什么?

  url scheme是APP可以自己注册的,即在项目中的info.plist里添加URL types,点击展开,右键选择Add Row,添加URL Schemes
  用大白话说它其实就是一个标识,其它APP可以通过它直接互相调用并可以传递一些参数

(2)如何检测url scheme的准确性?

  以淘宝为例-》如果该url scheme是正确的,则你在Safari里输入taobao://,就可以直接打开你的淘宝app,如果你没有装淘宝,应该显示的是淘宝下载界面且点击会跳到AppStore的淘宝下载界面,反之则证明url scheme有效是错误的

(3)URL Schemes是不是唯一的?

  并不是唯一的,也就是说,多个应用之间设置的URL Schemes是可以相同的。那么问题来了,假如两个应用的URL Schemes相同的话,使用openURL:方法会打开哪个应用呢?
  结论:如果两个应用有URL Schemes是相同的,后安装的应用的URL Schemes会把早安装的应用的URL Schems覆盖掉

3.具体步骤:

(1)获取对应APP的url scheme

  a:获取对应app的ipa包(降级iTunes至12.6.3,又或者是下载itools pro版)  [参考1](https://www.jianshu.com/p/4ee125401340) 
  b:把ipa扩展名改成zip,解压
  c:在playload文件夹下显示包内容,然后搜索info.plist,有可能搜到多个info.plist,这个时候我是逐一打开,在文件中找到CFBundleURLSchemes,后面的一系列string便是,又或者是搜索url type,获取里面对应的url scheme,这两个方法都可以用

(2)iOS9及以上需要设置白名单:既可以在plist设置,也可以用代码写

(3)具体代码:

  NSURL *urlII = [NSURL URLWithString:@"taobao://"];
  BOOL hadInstalledWeixin = [[UIApplication sharedApplication] canOpenURL:urlII];
  if (hadInstalledWeixin)
  {

     NSLog(@"说明此设备有安装app");
     //打开APP
     [[UIApplication sharedApplication] openURL:urlII];

   }else{

      NSLog(@"说明此设备没有安装app");
   }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值