Подтвердить что ты не робот

Получить список установленных приложений на iPhone

Есть ли способ (некоторый API), чтобы получить список установленных приложений на устройстве iPhone.

При поиске похожих вопросов я нашел кое-что, относящееся к url registration, но я думаю, что для этого должен быть какой-то API, поскольку я не хочу ничего делать с этим приложением, мне просто нужен список.

4b9b3361

Ответ 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.