Ingens Networks  Ingens Developments  Ingens Biometrics  Ingens Hostings

Lanzar aplicaciones iOS a través de URL personalizada - URL Schemes

08 junio 2012 16:01 by rafael.aguilar

Este tipo de feature la utilizamos a diario la gran mayoría. Gracias a ellas podemos compartir recursos multiplataforma (iOS, Android, HTML5, Desktop...) y lanzar aplicaciones pudiendo delegar en ellas determinadas acciones. Un ejemplo podría ser cuando copiamos el enlace de una canción en Spotify y se lo enviamos a un amigo por medio de un correo o un cliente de mensajería y cuando haga click se le abrirá dicha canción para que pueda escucharla.

 


Copiar URI en Spotify

 

 

Contenido de la URI anteriormente copiada

 

Es muy fácil crear nuestras propias “URI Scheme” en iOS y vamos a ver un ejemplo de cómo implementarlo en nuestro propio proyecto.

 

REGISTRAR NUESTRA PROPIA URL SCHEME PERSONALIZADA


Primero de todo, tendremos que añadir nuestra URL Scheme personalizada al proyecto y eso lo haremos en el fichero Info.plist:

 

1 - Añadimos una nueva fila e indicamos la key "URL Types".

 

 

2 - Vemos que tenemos el elemento 0 que contiene la key URL Identifier. Aquí podremos introducir el valor que queramos pero yo utilizaré el mismo que el Bundle identifier.



 

3 - Añadimos una nueva fila pero esta vez le pondremos de key URL Schemes con el valor (esquema) que queramos que empiece nuestra URL Scheme. Ejemplo: miapp://

 

 

Ya solo tenemos que guardar y arrancarlo en nuestro dispositivo. Veremos que con la app instalada (no hace falta ni que esté arrancada), cuando escribimos en Safari "miapp://loquesea" o pulsamos un enlace en un correo que tenga en el href eso mismo, veremos que se abrirá nuestra aplicación.

 

Pero ¿qué pasaría si le pasamos unos parámetros para que cuando se abra el enlace haga algo determinado? (como el ejemplo anterior de Spotify). Ahora mismo no haría nada pero si incluimos el método application:openURL:sourceApplication:annotation: en el AppDelegate.m si que haría algo:

 

#pragma mark -
#pragma mark URL Schemes

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  if (!url) {
    return NO;
  }
  
  // Nuestra URL Scheme de ejemplo es miapp://ejemplo/loquesea
  
  NSString *hostPath = [url host]; // Valor = ejemplo
  NSArray *arrayUrlPath = [url pathComponents];
  NSString *urlPath = [arrayUrlPath objectAtIndex:1]; // Valor = loquesea
  
  if ([hostPath isEqualToString:@"ejemplo"]) {
    // Hacer lo que sea
  }
  
  return YES;
}

 

Una de las principales utilidades de esta funcionalidad es la posibilidad de integración de nuestra app con la de terceros. En este aspecto nos es de mucha ayuda la existencia de la web que os muestro a continuación: handleOpenURL.

 

Esta web te muestra un listado de los URL Schemes conocidos hasta la fecha, entre las que podrían encontrarse las desarrolladas por nosotros ahora o en un futuro. Para ello, tan solo tendremos que ponernos en contacto con los administradores del sitio.

Tags: , , , ,

iOS

Comentarios (5) -

09/06/2012 16:20:28 #

Richie

Estupendo articulo. Me viene de perlas porque puede que utilice esta característica en el programa que estoy desarrollando ahora. Laughing

Richie

07/10/2012 0:46:47 #

ValentiGoClimb

Hola,
El articulo esta genial, felicidades.

Una pregunta:
Me gustaría implementar esto para poder abrir mi app desde un enlace. En el caso que el usuario no tenga la app, le sale ERROR de página. Para solventar esto, se me ocurre, en lugar de poner la URL Schemes como enlace, poner una dirección que apunte a una web que compruebe si puede abrir l'Scheme, en caso contrario, le envie a AppStore.
Se te ocurre alguna otra solución?

Saludos.

ValentiGoClimb

07/10/2012 15:28:26 #

rafael.aguilar

Hola, Valentí.

Ahora mismo la solución que se me ocurre sería la que tu propones:

- Intentar abrir la URL Scheme y si después de un tiempo el enlace no se ha abierto, forzamos a que redirija nuestro enlace al perfil de nuestra app en la AppStore.

He encontrado algo similar aquí suhinini.me/.../

rafael.aguilar

07/10/2012 16:51:08 #

ValentiGoClimb

Hola Rafael,
Pues pronto voy a tener que solventar-lo, y supongo que así lo haré. Pensava comentarlo mañana al NSExperience Barcelona a ver que opinaban los otros NSDevs, no te apuntas?

Saludos

ValentiGoClimb

07/10/2012 17:05:13 #

rafael.aguilar

No me enteré hasta ayer que me lo comentó Ricardo, Leandro y JJ. Si no me paso al evento, me pasaré después para veros.

Un Saludo

rafael.aguilar

Agregar comentario

biuquote
  • Comentario
  • Vista previa
Loading

Archivo

Pregunta

¿Cuanto dinero gastas mensualmente en la store de tu smartphone (googleplay, appstore, marketplace,...)?





Show Results
 Ingens Networks SL en LinkedIn Ingens Networks SL en Twitter