Actualización: Esta entrada se publicó originalmente el 24 de julio de 2015 pero se ha actualizado desde entonces con la información sobre iOS 9.2 más reciente. Ahora que Apple ya no admite los esquemas URI para enlaces profundos, los desarrolladores deben implantar enlaces universales para que los enlaces profundos funcionen correctamente en iOS. Si ya está usando esquemas URI, compruebe en nuestro blog cómo hacer la transición a enlaces universales

En Branch, comemos, respiramos y dormimos con enlaces profundos móviles. Hemos creado un enlace único que puede usar en cualquier lugar: en cualquier plataforma, cualquier dispositivo y cualquier tienda de aplicaciones para dirigir a los usuarios a su aplicación. Es un enlace único, totalmente configurado para desconectar su aplicación de cualquier canal (Facebook, Twitter, Gmail, etc) y que aparezca en todos los portales de búsqueda (Google App Indexing, Bing search, Apple Spotlight).

Simplemente, funciona. De hecho, ya hemos escrito entradas de blog sobre cómo configurar Google App Indexing y cómo crear enlaces profundos en Facebook. Écheles un vistazo.

Slide1

Cuando Apple anunció los enlaces universales en la presentación de la última WWDC, estábamos entusiasmados por incorporarlos a la plataforma de enlaces profundos de Branch. No teníamos ni idea de lo complicado que sería hacerlo funcionar. Tras dedicarle demasiado tiempo y teniendo en cuenta lo pobre que era la documentación, se nos ocurrió compartir una guía de cómo hacerlo para facilitárselo a los demás.

Cómo funcionan los enlaces universales en iOS 9?

Antes de los enlaces universales, el mecanismo primario para abrir una aplicación cuando se instalaba era intentar redirigir al esquema URI de la aplicación (registrada en la PLIST de la aplicación así) en Safari. Esto dirigía la lógica de enrutamiento a Safari, pero no había forma de comprobar si la aplicación estaba instalada o no. Esto significaba que los desarrolladores intentarían llamar al esquema URI el 100% de las veces, en el caso improbable de que la aplicación estuviera instalada, y recurrir después al App Store cuando no se estuviera usando un temporizador.

Los enlaces universales de iOS 9 pretendían solucionar esto. En lugar de abrir primero Safari cuando se hace clic en un enlace, iOS comprobará si se ha registrado un enlace universal para el dominio asociado con el enlace y después comprobará si se ha instalado la aplicación correspondiente. Si la aplicación está instalada actualmente, se abrirá. Si no lo está, se abrirá Safari y se cargará el enlace http(s).

Funcionalmente, le permite tener un único enlace que abra la aplicación o el sitio móvil.

Guía de integración de enlaces universales

Estos son los pasos de alto nivel para conseguir que los enlaces universales funcionen para su aplicación:

1. Configure su aplicación para registrar los dominios aprobados

  1. Registre su aplicación en developers.apple.com
  2. Active Dominios asociados en su identificador de aplicaciones
  3. Active Dominios asociados en su proyecto Xcode
  4. Añada la autorización de dominio adecuado
  5. Asegúrese de que el archivo de autorizaciones se incluye en la compilación

 Si usa Branch, puede dejarlo aquí. De lo contrario, continúe con la sección dos.

2. Configure su sitio web para alojar el archivo apple-app-site-association

  1. Compre un nombre de dominio o elija uno de los que ya tiene
  2. Adquiera la certificación SSL para el nombre de dominio
  3. Cree un archivo JSON apple-app-site-association estructurado
  4. Firme el archivo JSON con la certificación SSL
  5. Configure el servidor de archivos

Si usa el servicio Branch, le evitaremos la complejidad de crear certificados SSL y firmar y alojar el archivo JSON de su servidor; solo tendrá que modificar el código de su aplicación para aprovecharla. Explicaremos esto al final de la entrada.

