2012-03-14 14 views
12

Domanda semplice, sto sviluppando un'applicazione che registrerà il proprio schema URL. Ho intenzione di avviare l'applicazione utilizzando un QRCode tramite il lettore QRCode preferito di una persona.Schema URL per app che non è installato

La mia domanda: se la mia applicazione non è ancora installata sul proprio iPhone/iPad, cosa succederà? Verranno indirizzati all'App Store per scaricare la mia app? O fallirà?

Al momento non sono al mio Mac, altrimenti avrei creato un'app di test per lanciare un URL per un'app che so non è installata. Se torno al mio Mac prima che qualcuno risponda, aggiornerò la domanda con i miei risultati.

risposta

11

Se si collega direttamente allo schema dell'app, fallirà. Tuttavia, se si collega a una pagina su un sito Web con il codice disponibile on this StackOverFlow question, tenterà di aprire l'app, quindi l'app store se non riesce.

6

È possibile leggere semplicemente il valore restituito del metodo -(BOOL)openURL:(NSURL*)url. Se è NO, significa che l'applicazione di destinazione non è installata. Il seguente codice fornisce un esempio utilizzando lo schema URL NAVIGON:

NSString *stringURL = @"navigon://coordinate/NaviCard/19.084443/47.573305"; 
NSURL *url = [NSURL URLWithString:stringURL]; 
if([[UIApplication sharedApplication] openURL:url]) { 
    NSLog(@"Well done!"); 
} else { 
    stringURL = @"https://itunes.apple.com/it/app/navigon-europe/id320279293?mt=8"; 
    url = [NSURL URLWithString:stringURL]; 
    [[UIApplication sharedApplication] openURL:url]; 
} 

Aggiornamento Swift 3

var stringURL = "navigon://coordinate/NaviCard/19.084443/47.573305" 
var url = URL.init(string: stringURL) 
if !UIApplication.shared.canOpenURL(url!) { 
    stringURL = "https://itunes.apple.com/it/app/navigon-europe/id320279293?mt=8" 
    url = URL.init(string: stringURL) 
} 
if #available(iOS 10.0, *) { 
    UIApplication.shared.open(url!, options: [:], completionHandler: nil) 
} else { 
    UIApplication.shared.openURL(url!) 
} 
Problemi correlati