iOS 9 以上的系统判断设备上是否有安装某app的两个方法:(主要是通过canOpenURL来打判断app是否存在)
方法一:

1、首先要知道你要判断的这款app的UrlSchemes 是什么? 如图:

2、在自己的项目中添加白名单

3、 在代码中调用Application 的canopenUrl 的方法判断设备时候有对应的应用 程序,返回YES表示已安装了该app
代码如下:
// 判断有没有安装该app

-(BOOL)checkAPPIsExist:(NSString*)URLScheme{NSURL* url;if ([URLScheme containsString:@"://"]) {url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",URLScheme]];} else {url = [NSURL URLWithString:[NSString stringWithFormat:@"%@://",URLScheme]];}if ([[UIApplication sharedApplication] canOpenURL:url]){return YES;} else {return NO;}
}

这个方法首先要知道 app 的UrlSchemes.

方法二

1、 获取iOS设备上所有已经安装的app

 -(void)getAllApp
{Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];NSArray *allApplications = [workspace performSelector:@selector(allApplications)];//这样就能获取到手机中安装的所有AppNSLog(@"设备上安装的所有app:%@",allApplications);
}

2、判断iOS设备上是否有安装某个app,判断依据是根据app 的Bundle Id。我们上一步所获取到的allApplications数组中的元素是一个LSApplicationProxy类型的,我们要把这个转换成字符串, 这个字符串中不只包含了App的bundle ID,还包含了安装的路径,因为这个路径不唯一不确定,我们判断是否安装了某个App只需判断这个字符串中的bundle ID,所有我们还要对字符串做处理。前提是要知道你要判断的这个app的Bundle ID 是什么

-(void)isInstallLDApp:(NSArray *)allAPP
{ NSInteger count = 0;for (NSString *appStr in allAPP) {NSString *app = [NSString stringWithFormat:@"%@",appStr];//转换成字符串NSRange range = [app  rangeOfString:@"LdWBrowserIPhone"];//是否包含这个bundle IDif (range.length > 1){count ++;}}if (count >= 1) {NSLog(@"已安装");}else{NSLog(@"没有安装");}
}

这个方法完美解决添加白名单的限制 ,但是遍历的过程中可能会消耗性能, App Store审核可能会被拒,前提是要知道你要判断的这个app的Bundle ID 是什么

参考

ios系统判断设备上是否有安装某app相关推荐

  1. ios系统判断设备上是否有安装某app的两个方法

    iOS 9 以上的系统判断设备上是否有安装某app的两个方法:(主要是通过canOpenURL来打判断app是否存在) 方法一:   步骤一: 获取iOS设备上所有已经安装的app  -(void)g ...

  2. 将iOS刷到Android设备上

    原文地址:http://qorbot.com/archives/178.html 一般情况下,同等流畅度的苹果手机和安卓手机相比,安卓的硬件配置比苹果几乎要高出一倍以上.之所以会有这么大的悬殊,主要是 ...

  3. 带有框架的iOS应用在设备上崩溃,dyld:库未加载,Xcode 6 Beta

    本文翻译自:iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta This crash ha ...

  4. iOS系统 查看设备序列号 获取UDID

    iOS系统的设备标识即UDID,长度为40位,如:85f3c1bcb9ca8ad8b2931219072cf05382a6da09 获取UDID,可以使用手机端访问UDID查询网站在线查询,也可以通过 ...

  5. 苹果微信分身版ios_苹果iOS系统的设备怎样安装两个微信

    关于IOS系统上是否可以装两个微信以及如何装两个微信这样的问题,时常有人问到,今天具体给大家讲讲.由于IOS系统的封闭性,很多用户需求在安卓上可以找到解决方法,可是在IOS上就显得比较困难. 1.对于 ...

  6. 盘点那些手机上绝对值得安装的 App

    文章里面总结了一些非常良心好用的 App,堪称「神器」,我从里面优中选优,挑选了 24 款佳软(见下面这张图),好东西就要拿出来分享,所以今天就和你来介绍一下它们各自的功能特点,希望里面刚好有你需要的 ...

  7. 不可以安装linux系统的设备,安装了linux系统的设备上不了网怎么办

    玩了一阵子的树莓派,曾经计划将其作成一台小小无线路由,但是时间和精力关系始终未成功做成. 同时也有在进行一些arm开发板的学习,突然一天发现arm板直接插上网线不能是不能上网的,又想起之前玩树莓派的时 ...

  8. HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了

    过去这些年,HTML5 颠覆了 PC 互联网的格局,优化了移动互联网的体验,接下来,HTML5 将颠覆原生 App 世界.这听起来有点危言耸听,但若认真分析 HTML5 的发展史,你会发现,这个世界的 ...

  9. ios在判断设备是ipad_Swift - 判断设备类型开发兼容的iOS应用(iPad使用分隔视图控制器)...

    1.分割视图控制器(UISplitViewController) 在iPhone应用中,使用导航控制器由上一层界面进入下一层界面. 但iPad屏幕较大,通常使用SplitViewController来 ...

最新文章

  1. php计算格子xy,经纬度BL和直角坐标XY的正算反算 PHP代码
  2. day 58 关于bootstrap
  3. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 )
  4. python 获取文件后缀名的方法
  5. 陆金所 CAT 优化实践
  6. spring-data-mongodb查询结果返回指定字段
  7. c++ gzip java.util.zip.gzip_java.util.zip.GZIPInputStream.close()方法示例
  8. HTTP Session 的工作原理以及几个思维扩展
  9. Codeforces Round #184 (Div. 2)
  10. python总结与思考_Python小结 – pip 升级包总结
  11. 简单的maven自定义webapp目录
  12. 深度解读智慧农业传感器及应用
  13. 三角函数公式及工程应用
  14. Make menuconfig详解(转)
  15. Grouping BP has not been assigned to any customer accounts groupMessage no. FSBP_ECC004
  16. 金融学核心期刊有哪些?
  17. 七代处理器装win7_为什么7代cpu装不了win7
  18. 【代码实践】使用CLIP做一些多模态的事情
  19. Kali使用中文输入法
  20. 2021-2026年,全球MPO光纤连接器市场复合年增长率预计为23.2%

热门文章

  1. 怎么绕过论坛回复_可怕,GPT3论坛跟帖灌水一周无人发现!专挑热搜,秒秒钟长文...
  2. H.264笔记(接上节)
  3. 利用计算机实现音乐节拍的实时自动跟踪,音乐节拍实时跟踪系统的研究及应用...
  4. RTKLIB_trans_all
  5. C++ std::pair的用法
  6. 伊玛尔Emaar集团12个关系网曝光!个个大有来头!
  7. 常见的深度学习图像处理数据集下载
  8. 为了疫情防控,发短信可查自己的行踪轨迹,是什么技术在帮忙?
  9. Java网络编程---TCP通信
  10. 每天学一点AS3.0(五)---声音的控制(5)