Nota: También hemos creado una herramienta para comprobar que su archivo fichero apple-app-site-association está configurado correctamente..

Sección 1: Configurar las autorizaciones de su aplicación

Para registrar su proyecto Xcode para los enlaces universales, deberá crear una App ID en el portal de desarrolladores de Apple y habilitar las autorizaciones correspondientes. Esto es muy similar a la configuración necesaria para las compras desde la aplicación.

No puede usar un identificador de aplicaciones comodín para los enlaces universales

Registre su aplicación en developers.apple.com

En primer lugar, vaya a developers.apple.com e inicie sesión. A continuación, haga clic en Certificado, identificadores y perfiles y después haga clic en Identificadores.

Apple Developer Portal for Universal LinksApple Dev Portal for Universal Links

Si todavía no tiene un identificador de aplicaciones registrado, tendrá que crear uno haciendo clic en el signo +. Si tiene uno, pase a la sección siguiente..

Aquí deberá rellenar dos campos: nombre e ID de lote. En el campo del nombre, introduzca lo que prefiera. En ID de lote, introduzca el valor del lote

Explicit App ID for Universal Links

 

Puede recuperar esta información en la pestaña General de su proyecto Xcode para el destino de compilación adecuado.

Setting up Universal Links in xcode

Habilite Dominios asociados en su identificador de aplicaciones endeveloper.apple.com

En su identificador de aplicaciones preexistente o en curso, desplácese hasta la última sección y compruebe los servicios Dominios asociados.

Setting up App ID for Universal Links

 

Desplácese hacia abajo y haga clic en Guardar.

Habilite Dominios asociados en su proyecto Xcode

Ahora, querrá habilitar la autorización de Dominios asociados dentro de su proyecto Xcode. Primero, asegúrese de que el proyecto Xcode tiene al mismo Equipo seleccionado que cuando registró el Identificador de su aplicación. Luego vaya a la pestaña de Competencias del archivo de su proyecto.

Universal Links in xcode

Desplácese hacia abajo y habilite Dominios asociados para que se expanda como un acordeón.

setting up associated domain for Universal Links

Si ve un error como este, compruebe que:

  • ha seleccionado al equipo correcto

  • el Identificador de Lote de su proyecto Xcode coincide con el utilizado para registrar el Identificador de aplicación

Añada la autorización de dominio

En la sección de dominio, añada la etiqueta de dominio correspondiente. Debe ponerle el prefijo applinks:. En este caso, puede ver que hemos añadido applinks:yourdomain.com.

App Links and your domain

Asegúrese de que el archivo de autorizaciones se incluye en la compilación

Por último, por alguna razón Xode 7 no incluía el archivo de autorizaciones en mi compilación. En el buscador de proyectos, asegúrese de que su nuevo archivo de autorizaciones está seleccionado para pertenencia a los objetivos correctos para que se incluya en la compilación.

Configuring xcode for universal links

 

Si usa enlaces Branch, ¡puede parar aquí! De lo contrario, siga leyendo o utilice el botón de abajo para comenzar con la integración.

Si quiere ahorrarse horas de dolor de cabeza, puede evitar todo el alojamiento JSON y el trabajo garantizado de SSL y tan solo usar los enlaces de Branch para que se encargue de su alojamiento.

https://dev.branch.io/recipes/branch_universal_links

Sin embargo, si es un maniático del control y le va la marcha, continúe sin miramientos.

Sección 2: Configuración del archivo apple-app-site-association

Los enlaces universales convierten la URL de su sitio web en un enlace de aplicación, así que tiene que disponer de un servidor web para sacarles provecho. Para que el proceso resulte más sencillo, utilice nuestro validador de enlaces universales para verificar si su archivo apple-app-site-association está configurado del modo adecuado.

Escoja un dominio

Primero, identifique el dominio que le gustaría utilizar para sus enlaces universales. Puede registrar uno nuevo o usar uno existente. Si registra uno nuevo, preferimos utilizar un registro limpio y libre de spam, como gandi.net.

