Получить список установленных приложений на iPhone
Есть ли способ (некоторый API), чтобы получить список установленных приложений на устройстве iPhone.
При поиске похожих вопросов я нашел кое-что, относящееся к url registration
, но я думаю, что для этого должен быть какой-то API, поскольку я не хочу ничего делать с этим приложением, мне просто нужен список.
Ответы
Ответ 1
Нет, приложения изолированы, а API-интерфейсы, принятые Apple, не содержат ничего, что позволило бы вам это сделать.
Однако вы можете проверить, установлено ли определенное приложение:
- Если известно, что приложение обрабатывает URL-адреса определенного типа
- с помощью
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"thisapp://foo"]
Вы можете получить список приложений и схем URL из здесь.
Ответ 2
Для джейлбрейковых устройств вы можете использовать следующий код:
-(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");
}
Ответ 3
для недвусмысленного устройства, мы можем использовать стороннюю структуру, которая называется " ihaspp", а также ее свободный и яблочный прием. Также они дали хорошую документацию, как интегрировать и как использовать. Может быть, это было бы полезно для вас. Удачи!
https://github.com/danielamitay/iHasApp
Ответ 4
Ну, не уверен, что это было доступно, когда был дан последний ответ (до iOS 6)
Кроме того, этот процесс является интенсивным, но простым:
Войдите в настройки > Gen. > use. Первая категория при использовании, по крайней мере, сейчас - Storage.
Он покажет частичный список приложений. В нижней части этого частичного списка есть кнопка, которая говорит "показать все приложения".
Коснитесь этого, и вам придется проходить экран за экраном и делать скриншоты (кнопка быстрой блокировки и кнопка "домой" снимают снимок экрана).
Я делаю это сейчас, и у меня есть сотни приложений на моем iPhone. Так что это займет у меня время. Но по крайней мере в конце процесса у меня будут изображения всех моих приложений.
Ответ 5
Вы можете сделать это, используя следующее:
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);
И затем, обратившись к каждому элементу и разделив его, вы можете получить свое имя приложения и даже идентификатор Bundle.