Cómo pasar información a una actividad web de confianza con parámetros de consulta

Cuando usan la Actividad web de confianza en sus aplicaciones, es posible que los desarrolladores deban pasar información de la parte nativa de la aplicación a la app web progresiva (PWA).

Un caso de uso común para esto es implementar segmentaciones de estadísticas personalizadas para medir las instalaciones y las sesiones iniciadas desde la actividad web confiable. Se pueden agregar parámetros de consulta a la URL de lanzamiento para implementar esto.

Modifica la URL de inicio

Si el parámetro que se pasa a la AWP seguirá siendo el mismo para todos los usuarios y lanzamientos, se puede agregar directamente a la URL de lanzamiento. Un ejemplo de este uso es cuando los desarrolladores desean medir la cantidad de sesiones de navegación creadas a partir de una actividad web confiable.

Usa Bubblewrap

Bubblewrap es una herramienta creada para ayudar a los desarrolladores a crear un proyecto para una aplicación para Android que inicie una AWP existente con una actividad web confiable. Contiene una biblioteca y una interfaz de línea de comandos (CLI).

Crea un proyecto nuevo

Cuando se usa la CLI de Bubblewrap, se inicializa un proyecto con el comando init y se crean valores predeterminados a partir de un manifiesto web, que se proporciona como parámetro:

bubblewrap init --manifest https://material.money/manifest.json

El asistente usará la URL de inicio del manifiesto web de forma predeterminada y les pedirá a los usuarios que confirmen el valor, lo que les dará a los desarrolladores la oportunidad de agregar parámetros adicionales a la URL que se usa para iniciar la app web progresiva.

Se muestra el resultado de la CLI de Bubblewrap

Cómo modificar un proyecto existente

Cuando Bubblewrap genera un proyecto, la información de ese proyecto en particular se almacena en un archivo llamado twa-manifest.json, en la carpeta del proyecto. Para modificar la URL de inicio del proyecto existente, los desarrolladores deben modificar el archivo:

{
  ...
  "startUrl": "/?utm_source=trusted-web-activity",
  ...
}

Luego, vuelve a generar los archivos del proyecto y aplica la nueva URL de inicio.

bubblewrap update

Uso de Android Studio

Cuando usas Android Studio y la LauncherActivity predeterminada, startUrl se define como una metaetiqueta dentro de AndroidManifest.xml, y podemos cambiar la URL que se usa para iniciar la actividad web confiable modificándola:

<activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://svgomg.firebaseapp.com/?utm_source=trusted-web-activity" />
    ...
</activity>

Cómo modificar la URL de inicio de forma dinámica

En otros casos, es posible que los desarrolladores deseen crear parámetros que cambien entre usuarios o sesiones, por ejemplo. En la mayoría de los casos, esto implicará recopilar detalles del lado de Android de la aplicación para pasarlos a la app web progresiva.

Paso 1: Crea una LauncherActivity personalizada

public class CustomQueryStringLauncherActivity extends LauncherActivity {
    private String getDynamicParameterValue() {
        return String.valueOf((int)(Math.random() * 1000));
    }

    @Override
    protected Uri getLaunchingUrl() {
        // Get the original launch Url.
        Uri uri = super.getLaunchingUrl();

        // Get the value we want to use for the parameter value
        String customParameterValue = getDynamicParameterValue();

        // Append the extra parameter to the launch Url
        return uri
                .buildUpon()
                .appendQueryParameter("my_parameter", customParameterValue)
                .build();
    }
}

Paso 2: Modifica AndroidManifest.xml para usar LauncherActivity personalizado

<activity android:name="com.myapp.CustomQueryStringLauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://squoosh.app/?utm_source=trusted-web-activity" />
    ...
</activity>

Conclusión

Para pasar información de la parte nativa a la parte web de una aplicación, puedes usar parámetros de consulta. Cuando se agrega un parámetro a la cadena de consulta, las secuencias de comandos que se ejecutan en la página podrán acceder a él y también puede ser parte de la referencia cuando los usuarios navegan a una página diferente o el desarrollador implementa una acción de compartir.

Los desarrolladores deben tener en cuenta esas implicaciones y pueden mitigarlas usando vínculo rel=noreferrer o limpiando la URL con la API de ubicación de la página.

Actualmente, el protocolo de actividad web confiable no proporciona un mecanismo para intercambiar mensajes con la parte nativa de la aplicación después de invocar la parte web.

Creemos que las APIs existentes o futuras de la plataforma web permiten la mayoría de los casos de uso que necesitan los desarrolladores. Si buscas APIs web nuevas o próximas, consulta la página de estado de las funciones nuevas.