如何检测已安装的iOS应用





今天总结一下


针对非越狱设备的方法两个:

第一个方法,canOpenURL 可以看这里:http://blog.csdn.net/ydj213/article/details/8053393
第二个,sysctl(),获取进程名然后比较 ,可以看这里 http://blog.csdn.net/ydj213/article/details/8186761


一个私有方法获取应用列表

#include <objc/runtime.h>
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
NSLog(@"apps: %@", [workspace performSelector:@selector(allApplications)]);



下面是一个开源的项目,利用的大概也是这两个方法


在github上发现了ihanApps项目;

之前这个项目是加密的,但是现在都完全开放了,可以看到源码;

下载地址:https://github.com/danielamitay/iHasApp


实现方式:

我们使用了多种方法。  如果你需要检测的其他应用程序有一个自定义的URL注册,您可以查看,URL是否存在。  否则,你可以看一下该应用程序在后台运行的进程名称。

一些研究表明,有4个[ 1 , 2 , 3 , 4 ]的方法通过用户的应用程序进行搜索。 最后两个是私有的API /越狱,方便的前两个特别提到由Bump: 检查设备 (以及已安装的应用程序) 的支持,如果一个特定的URL方案 ,并比较该装置目前正在运行的进程称为应用程序的可执行文件名 ​​。 具体而言,这两个功能是canOpenUrl:和sysctl()。

在不进入技术细节的情况下,开发人员是否具有一系列的iOS应用程序的应用程序的ID,可执行文件的名称,并在支持的URL方案(如有),然后,开发人员可以检查与相对精度什么应用程序被安装。注意,提供有关安装的应用程序,这是不同的开发人员必须了解更多的信息比。 的准确性是信息的数据库的规模和质量的好坏。

不过有个缺点就是,手机上不常用的程序检测不出来,所以还是不太准确的。


使用方法:

#import "iHasApp.h"

iHasApp *detectionObject = [iHasApp new];
[detectionObject detectAppDictionariesWithIncremental:^(NSArray *appDictionaries) {
    NSLog(@"Incremental appDictionaries.count: %i", appDictionaries.count);
} withSuccess:^(NSArray *appDictionaries) {
    NSLog(@"Successful appDictionaries.count: %i", appDictionaries.count);
} withFailure:^(NSError *error) {
    NSLog(@"Failure: %@", error.localizedDescription);
}];




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值