iOS Custom Url Scheme XCode

En primer lugar, sé cómo crear esquemas personalizados en iOS y sé cómo abrir mi aplicación desde un website utilizando un método setTimeout de javascript.

Tengo una aplicación que utiliza un esquema de URL personalizado y funciona excelentemente. Lo que hace es enviar un post http://testsite.com/QueryStrings a otros usuarios en la list de contactos (pnetworkingefinida) y onclick en esos enlaces web en el sms, suceden estas cosas:

  1. Abre el enlace en Safari
  2. Abre la aplicación si está instalada con url personalizada usando setTimeout
  3. Si no está instalado, muévase a la página del website normal

Lo que quería en realidad era abrir mi aplicación directamente desde SMS si se instala, pero para eso tengo que enviar mi esquema personalizado de URL en los SMS, esa no es una opción porque si la aplicación no está instalada, este SMS no funcionará, entonces un enlace web es el solo opción por ahora.

Hoy, instalé SoundCloud y noté por casualidad que esto es que cuando http: // m. soundcloud .com / … url se envía en un SMS y onclick en el enlace se abre la aplicación (si está instalada) directamente no en Safari (extraño para mí).

Así que me preguntaba cómo es que su aplicación se abre desde un enlace web sin abrir el Safari. Busqué en Google, pero no pude encontrar una solución a mi problema. Adjunto una captura de pantalla también desde mi teléfono mobile, donde presionar y mantener presionado el enlace en la aplicación de posts dar Open también en la opción "SoundCloud". Entonces, cómo SoundCloud registró un enlace http para ser manejado automáticamente en la aplicación. Por favor ayuda a chicos

Captura de pantalla de SoundCloud Open

La respuesta a este problema es usar dominios asociados (pero después de 9.2 tenemos que usar Universal Links para lograr esto).

Antes de Universal Links, el mecanismo principal para abrir una aplicación cuando se instaló fue intentar networkingirigir al esquema de URI de una aplicación (registrado en el PLIST de la aplicación como tal) en Safari. Esto puso la lógica de routing en Safari, pero no había forma de comprobar si la aplicación estaba instalada o no.

iOS 9 Universal Links fue pensado para solucionar esto. En lugar de abrir Safari primero cuando se hace clic en un enlace, iOS verificará si se ha registrado un Enlace universal para el dominio asociado con el enlace, luego verifica si la aplicación correspondiente está instalada. Si la aplicación está actualmente instalada, se abrirá. Si no es así, Safari se abrirá y se cargará el enlace http (s).

Funcionalmente, le permite tener un solo enlace que abrirá su aplicación o abrirá su sitio mobile.

Configura tu aplicación para registrar dominios aprobados.

  1. Registró su aplicación en developers.apple.com
  2. Habilita 'Dominios asociados' en el identificador de tu aplicación
  3. Habilite 'Dominio asociado' en su proyecto Xcode
  4. Agregue el derecho de dominio apropiado
  5. Asegúrate de que el file de derechos esté incluido en la compilation

Configura tu website para alojar el file 'apple-app-site-association'

  1. Compre un nombre de dominio o elija de su
  2. Adquirir certificación SSL para el nombre de dominio
  3. Cree un file estructurado 'apple-app-site-association' JSON
  4. Firme el file JSON con la certificación SSL.
  5. Configurar el server de files

Apple lanzó Universal Links en iOS 9.0, que mueve el routing de la aplicación al sistema operativo para que los desarrolladores no tengan que preocuparse por hacer el routing en Javascript.

Recibiendo URL de enlace universal en la aplicación

Los esquemas URI recibieron la URL de enlace profundo a través de openUrl en el Delegado de la aplicación. Universal Links recibe sus datos a través de una ruta de código diferente: continueUserActivity . Este nuevo método de delegado se utiliza para varias transiciones de aplicaciones, que van desde Spotlight a Universal Links, y es probable que veamos un par de casos de uso más introducidos en futuras versiones del sistema operativo.

A continuación se muestra un fragment de código que puede usar para recuperar la URL de Enlace Universal completa que abrió la aplicación.

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restrationHandler:(void (^)(NSArray *))restrationHandler { if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { NSString *myUrl = [userActivity.webpageURL absoluteString]; // parse URL string or access query params } return YES; } 

Fuente: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9