【问题标题】:Get list of all installed application in ios 8获取 ios 8 中所有已安装应用程序的列表
【发布时间】:2015-01-14 04:50:15
【问题描述】:

如何在 iOS 8 中以编程方式获取 iPhone 设备上所有已安装应用程序的列表。

如果有人知道使用私有 API(但设备未越狱)的解决方案,那么它很好。

我知道可以使用 iTunes Search API,但它只提供从 iTunes 安装的应用程序。我需要设备上的所有应用程序,无论是来自 iTunes 还是用户开发或系统应用程序。

【问题讨论】:

    标签: ios ios8 iphone-privateapi


    【解决方案1】:

    试试这个。 它有效,我已经测试过。

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

    【讨论】:

    • 有什么方法可以让它只提供一个应用标识符列表吗?作为一个数组或类似的东西?
    • @RaduVlad “iHasApp”是检测已安装应用程序的“App Store 安全”方式,如果您找不到所有列表,也许您可​​以“管理您自己的数据集(在他的 github 自述文件中) )”。据我所知,iHasApp 使用两种方式获取已安装应用列表:第一种是“canOpenUrl()”,即会找到注册了自定义 URL 的应用;其次是检查正在运行的应用程序的“进程名称”,这意味着不会找到您不经常运行的应用程序。希望这些信息能有所帮助:)
    • 大家好,iOS9 怎么样?有没有办法获取已安装或正在运行的应用程序列表?
    • @DmitryIsakov 伙计,你可以看看 ios-runtime-headers link,如果还有一个 LSApplicationWorkspace 类,那么你可以使用上面的解决方案以同样的方式安装应用程序。如果你想运行应用程序...我知道一个旧方法,但我没有在 iOS9 上尝试过,你可以给我你的电子邮件,我会将主要功能发送给你:D
    • 这是私有 api,使用它会导致应用被苹果拒绝。他们不是从苹果获取已安装应用程序列表的方式。
    【解决方案2】:

    我为 Xcode 7.3 重构了上面的代码。它在 iOS9 上运行良好。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2011-11-05
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多