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.
+17.02.00.png)
Copiar URI en Spotify
+17.12.03.png)
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".
+17.38.24.png)
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.
+17.44.45.png)
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://
+17.50.51.png)
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.