【问题标题】:How could Launcher get the list of installed apps of my iPhone?Launcher 如何获取我 iPhone 上已安装应用程序的列表?
【发布时间】:2016-01-07 10:22:28
【问题描述】:

许多人使用Launcher 应用程序。

我很好奇 Laucher 是如何获取我 iPhone 上已安装应用程序的列表的?


我找到了一些方法来做类似的事情,但都不是完美的。

1.使用canOpenUrl:,这个api需要很多应用的url-schemes。

2.搜索plist文件/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist,非越狱iPhone不可用。这个 plist 文件在 ios9 中也不再存在了。

3.search /Applications,在非越狱iPhone中不可用。


问题是,Launcher 如何能够搜索我的 iPhone 并获取已安装应用程序的列表?

【问题讨论】:

    标签: ios private launcher url-scheme


    【解决方案1】:

    所以我将 Launcher 下载到 iTunes 中并查看了它的 info.plist。 事实证明,它按照您最初的建议进行了多次查询 canOpenURL: 以计算出您安装的内容。

    这是 1.3.6 版本中LSApplicationQuerySchemes 的内容:

    https://gist.github.com/liamnichols/53069b01da032498bd04

    全部 4561 个

    【讨论】:

    • developer.apple.com/videos/play/wwdc2015-703 说 LSApplicationQuerySchemes 最大数量为 50,那么 4561 方案如何工作?
    • 我相信 50 个限制是如果您仍然针对 iOS 8 SDK 进行编译但在 iOS 9 上运行您的应用程序(并且不在 info.plist 中放置任何方案)。不过我没有看过视频,所以我不知道他们说了什么。这就是启动器应用程序所做的,所以如果它工作,它一定没问题¯_(ツ)_/¯
    • @liamnichols 所以我想 LSApplicationQuerySchemes 没有限制,正如你所说。然后出现另一个问题,我认为 LSApplicationQuerySchemes 的意思是限制应用程序使用 openUrl: api 打开他们想要的任何其他应用程序。如果我可以添加尽可能多的 LSApplicationQuerySchemes,它的意义何在?
    • @pinchwang 它强制您预先声明您想了解的应用程序。这可以阻止广告提供商(使用 webview 等)在未经开发人员事先许可的情况下“劫持”设备并打开应用程序/应用程序商店。
    【解决方案2】:

    最近我发现了使用预定义的 Apple 类 LSApplicationWorkspace_classLSApplicationProxy 的解决方案,我们可以做到这一点。

    类 LSApplicationWorkspace_class= objc_getClass("LSApplicationWorkspace");

    NSObject* 工作空间 = [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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多