Launcher怎么能得到我iPhone的已安装应用程序列表?

时间:2016-01-07 10:22:28

标签: ios private launcher url-scheme

很多人使用Launcher应用。 enter image description here

我很好奇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并获得已安装的应用程序列表?

2 个答案:

答案 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);
    }
}