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
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
- Aprire l'applicazione installata sul dispositivo iOS
- portare l'utente ad App Store li punta direttamente al app/tua lista di sviluppatori applicazioni
- 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.
Se lo schema URL per la tua app è "myapp:", quindi
BOOL myAppInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myapp:"]];
(Richiede iOS 3.0.)
Molto più semplice! Grazie! – bkbeachlabs
@bkbeachlabs molto più semplice rispetto a cosa? – Pavan
Devo essermi riferito a una modifica precedente su un'altra risposta. Molto tempo fa ora, quindi non ricordo! – bkbeachlabs
è possibile aggiungere un semplice meta tag nella testa di ogni pagina che ha bisogno questa app-sniffing.
Per maggiori informazioni, vai qui:
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 :-). –
Per controllare app è installare nel dispositivo o no
1) In info.plist aggiungere LSApplicationQueriesSchemes come di seguito esempio
2), in tipi di URL
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"]];
}
}
La plist non è stato trovato in iOS 4. Sapete dove ora è stato spostato a? – samwize
Ciao, scusa per la risposta tardiva. Nessun problema. Il file si trova nella cartella '/ private/var/mobile/Library/Caches /'. Spero possa aiutare. Cheers – Pavan
Questo è il percorso in switch-case 2. Ma il file non è stato trovato (su iOS 4.3). – samwize