iOS 获取手机安装的应用列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 获取手机安装的应用列表相关的知识,希望对你有一定的参考价值。

参考技术A - (void)getIphoneAllApplications

    ClassLSApplicationWorkspace_class =objc_getClass("LSApplicationWorkspace");

    NSObject* workspace = [LSApplicationWorkspace_classperformSelector:@selector(defaultWorkspace)];

    NSArray*apps= [workspaceperformSelector:@selector(allApplications)];

    ClassLSApplicationProxy_class =objc_getClass("LSApplicationProxy");

    for(inti =0; i < apps.count; i++)

        NSObject*temp = apps[i];

        if([tempisKindOfClass:LSApplicationProxy_class])

       

            //应用的bundleId

            NSString*appBundleId = [tempperformSelector:NSSelectorFromString(@"applicationIdentifier")];

            //应用的名称

            NSString *appName = [temp performSelector:NSSelectorFromString(@"localizedName")];

            //应用的类型是系统的应用还是第三方的应用

            NSString * type = [temp performSelector:NSSelectorFromString(@"applicationType")];

            //应用的版本

            NSString* shortVersionString = [tempperformSelector:NSSelectorFromString(@"shortVersionString")];

            NSString* resourcesDirectoryURL = [tempperformSelector:NSSelectorFromString(@"containerURL")];

            NSLog(@"类型=%@应用的BundleId=%@ ++++应用的名称=%@版本号=%@\n%@",type,appBundleId,appName,shortVersionString,resourcesDirectoryURL);

       

   



- (BOOL)isInstalled:(NSString *)bundleId

    NSBundle *container = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/MobileContainerManager.framework"];

    if ([container load])

        Class appContainer = NSClassFromString(@"MCMAppContainer");#pragmaclang diagnostic push#pragmaclang diagnostic ignored "-Wundeclared-selector"idcontainer = [appContainer performSelector:@selector(containerWithIdentifier:error:) withObject:bundleId withObject:nil];#pragmaclang diagnostic pop        NSLog(@"%@", [container performSelector:@selector(identifier)]);

        if (container)

            return YES;

        else

            return NO;

       

   

    return NO;

是否可以在ios中获取已安装的应用程序

【中文标题】是否可以在ios中获取已安装的应用程序【英文标题】:Is it possible to get installed apps in ios 【发布时间】:2018-03-06 07:48:28 【问题描述】:

是否可以在 iOS 11 中以编程方式获取正在运行/已安装的应用程序列表。如果有人知道答案,请帮助我。我搜索了许多网站以寻找答案,大多数网站显示这是不可能的。请帮助我

【问题讨论】:

“他们中的大多数都表明这是不可能的” - 你想再听到同样的答案吗? Apple 不会允许...如果您使用任何私人/第三方库,那么请忘记 App Store! 那么第三方启动器应用程序在 iphone 中是如何工作的??????@luk2302 【参考方案1】:

好的,您无法获得所有应用程序,但您可以通过不同的方式完成您的任务。 App Store 上有一个名为 Carat 的应用程序,其中列出了消耗电池的应用程序。这是该应用程序的 GitHub 链接

Carat

也许对你有帮助

【讨论】:

【参考方案2】:

您可以使用 AppList 库来获取所有已安装应用程序的列表。 它使用私有框架,因此它也只能越狱。查看https://github.com/rpetrich/AppList。

您还可以阅读 /Applications 文件夹。所有已安装的应用程序都在其中可用。您需要使用 NSFileManager 列出 /Applications 中的目录:

NSArray *appFolderContents = [[NSFileManager defaultManager] directoryContentsAtPath:@"/Applications"];

【讨论】:

Applications 文件夹仅包含系统应用程序,因此您不会在此处找到有关从 App Store 下载的应用程序的任何信息。 Store App 的二进制文件存储在/var/mobile/Containers/Bundles,相关数据存储在/var/mobile/Containers/Data 如果您无法获取已安装应用程序的列表,您也可以尝试以下代码。这里我使用了私有框架,但它不是越狱设备。#include Class LSApplicationWorkspace_class= objc_getClass("LSApplicationWorkspace"); SEL 选择器=NSSelectorFromString(@"defaultWorkspace"); NSObject* 工作区 = [LSApplicationWorkspace_class performSelector:selector]; SEL selectorALL = NSSelectorFromString(@"allApplications"); NSLog(@"apps: %@", [workspace performSelector:selectorALL]);愿这段代码对你有所帮助:) 但苹果从 iOS 11 开始严格禁止。@Swati Gautam 如果我将 info.plist 中的 5000 个应用程序列入白名单并使用“canopenurl”检查应用程序是否已安装。有什么办法可以说服苹果???

以上是关于iOS 获取手机安装的应用列表的主要内容,如果未能解决你的问题,请参考以下文章

安卓Launcher之获取手机安装的应用列表,安卓launcher

如何判断ios中是不是安装了某个应用

使用Application Loader 3.0 上传ios手机应用安装文件一般步骤

iOS 用户已安装应用列表 || XAMARI 表格

如何创建与每个已安装的 android 应用程序(在用户手机上)关联的活动(android 类)的列表(文件名、位置)?

是否可以在ios中获取已安装的应用程序