Esta es la tercera parte de una guía técnica en cuatro partes sobre el enlazado profundo en Android. En la publicación anterior hablamos de los esquemas URI y los intents de Chrome , y en la siguiente trataremos la URL de referencia de Google Play..
Enlazado profundo con enlaces en la aplicación en Android
Con el reciente lanzamiento de Android Marshmallow (6.0), Android ha introducido un nuevo mecanismo para abrir la aplicación directamente, llamado «enlaces en la aplicación». Este mecanismo pretende replicar la funcionalidad de los enlaces universales de iOS 9, en donde al hacer clic en un enlace HTTP/HTTPS normal, si la aplicación correspondiente está instalada, se abrirá inmediatamente. Esta es la lógica de redireccionamiento de los enlaces en la aplicación:
- Abrir la aplicación con intent si está instalada
- Volver al enlace web si no está instalada
Los enlaces en la aplicación de Android son simplemente una forma de convertir los enlaces web existentes también en enlaces de aplicaciones. Un ejemplo sería: https://imbd.com/title/12345. Si IMDB configura correctamente su sitio web para los enlaces en la aplicación, si IMDB está instalado el teléfono, se abrirá inmediatamente al hacer clic en el enlace. Si la aplicación no está instalada, se abrirá la URL web en un navegador.
En unos meses, cuando la versión 6.0 se haya extendido, podría evitar los mecanismos estándar URI e intent de Chrome. Hasta entonces, necesitará utilizarlo junto con otros mecanismos para asegurarse de que abarca los casos de punto crítico. De nuevo, Android está muy fragmentado.
Debe tener un sitio web funcional
- Debe tener un sitio web funcional
- El usuario debe estar en Android 6.0+
Configuración de los enlaces en la aplicación para Android
Hay dos pasos para configurar su servicio para utilizar el enlazado de aplicaciones:
- Configure el manifiesto para recibir intents
- Registre su sitio web como un enlace en la aplicación
Paso uno Añada los filtros intent a su manifiesto
Esto es bastante sencillo. Necesitará indicar a Android qué sitio(s) web debe abrir su aplicación en lugar del sitio web.
<activity …> | |
<intent-filter android:autoVerify=“true“> | |
<action android:name=“android.intent.action.VIEW“ /> | |
<category android:name=“android.intent.category.DEFAULT“ /> | |
<category android:name=“android.intent.category.BROWSABLE“ /> | |
<data android:scheme=“http“ android:host=“yoursite.com“ /> | |
<data android:scheme=“https“ android:host=“yoursite.com“ /> | |
</intent-filter> | |
</activity> |
Paso dos Configure su sitio web para los enlaces en la aplicación
Debe crear un archivo llamado assetlinks.json en el siguiente formato:
[{ | |
“relation”: [“delegate_permission/common.handle_all_urls“], | |
“target”: { | |
“namespace”: “android_app“, | |
“package_name”: “io.branch.branchster“, | |
“sha256_cert_fingerprints”: [“14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5“] | |
} | |
}] |
Nota: hemos hecho que los enlaces en la aplicación funcionen sin cambiar el valor predeterminado de android_app.
Las huellas digitales SHA256 del certificado de firma de su aplicación. Necesitará usar el keytool para generar las huellas digitales. Desde la línea de comando, ejecute el comando cd al directorio de inicio de java y a continuación a la carpeta bin. Después ejecute el siguiente comando:
$ keytool -list -v -keystore my-release-key.keystore
(Si necesita ayuda para localizar el keytool, vea este ejemplo en Mac o Windows.)
Por último, el archivo assetlinks.json debe estar alojado en /.well-known/assetlinks.json. Configuramos uno para todas las aplicaciones integradas Branch utilizando nuestros servidores de enlace Node+Express. Este es el código que usamos:
var assetlinks = fs.readFileSync(__dirname + ‘/static/assetlinks.json’); | |
app.get(‘/.well-known/assetlinks.json’, function(req, res, next) { | |
res.set(‘Content-Type’, ‘application/json’); | |
res.status(200).send(assetlinks); | |
}); |
Usar el enlace profundo en la aplicación
Para usar los enlaces profundos en la aplicación, solo tiene que recoger la cadena de datos de intent en la actividad que se abra al hacer clic. Puede hacerlo así:
Uri data = this.getIntent().getData(); | |
if (data != null && data.isHierarchical()) { | |
String uri = this.getIntent().getDataString(); | |
Log.i(“MyApp”, “Deep link clicked “ + uri); | |
} |
Desafortunadamente a partir de aquí tendrá que analizar la cadena para leer la cadena completa del enlace en la aplicación que activó la apertura de la aplicación.
Uso práctico para enlaces profundos
En la práctica, este sería el mecanismo más fácil de usar si todos estuvieran en 6.0+ y tuviera un sitio web creado. Puesto que esto no ocurrirá hasta dentro de unos años, necesitará tratar los casos de punto crítico.
De momento, le recomentamos habilitar su sitio web con enlaces en la aplicación, pero aprovechando los mecanismos de enlaces profundos existentes en torno al esquema de URI e Iintents de Chrome hasta que estos sean más universales. Por ejemplo, si un usuario abre su sitio web y tiene la aplicación instalada, querrá que se active un intent de Chrome o un esquema URI si hacen clic en un botón de su sitio web para iniciar la aplicación. Parece que los enlaces en la aplicación no funcionan en ese supuesto.
Si no tiene un sitio web, pero quiere aprovechar los enlaces en la aplicación, le recomendamos incorporar Branch Deepviews a su estrategia global de producto. Son vistas previas móviles del contenido de su aplicación, generadas automáticamente y alojadas por nosotros. Deepviews ofrece una buena alternativa para que los usuarios vean y prueben el contenido sin tener su aplicación instalada, y es una buena alternativa a los enlaces en la aplicación para Android.
Permanezca atento a las próximas novedades del enlazado profundo de Android.