March 14, 2017
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.
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.
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.
Estos son los pasos de alto nivel para conseguir que los enlaces universales funcionen para su aplicación:
 Si usa Branch, puede dejarlo aquÃ. De lo contrario, continúe con la sección dos.
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..
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
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.
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
Â
Puede recuperar esta información en la pestaña General de su proyecto Xcode para el destino de compilación adecuado.
En su identificador de aplicaciones preexistente o en curso, desplácese hasta la última sección y compruebe los servicios Dominios asociados.
Â
Desplácese hacia abajo y haga clic en Guardar.
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.
Desplácese hacia abajo y habilite Dominios asociados para que se expanda como un acordeón.
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
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.
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.
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.
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.
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.
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.
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.
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.
.
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
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:
Debe enviarse con el encabezamiento application/pkcs7-mime
Debe enviarse desde el extremo youdomain.com/apple-app-site-association
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);
});
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!