Cómo acceder y pasar parameters a los modules de una aplicación instantánea de Android

Con las aplicaciones normales instaladas, es posible utilizar la técnica de Deep Linking para no solo abrir una aplicación específica de una URL sino también para networkingirigirla a una sección / function específica, como una publicación de Facebook específica o coorderadas específicas en un map.

Como lo he leído con Instant Apps, esto no será posible porque los enlaces ya apuntan al module específico para download y ejecutar, ¿cómo sería posible acceder no solo al mencionado module sino también pasarle algunos parameters?

Por ejemplo:

Este es el enlace desde el cual se downloadá el module de solo lectura de mi aplicación de maps: " www.myinstantappexample.com/onlyviewmap "

Si quiero que apunte a un set específico de coorderadas, ¿cómo se compondrá el enlace? ¿Será así: " www.myinstantappexample.com/onlyviewmap/?x=0,000&y=0,000 "?

Por lo que he podido encontrar, google no cubre este aspecto y realmente no puedo entenderlo.

Aplicaciones instantáneas y enlaces profundos

Las aplicaciones instantáneas confían en los enlaces de aplicaciones para funcionar, y los enlaces de aplicaciones son solo un tipo de enlace profundo. Por lo tanto, aún es posible establecer vínculos profundos para las aplicaciones instantáneas, y de hecho es absolutamente crítico para su funcionamiento. Sin embargo, el enlace profundo del esquema URI (que sigue siendo muy frecuente en las aplicaciones de Android) no es compatible.

La diferencia entre una aplicación regular y una aplicación instantánea es que el dispositivo solo cargará una sola actividad en respuesta al enlace de aplicación en el que el usuario hace clic, en lugar de tener que download el package completo a través de Play Store. Es una experiencia más fluida para el usuario, pero la tecnología subyacente funciona de la misma manera.

Pasar parameters personalizados

Si el usuario hace clic en una URL habilitada para App Links como http://www.myinstantappexample.com/onlyviewmap/?x=0.000&y=0.000 , volverá a ingresar esa cadena completa dentro de la aplicación una vez que se abra. Tendrá que analizar las variables x e y usted mismo, pero estarán disponibles para usted. Algo como esto:

 Uri data = this.getIntent().getData(); if (data != null && data.isHierarchical()) { String uri = this.getIntent().getDataString(); Log.i("MyApp", "Deep link clicked " + uri); } 

Solo necesitará manipular el valor de uri para encontrar lo que necesita.

Enfoque alternativo a los parameters personalizados

Alternativamente, puede usar Branch.io (divulgación completa: estoy en el equipo de la sucursal) para potenciar sus enlaces. Tenemos soporte completo para las aplicaciones instantáneas , y esto le permite trabajar con un formatting de datos mucho más amigable. Te permitimos crear enlaces como este para controlar cada parte del comportamiento:

 branch.link({ tags: [ 'tag1', 'tag2' ], channel: 'facebook', feature: 'dashboard', stage: 'new user', data: { x: '0.000', y: '0.000', '$desktop_url': 'http://myappwebsite.com', '$ios_url': 'http://myappwebsite.com/ios', '$ipad_url': 'http://myappwebsite.com/ipad', '$android_url': 'http://myappwebsite.com/android', '$og_app_id': '12345', '$og_title': 'My App', '$og_description': 'My app\'s description.', '$og_image_url': 'http://img.flipandroid.com/android&usg=ALkJrhhOyszGLBIZpB5qdxTiV7wDRGEuog/image.png' } }, function(err, link) { console.log(err, link); }); 

A cambio, obtiene una URL como http://myappname.app.link/iDdkwZR5hx , y luego dentro de la aplicación después de hacer clic en el enlace, obtendrá algo que se ve así:

 { tags: [ 'tag1', 'tag2' ], channel: 'facebook', feature: 'dashboard', stage: 'new user', data: { x: '0.000', y: '0.000' } } 

Si quiero que apunte a un set específico de coorderadas, ¿cómo se compondrá el enlace?

Depende de usted cómo include información adicional en la URL. Podría ser a través de parameters de URL o en la ruta misma. P.ej.

https://www.myinstantappexample.com/location/2/user/5 https://www.myinstantappexample.com/onlyviewmap/?x=1.2&y=3.4

A continuación, analiza la URL en la Activity recepción. La class Uri incluye una serie de methods auxiliares como getQueryParameter() y getPathSegments() para facilitar esto.

Por ejemplo, para analizar esta URL:

https://www.myinstantappexample.com/onlyviewmap/?x=1.2&y=3.4

Harías algo como esto en tu Activity :

 Uri uri = getIntent().getData(); String x; String y; if (data != null) { x = uri.getQueryParameter("x"); // x = "1.2" y = uri.getQueryParameter("y"); // y = "3.4" } if (x != null && y != null) { // do something interesting with x and y } 

Para hacerlo, debe usar el "asistente de enlaces de aplicaciones" en Herramientas-> Asistente de enlaces de aplicaciones.

Luego verifique sus enlaces y, en el selector de ruta, verifique que esté seleccionada la opción "pathPrefix".

Luego, en la parte inferior del método OnCreate de su actividad (que está relacionado con el enlace que editó recientemente), agregue este código:

 Intent appLinkIntent = getIntent(); String appLinkAction = appLinkIntent.getAction(); Uri appLinkData = appLinkIntent.getData(); // then use appLinkData.getQueryParameter("YourParameter") 

Puede probar y depurar esto, utilizando la opción "editarConfiguraciones", simplemente abra esa window y edite su module de aplicación instantánea (el que se inició con el enlace que ha editado recientemente) y en el campo URL agregue los parameters de URL que necesita. (Entonces solo ejecuta ese module: D)

Espero que esto sea útil.