ios系统判断设备上是否有安装某app
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相关推荐
- ios系统判断设备上是否有安装某app的两个方法
iOS 9 以上的系统判断设备上是否有安装某app的两个方法:(主要是通过canOpenURL来打判断app是否存在) 方法一: 步骤一: 获取iOS设备上所有已经安装的app -(void)g ...
- 将iOS刷到Android设备上
原文地址:http://qorbot.com/archives/178.html 一般情况下,同等流畅度的苹果手机和安卓手机相比,安卓的硬件配置比苹果几乎要高出一倍以上.之所以会有这么大的悬殊,主要是 ...
- 带有框架的iOS应用在设备上崩溃,dyld:库未加载,Xcode 6 Beta
本文翻译自:iOS app with framework crashed on device, dyld: Library not loaded, Xcode 6 Beta This crash ha ...
- iOS系统 查看设备序列号 获取UDID
iOS系统的设备标识即UDID,长度为40位,如:85f3c1bcb9ca8ad8b2931219072cf05382a6da09 获取UDID,可以使用手机端访问UDID查询网站在线查询,也可以通过 ...
- 苹果微信分身版ios_苹果iOS系统的设备怎样安装两个微信
关于IOS系统上是否可以装两个微信以及如何装两个微信这样的问题,时常有人问到,今天具体给大家讲讲.由于IOS系统的封闭性,很多用户需求在安卓上可以找到解决方法,可是在IOS上就显得比较困难. 1.对于 ...
- 盘点那些手机上绝对值得安装的 App
文章里面总结了一些非常良心好用的 App,堪称「神器」,我从里面优中选优,挑选了 24 款佳软(见下面这张图),好东西就要拿出来分享,所以今天就和你来介绍一下它们各自的功能特点,希望里面刚好有你需要的 ...
- 不可以安装linux系统的设备,安装了linux系统的设备上不了网怎么办
玩了一阵子的树莓派,曾经计划将其作成一台小小无线路由,但是时间和精力关系始终未成功做成. 同时也有在进行一些arm开发板的学习,突然一天发现arm板直接插上网线不能是不能上网的,又想起之前玩树莓派的时 ...
- HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了
过去这些年,HTML5 颠覆了 PC 互联网的格局,优化了移动互联网的体验,接下来,HTML5 将颠覆原生 App 世界.这听起来有点危言耸听,但若认真分析 HTML5 的发展史,你会发现,这个世界的 ...
- ios在判断设备是ipad_Swift - 判断设备类型开发兼容的iOS应用(iPad使用分隔视图控制器)...
1.分割视图控制器(UISplitViewController) 在iPhone应用中,使用导航控制器由上一层界面进入下一层界面. 但iPad屏幕较大,通常使用SplitViewController来 ...
最新文章
- php计算格子xy,经纬度BL和直角坐标XY的正算反算 PHP代码
- day 58 关于bootstrap
- 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 )
- python 获取文件后缀名的方法
- 陆金所 CAT 优化实践
- spring-data-mongodb查询结果返回指定字段
- c++ gzip java.util.zip.gzip_java.util.zip.GZIPInputStream.close()方法示例
- HTTP Session 的工作原理以及几个思维扩展
- Codeforces Round #184 (Div. 2)
- python总结与思考_Python小结 – pip 升级包总结
- 简单的maven自定义webapp目录
- 深度解读智慧农业传感器及应用
- 三角函数公式及工程应用
- Make menuconfig详解(转)
- Grouping BP has not been assigned to any customer accounts groupMessage no. FSBP_ECC004
- 金融学核心期刊有哪些?
- 七代处理器装win7_为什么7代cpu装不了win7
- 【代码实践】使用CLIP做一些多模态的事情
- Kali使用中文输入法
- 2021-2026年,全球MPO光纤连接器市场复合年增长率预计为23.2%
热门文章
- 怎么绕过论坛回复_可怕,GPT3论坛跟帖灌水一周无人发现!专挑热搜,秒秒钟长文...
- H.264笔记(接上节)
- 利用计算机实现音乐节拍的实时自动跟踪,音乐节拍实时跟踪系统的研究及应用...
- RTKLIB_trans_all
- C++ std::pair的用法
- 伊玛尔Emaar集团12个关系网曝光!个个大有来头!
- 常见的深度学习图像处理数据集下载
- 为了疫情防控,发短信可查自己的行踪轨迹,是什么技术在帮忙?
- Java网络编程---TCP通信
- 每天学一点AS3.0(五)---声音的控制(5)