Программно определять, установлено ли приложение на iPhone - PullRequest
15 голосов
/ 28 сентября 2010

Я нахожусь в такой ситуации, когда мне нужно отобразить кнопку «Open myApp» (если на устройстве установлено myApp) или «iApp» (если на устройстве не установлено myApp) на iphoneприложение.Для этого мне нужно определить, установлено ли на устройстве приложение (с известным пользовательским URL).Как я могу это сделать?Заранее спасибо.

Ответы [ 4 ]

33 голосов
/ 28 сентября 2010

ОБНОВЛЕНО 8 января 2014 года - 3 вещи, которые вы можете сделать

Мне действительно пришлось сделать это снова для клиента. Они хотели, чтобы пользователи могли открыть свое второе приложение из основного приложения, если оно было установлено.

Это мой вывод. Используйте метод canOpenURL, чтобы проверить, установлено ли приложение и / или затем используйте метод openURL, чтобы

  1. Откройте приложение, установленное на устройстве iOS
  2. Отправьте пользователя в магазин приложений, указав ему ссылку на приложение / список приложений для разработчиков
  3. Взять их на сайт вместо

Все примеры кода доступны для каждого сценария

//Find out if the application has been installed on the iOS device
- (BOOL)isMyAppInstalled { 
    return [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"nameOfMyApp:"]]; 
} 

- (IBAction)openOrDownloadApp { 
    //This will return true if the app is installed on the iOS device
    if ([self myAppIsInstalled]){
        //Opens the application
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"nameOfMyApp:"]]; 
    } 
    else { //App is not installed so do one of following:

        //1. Take the user to the apple store so they can download the app
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/nameOfMyApp"]]; 

        //OR

        //2. Take the user to a list of applications from a developer
        //or company exclude all punctuation and space characters. 
        //for example 'Pavan's Apps'
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/PavansApps"]];

        //OR

        //3. Take your users to a website instead, with maybe instructions/information
         [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.pavan.com/WhyTheHellDidTheAppNotOpen_what_now.html"]];

    } 
}

Выберите один вариант, я просто избаловал вас выбором. Выберите тот, который соответствует вашим требованиям. В моем случае мне пришлось использовать все три варианта в разных областях программы.

20 голосов
/ 27 ноября 2010

Если схема URL для вашего приложения «myapp:», то

BOOL myAppInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myapp:"]];

(Требуется iOS 3.0.)

5 голосов
/ 18 марта 2016

Чтобы проверить, установлено приложение на устройстве или нет

1) В info.plist добавьте LSApplicationQueriesSchemes, как показано ниже:

enter image description here

2) и в типах URL

enter image description here

3) Теперь проверить, установлено приложение или нет

- (IBAction)openAppPressed:(UIButton *)sender {
    NSString *urlString = @"XYZAPP://";
    NSURL *url = [NSURL URLWithString:urlString];

    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
    else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itunes link for download app"]];
    }
}
0 голосов
/ 26 марта 2013

Вы можете добавить простой метатег в заголовке любой страницы, которая нуждается в этом сниффинге приложения.

Для получения дополнительной информации, перейдите сюда:

http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html

...