查找iphone上已安装应用程序的列表
是否可以通过编程查找我的iOS设备上安装的所有应用程序的名称? 是否有任何API可用于相同的应用程序查找iphone上已安装应用程序的列表,iphone,objective-c,ios,Iphone,Objective C,Ios,是否可以通过编程查找我的iOS设备上安装的所有应用程序的名称? 是否有任何API可用于相同的应用程序 感谢您的帮助。否,由于沙盒环境,在iOS上的应用程序无法访问其他应用程序的信息。否,由于沙盒环境,在iOS上的应用程序无法访问其他应用程序的信息。不是从设备访问的。但是,您可以从桌面查看iTunes库。而不是从设备。但是,您可以从桌面查看iTunes库。有很多方法可以做到这一点,而无需越狱设备,也不会让您的应用被拒绝。 1.获取当前正在运行的进程的列表,请参阅答案。您需要将进程名称转换为应用程序
感谢您的帮助。否,由于沙盒环境,在iOS上的应用程序无法访问其他应用程序的信息。否,由于沙盒环境,在iOS上的应用程序无法访问其他应用程序的信息。不是从设备访问的。但是,您可以从桌面查看iTunes库。而不是从设备。但是,您可以从桌面查看iTunes库。有很多方法可以做到这一点,而无需越狱设备,也不会让您的应用被拒绝。
1.获取当前正在运行的进程的列表,请参阅答案。您需要将进程名称转换为应用程序名称。
2.检查是否有任何应用已向UIApplicationLegate canOpenURL注册了唯一的URL方案。有几个网站编目已知的url方案,是最好的一个
如果应用程序当前未运行且未注册自定义url方案,则这些方法不会检测到该应用程序。我感兴趣的是,在应用商店中可以听到一种比这更好的方法 有很多方法可以在没有越狱设备的情况下做到这一点,并且不会让你的应用被拒绝。
1.获取当前正在运行的进程的列表,请参阅答案。您需要将进程名称转换为应用程序名称。
2.检查是否有任何应用已向UIApplicationLegate canOpenURL注册了唯一的URL方案。有几个网站编目已知的url方案,是最好的一个
如果应用程序当前未运行且未注册自定义url方案,则这些方法不会检测到该应用程序。我感兴趣的是,在应用商店中可以听到一种比这更好的方法 是可以获取所有已安装应用程序的列表
-(void) allInstalledApp
{
NSDictionary *cacheDict;
NSDictionary *user;
static NSString *const cacheFileName = @"com.apple.mobile.installation.plist";
NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName];
NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath];
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
user = [cacheDict objectForKey: @"User"];
NSDictionary *systemApp=[cacheDict objectForKey:@"System"];
}
systemApp
字典
包含所有系统相关应用程序的列表
和
用户
字典
包含其他应用程序信息。是的,可以获取所有已安装应用程序的列表
-(void) allInstalledApp
{
NSDictionary *cacheDict;
NSDictionary *user;
static NSString *const cacheFileName = @"com.apple.mobile.installation.plist";
NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName];
NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath];
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
user = [cacheDict objectForKey: @"User"];
NSDictionary *systemApp=[cacheDict objectForKey:@"System"];
}
systemApp
字典
包含所有系统相关应用程序的列表
和
用户
字典
包含其他应用程序信息。您可以通过使用canOpenURL
方法检查应用程序是否已安装,或者通过检查后台进程并将其与您感兴趣的应用程序名称匹配来执行此操作。您可以通过检查通过使用canOpenURL
方法或通过检查后台进程并将其与您感兴趣的应用程序名称相匹配来安装或不安装应用程序。尝试此方法,即使在未越狱的设备上也可以使用:
#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]);//will give you all **Bundle IDS** of user's all installed apps
#包括
类LSApplicationWorkspace_Class=objc_getClass(“LSApplicationWorkspace”);
SEL selector=NSSelectorFromString(@“defaultWorkspace”);
NSObject*工作空间=[LSApplicationWorkspace_类性能选择器:选择器];
SEL selectorALL=NSSelectorFromString(@“所有应用程序”);
NSLog(@“应用程序:%@,[workspace performSelector:selectorALL])//将为您提供用户所有已安装应用的所有**捆绑ID**
试试这个,它即使在非越狱设备上也能工作:
#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]);//will give you all **Bundle IDS** of user's all installed apps
#包括
类LSApplicationWorkspace_Class=objc_getClass(“LSApplicationWorkspace”);
SEL selector=NSSelectorFromString(@“defaultWorkspace”);
NSObject*工作空间=[LSApplicationWorkspace_类性能选择器:选择器];
SEL selectorALL=NSSelectorFromString(@“所有应用程序”);
NSLog(@“应用程序:%@,[workspace performSelector:selectorALL])//将为您提供用户所有已安装应用的所有**捆绑ID**
您可以使用runtime objective c获取所有已安装应用程序的列表。它将为您提供一个LSApplicationProxy
对象数组
以下是一段代码片段,用于打印设备中安装的所有应用程序的名称
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:NSSelectorFromString(@"defaultWorkspace")];
NSMutableArray *array = [workspace performSelector:NSSelectorFromString(@"allApplications")];
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
for (id lsApplicationProxy in array) {
if(nil != [lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]){
[mutableArray addObject:[lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]];
}
}
NSLog(@"********* Applications List ************* : \n %@",mutableArray);
不要忘记包含
您可以使用runtime objective c获取所有已安装应用程序的列表。它将为您提供一个LSApplicationProxy
对象数组
以下是一段代码片段,用于打印设备中安装的所有应用程序的名称
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:NSSelectorFromString(@"defaultWorkspace")];
NSMutableArray *array = [workspace performSelector:NSSelectorFromString(@"allApplications")];
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
for (id lsApplicationProxy in array) {
if(nil != [lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]){
[mutableArray addObject:[lsApplicationProxy performSelector:NSSelectorFromString(@"itemName")]];
}
}
NSLog(@"********* Applications List ************* : \n %@",mutableArray);
别忘了包括
我找到了一个可行的解决方案,不确定它是否会被苹果公司接受!!!想法???这里有一个链接:是的,移动用户可以读取该文件,但是苹果可以(并且如果找到的话)拒绝该应用程序,因为该应用程序只能访问自己的沙盒,其他文件只能通过公共SDK访问。你可以在iphone企业版上使用它,但不一定在appstore上使用。我找到了一个可行的解决方案,不确定它是否会被苹果接受!!!想法???这里有一个链接:是的,移动用户可以读取该文件,但是苹果可以(并且如果找到的话)拒绝该应用程序,因为该应用程序只能访问自己的沙盒,其他文件只能通过公共SDK访问。你可以在iphone企业版上使用它,但不一定在appstore上使用。这是否也提供了开发人员应用程序的列表?这对我也不适用。得到零响应。请建议这只适用于越狱设备,不适用于非越狱设备,对于非越狱设备,它返回nillcheck此链接,Document link此链接是否还提供开发人员应用程序列表?这对我也不适用。得到零响应。请建议这只适用于越狱设备,不适用于非越狱设备,对于非越狱设备,它返回零检查此链接,文档链接您是说通过编程方式执行吗?如果是的话,你能提供更多的细节吗?你说的是程序化的吗?如果是,您能否提供更多详细信息?如何从此解析应用程序名称和捆绑包id?请帮忙me@VikashRajput我的答案是100%测试。您将在最后一行获得所有应用程序(即捆绑ID)