runtime提供了一个方法直接获取已经安装的app的bundle id
直接上代码:
先包含头文件:
#import <objc/runtime.h>
在相应位置添加如下代码:
Class LSApplicationWorkspace_class = NSClassFromString(@"LSApplicationWorkspace"); NSObject *workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)]; NSArray *arrAPP = [workspace performSelector:@selector(allApplications)]; NSLog(@"arrAPP: %@",arrAPP);
下面是我手机上的已安装的部分app的bundle id:
注意:
- 苹果公开的api不允许获取已安装app的列表,除非是一些私有的api。但使用私有api,在发布时不能通过App Store审核。
- 该方法适用于越狱后的设备。
- 该方法只能获取app的bundle id,不能获取app中文名和icon。