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.
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
- Registre su aplicación en developers.apple.com
- Active Dominios asociados en su identificador de aplicaciones
- Active Dominios asociados en su proyecto Xcode
- Añada la autorización de dominio adecuado
- 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
- Compre un nombre de dominio o elija uno de los que ya tiene
- Adquiera la certificación SSL para el nombre de dominio
- Cree un archivo JSON apple-app-site-association estructurado
- Firme el archivo JSON con la certificación SSL
- 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.
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.
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.
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.
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
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.
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.
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:
- Visite https://www.digicert.com/easy-csr/openssl.htmy complete el formulario de arriba para generar un comando openSSL. Mantenga esta ventana abierta/
- Inicie sesión en su servidor remoto
- Ejecute el comando openSSL para generar una petición de firma de certificado (.csr) y un archivo de certificado (.cert)
- Pague su certificado SSL enhttps://www.digicert.com/welcome/ssl-plus.htm
- Espere a que Digicert lo apruebe y le envíe los archivos finales
- 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.
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:
- 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);
});
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!