很多人使用Launcher应用。
我很好奇Laucher如何能够获得我iPhone的已安装应用程序列表?
我找到了一些做类似事情的方法,但所有这些都不完美。
1.use canOpenUrl :,这个api需要很多url-scheme的应用程序。
2.搜索plist文件/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist,这在非越狱iPhone中不可用。这个plist文件在ios9中也不存在了。
3.search / Applications,在非越狱iPhone中不可用。
问题是,Launcher如何能够搜索我的iPhone并获得已安装的应用程序列表?
答案 0 :(得分:5)
所以我将Launcher下载到iTunes中并查看了它的info.plist。
事实证明,它完成了您最初建议的内容,多次查询canOpenURL:
以确定您已安装的内容。
以下是版本1.3.6中LSApplicationQuerySchemes
的内容:
https://gist.github.com/liamnichols/53069b01da032498bd04
所有4561个
答案 1 :(得分:0)
最近我发现使用预定义的Apple类 LSApplicationWorkspace_class 和 LSApplicationProxy 的解决方案我们可以实现这一目标。
类LSApplicationWorkspace_class = objc_getClass(“LSApplicationWorkspace”);
NSObject * workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
for (LSApplicationProxy *apps in [workspace performSelector:@selector(allApplications)])
{
NSString *localizedName = apps.localizedName;
if([apps.applicationType isEqualToString:@"User"])
{
NSLog(@"\nlocalizedName: %@",localizedName);
NSLog(@"minimumSystemVersion: %@",apps.minimumSystemVersion);
NSLog(@"fileSharingEnabled: %d",apps.fileSharingEnabled);
NSLog(@"sdkVersion: %@",apps.sdkVersion);
}
}