Pergunta

Estou nessa situação em que tenho que exibir um botão que diz "Abra o MyApp" (se o MyApp estiver instalado no dispositivo) ou diz "Download MyApp" (se o MyApp não estiver instalado no dispositivo) em um aplicativo para iPhone. Para fazer isso, preciso detectar se um aplicativo (com um URL personalizado conhecido) foi instalado no dispositivo. Como posso fazer isso? Desde já, obrigado.

Foi útil?

Solução

Atualizado em 8 de janeiro de 2014 - 3 coisas que você pode fazer

Na verdade, eu tive que fazer isso por um cliente novamente. Eles queriam que os usuários pudessem abrir seu segundo aplicativo no aplicativo principal, se ele tivesse sido instalado.

Esta é a minha descoberta. Use o canOpenURL método para verificar se um aplicativo está instalado ou/e depois use o openURL método para

  1. Abra o aplicativo instalado no dispositivo iOS
  2. Leve o usuário para a App Store, apontando diretamente para o aplicativo/sua lista de aplicativos de desenvolvedor
  3. Leve -os a um site em vez disso

Todas as amostras de código disponíveis para cada cenário

//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"]];

    } 
}

Escolha uma opção, acabei de estragar você com a escolha. Escolha um que atenda às suas necessidades. No meu caso, tive que usar as três opções em diferentes áreas do programa.

Outras dicas

Se o esquema de URL para o seu aplicativo for "myApp:", então

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

(Requer iOS 3.0.)

Para verificar o aplicativo está instalado no dispositivo ou não

1) In info.plist add lsapplicationQueriessChemes como o exemplo abaixo

enter image description here

2) e nos tipos de URL

enter image description here

3) Agora para verificar o aplicativo está instalado ou não

- (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"]];
    }
}

Você pode adicionar uma meta tag simples na cabeça de qualquer página que precise de sniffing de aplicativo.

Para mais informações, clique aqui:

http://developer.apple.com/library/ios/#documentation/appleapplications/reference/safariwebcontent/promotingapswithappbanners/promotingappswithappbanners.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top