Adquiera un certificado SSL

Tendrá que adquirir los archivos de certificado SSL para el dominio que va a usar para alojar los enlaces universales. Para hacerlo, tendrá que utilizar un servicio de terceros para registrar su dominio para SSL y crear los archivos que necesite. Después de analizarlo, nos hemos decidido por Digicert para que se encargue de branch.io y los subdominios asociados.

Aquí están los pasos para crear su certificado SSL:

1. Visite https://www.digicert.com/easy-csr/openssl.htm y complete el formulario de arriba para generar un comando openSSL. Mantenga esta ventana abierta/

2. Inicie sesión en su servidor remoto

3. Ejecute el comando openSSL para generar una petición de firma de certificado (.csr) y un archivo de certificado (.cert)

4. Pague su certificado SSL en https://www.digicert.com/welcome/ssl-plus.htm

5. Espere a que Digicert lo apruebe y le envíe los archivos finales

6. Al final, mueva yourdomain.com.cert, yourdomain.com.key y digicertinermediate.cert al mismo directorio de su servidor remoto.

Cree su JSON apple-app-site-association

Hay una estructura muy estándar para estos archivos JSON, de forma que básicamente puede copiar esta versión y editarla para que se ajuste a sus necesidades. A continuación, detallaré dónde se pueden obtener los valores correctos.

{
   "applinks": {
       "apps": [ ],
       "details": [
{
            "appID": "T5TQ36Q2SQ.com.branch.sdk.TestBed",
            "paths": [ "*" ]            }
       ]    }

 

Los únicos campos que tiene que cambiar están asociados con: T5TQ36Q2SQ.com.branch.sdk.TestBed. De hecho, se trata de dos valores unidos con un punto. Ambos valores se encuentran en developers.apple.com, en Identificadores -> Sección IDs de aplicación. Haga clic en la ID de aplicación registrada correspondiente, como se muestra a continuación.

Configuring Apple ID for Universal Links

En este ejemplo, conecte el prefijo y la ID con un punto, de forma que tenga este aspecto: T5TQ36Q2SQ.com.branch.sdk.TestBed.

Guarde este archivo JSON como apple-app-site-association-unsigned.
.

Firme el archivo JSON con sus certificados SSL

Nota: Si ha certificado su dominio como HTTPS, puede saltarse este paso y enviar el JSON en texto sin formato.

Suba el archivo apple-app-site-association-unsigned a su servidor en el mismo directorio de la certificación y los archivos clave de los pasos previos. Usando la línea de comandos, cambie el directorio a una carpeta y emita el comando siguiente:

cat apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > apple-app-site-association

Así se generará el archivo apple-app-site-association

Configure su servidor de archivos

De acuerdo! Así que ya tiene su archivo firmado apple-app-site-association. Ahora, solo tiene que configurar su servidor de archivos para alojarlo. Tiene que tener en cuenta algunas consideraciones:

  1. Debe enviarse con el encabezamiento application/pkcs7-mime

  2. Debe enviarse desde el extremo youdomain.com/apple-app-site-association

  3. Debe devolver un código HTTP 200

Nosotros establecemos el de todas las aplicaciones integradas de Branch usando los servidores de enlace Node+Express. Aquí está el código que usamos, en caso de que pueda ser de ayuda:

var aasa = fs.readFileSync(__dirname + '/static/apple-app-site-association');
app.get('/apple-app-site-association', function(req, res, next) {

     res.set('Content-Type', 'application/pkcs7-mime');
     res.status(200).send(aasa);
});

Guía de integración de enlaces universales de Branch e iOS 9

De nuevo, puede evitar todo el alojamiento JSON y el trabajo cert. SSL y simplemente usar enlaces Branch para que se encargue del alojamiento por usted.

Feliz enlazado!