2010-09-27 13 views
15

Estoy en esta situación donde tengo que mostrar un botón que dice "Abrir myApp" (si myApp está instalado en el dispositivo) o dice "Descargar myApp" (si myApp es no instalado en el dispositivo) en una aplicación para iphone. Para hacer esto, necesito detectar si una aplicación (con una URL personalizada conocida) ha sido instalada en el dispositivo. ¿Cómo puedo hacer esto? Gracias por adelantado.Detectando programáticamente si hay una aplicación instalada en el iPhone

Respuesta

32

8 de enero de 2014 ACTUALIZADA - 3 cosas que puede hacer

que en realidad tenía que hacer esto para un cliente nuevo. Querían que los usuarios pudieran abrir su segunda aplicación desde la aplicación principal si se hubiera instalado.

Este es mi hallazgo. Utilice el método canOpenURL para comprobar si una aplicación está instalada o/y luego usar el método openURL a

  1. Abra la aplicación instalada en el dispositivo iOS
  2. llevar al usuario a la tienda de aplicaciones que apunta directamente a la aplicación/tu lista de desarrollador de aplicaciones
  3. llevarlos a un sitio web en lugar

Todos los ejemplos de código disponibles para cada escenario

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

    } 
} 

Elija una opción, solo le he echado a perder con la opción. Elija uno que se adapte a sus necesidades. En mi caso, tuve que usar las tres opciones en diferentes áreas del programa.

+0

El plist no se encuentra en iOS 4. ¿Sabe usted dónde se ha sido movido ¿a? – samwize

+0

Hola, lo siento por la respuesta tardía. No hay problema. El archivo se encuentra en la carpeta '/ private/var/mobile/Library/Caches /'. Espero que ayude. Cheers – Pavan

+0

Esa es la ruta en la caja de conmutadores 2. Pero el archivo no se encuentra (en iOS 4.3). – samwize

19

Si el esquema de URL para su aplicación es "miaplicacion:" y, a continuación

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

(Requiere IOS 3.0.)

+0

¡Mucho más simple! ¡Gracias! – bkbeachlabs

+0

@bkbeachlabs mucho más simple en comparación con qué? – Pavan

+0

Debo haberme referido a una edición anterior en otra respuesta. Hace mucho tiempo, ahora, ¡así que no recuerdo! – bkbeachlabs

0

Es posible añadir una etiqueta meta simple en la cabeza de cualquier página que necesita esta aplicación-sniffing.

Para obtener más información, vaya a:

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

+1

Quizás, resumir el contenido de su URL en su publicación ayude al usuario más que simplemente publicar un enlace. Aparte de eso, buen trabajo en su primera publicación :-). –

5

Para comprobar aplicación es instalar en el dispositivo o no

1) En info.plist añadir LSApplicationQueriesSchemes de la siguiente ejemplo

enter image description here

2) y en los tipos de URL

enter image description here

3) Ahora para comprobar la aplicación es instalar 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"]]; 
    } 
} 
Cuestiones relacionadas