有没有一种方法(某些API)可以获取iPhone设备上安装的应用程序列表。
在寻找类似问题时,我发现了与URL注册
相关的内容,但我认为必须有某些API来处理此事,因为我不想对应用程序做任何操作,我只需要这个列表。
有没有一种方法(某些API)可以获取iPhone设备上安装的应用程序列表。
在寻找类似问题时,我发现了与URL注册
相关的内容,但我认为必须有某些API来处理此事,因为我不想对应用程序做任何操作,我只需要这个列表。
不,应用程序是沙箱化的,并且苹果认可的API中没有任何可以让您这样做的内容。
但是,您可以测试特定应用程序是否已安装:
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"thisapp://foo"]
您可以从此处获取应用程序和URL方案列表。
对于越狱设备,您可以使用下面的代码片段:
-(void)appInstalledList
{
static NSString* const path = @"/private/var/mobile/Library/Caches/com.apple.mobile.installation.plist";
NSDictionary *cacheDict = nil;
BOOL isDir = NO;
if ([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory: &isDir] && !isDir)
{
cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
NSDictionary *system = [cacheDict objectForKey: @"System"]; // First check all system (jailbroken) apps
for (NSString *key in system)
{
NSLog(@"%@",key);
}
NSDictionary *user = [cacheDict objectForKey: @"User"]; // Then all the user (App Store /var/mobile/Applications) apps
for (NSString *key in user)
{
NSLog(@"%@",key);
}
return;
}
NSLog(@"can not find installed app plist");
}
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
SEL selector = NSSelectorFromString(@"defaultWorkspace");
NSObject* workspace = [LSApplicationWorkspace_class performSelector:selector];
SEL selectorALL = NSSelectorFromString(@"allApplications");
NSMutableArray *Allapps = [workspace performSelector:selectorALL];
NSLog(@"apps: %@", Allapps);
然后通过访问每个元素并对其进行拆分,您可以获取应用程序名称,甚至是包标识符。
对于未越狱的设备,我们可以使用第三方框架"ihaspp",该框架免费且通过了苹果的认证。此外,他们提供了良好的文档说明如何集成和使用。希望这对你有所帮助。祝好运!
不确定在上一次回答之前是否有这个功能(iOS 6之前) 此外,这很耗时间,但很简单: 进入“设置”>“通用”>“存储空间”。目前至少在使用下的第一个类别是存储。
它将显示部分应用列表。在这个部分应用列表底部有一个按钮,上面写着“显示所有应用程序”。 点击那个按钮,你需要逐屏浏览,并拍屏幕截图(快速锁定按钮和主页按钮可以拍屏幕截图)。 我正在进行这个过程,我的iPhone上有数百个应用程序。所以这需要花费一些时间。但至少在整个过程结束时我会有所有应用程序的图像。