2010-09-27 11 views
15

Sono in questa situazione in cui devo visualizzare un pulsante che dice "Apri myApp" (se myApp è installato sul dispositivo) o dice "Download myApp" (se myApp è non installato sul dispositivo) in un'app per iPhone. Per fare questo, ho bisogno di rilevare se un'app (con un URL personalizzato noto) è stata installata sul dispositivo. Come posso fare questo? Grazie in anticipo.Rilevare a livello di programmazione se un'app è installata su iPhone

risposta

32

AGGIORNATO 8 gennaio 2014 - 3 cose che puoi fare

Ho dovuto fare questo per un cliente nuovo. Volevano che gli utenti potessero aprire la loro seconda app dall'app principale se fosse stata installata.

Questo è il mio risultato. Utilizzare il metodo canOpenURL per verificare se un'applicazione è installata o/e quindi utilizzare il metodo openURL a

  1. Aprire l'applicazione installata sul dispositivo iOS
  2. portare l'utente ad App Store li punta direttamente al app/tua lista di sviluppatori applicazioni
  3. li porti a un sito web, invece

Tutti gli esempi di codice disponibili per ogni scenario

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

    } 
} 

Scegliere un'opzione, ho appena l'imbarazzo della scelta. Scegli uno che si adatta alle tue esigenze. Nel mio caso ho dovuto usare tutte e tre le opzioni in diverse aree del programma.

+0

La plist non è stato trovato in iOS 4. Sapete dove ora è stato spostato a? – samwize

+0

Ciao, scusa per la risposta tardiva. Nessun problema. Il file si trova nella cartella '/ private/var/mobile/Library/Caches /'. Spero possa aiutare. Cheers – Pavan

+0

Questo è il percorso in switch-case 2. Ma il file non è stato trovato (su iOS 4.3). – samwize

19

Se lo schema URL per la tua app è "myapp:", quindi

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

(Richiede iOS 3.0.)

+0

Molto più semplice! Grazie! – bkbeachlabs

+0

@bkbeachlabs molto più semplice rispetto a cosa? – Pavan

+0

Devo essermi riferito a una modifica precedente su un'altra risposta. Molto tempo fa ora, quindi non ricordo! – bkbeachlabs

0

è possibile aggiungere un semplice meta tag nella testa di ogni pagina che ha bisogno questa app-sniffing.

Per maggiori informazioni, vai qui:

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

+1

Forse, riassumere il contenuto del tuo URL nel tuo post aiuterebbe l'utente a pubblicare più semplicemente un link. Altra cosa, buon lavoro sul tuo primo post :-). –

5

Per controllare app è installare nel dispositivo o no

1) In info.plist aggiungere LSApplicationQueriesSchemes come di seguito esempio

enter image description here

2), in tipi di URL

enter image description here

3) Ora per verificare app è installare o no

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