Transmission d'informations à une activité Web fiable à l'aide de paramètres de requête

Lorsqu'ils utilisent l'activité Web sécurisée dans leurs applications, les développeurs peuvent avoir besoin de transmettre des informations depuis la partie native de l'application vers la progressive web app (PWA).

Un cas d'utilisation courant consiste à implémenter des segmentations d'analyse personnalisées pour mesurer les installations et les sessions démarrées à partir de l'activité Web de confiance. Pour cela, vous pouvez ajouter des paramètres de requête à l'URL de lancement.

Modifier l'URL de démarrage

Si le paramètre transmis à la PWA reste le même pour tous les utilisateurs et pour les lancements, il peut être ajouté directement à l'URL de lancement. C'est par exemple le cas lorsque les développeurs souhaitent mesurer le nombre de sessions de navigation créées à partir d'une activité Web de confiance.

Utiliser du papier bulle

Bubblewrap est un outil conçu pour aider les développeurs à créer un projet pour une application Android qui lance une PWA existante à l'aide d'une activité Web fiable. Il contient à la fois une bibliothèque et une interface de ligne de commande (CLI).

Créer un projet

Lorsque vous utilisez la CLI Bubblewrap, un projet est initialisé avec la commande init et crée des valeurs par défaut à partir d'un fichier manifeste Web, fournies en tant que paramètre:

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

L'assistant utilisera par défaut la valeur "start_url" du fichier manifeste Web et demandera aux utilisateurs de confirmer cette valeur, ce qui permet aux développeurs d'ajouter des paramètres supplémentaires à l'URL utilisée pour lancer la progressive web app.

Afficher la sortie de la CLI Bubblewrap

Modifier un projet existant

Lorsque Bubblewrap génère un projet, les informations le concernant sont stockées dans un fichier nommé twa-manifest.json, dans le dossier du projet. Pour modifier l'URL de démarrage d'un projet existant, les développeurs doivent modifier le fichier:

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

Générez ensuite à nouveau les fichiers du projet et appliquez la nouvelle URL de démarrage.

bubblewrap update

Utiliser Android Studio

Lorsque vous utilisez Android Studio et la propriété par défaut LauncherActivity, la valeur startUrl est définie comme une balise Meta dans le fichier AndroidManifest.xml. Nous pouvons modifier l'URL utilisée pour lancer l'activité Web de confiance en la modifiant:

<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>

Modifier l'URL de démarrage de façon dynamique

Dans d'autres cas, les développeurs peuvent vouloir créer des paramètres qui changent selon les utilisateurs ou les sessions, par exemple. Dans la plupart des cas, il s'agira de collecter des informations depuis le côté Android de l'application pour les transmettre à la progressive web app.

Étape 1: Créez une activité de lanceur personnalisée

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();
    }
}

Étape 2: Modifiez AndroidManifest.xml pour utiliser l'élément "LauncherActivity" personnalisé

<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>

Conclusion

La transmission d'informations de la partie native à la partie Web d'une application peut être effectuée à l'aide de paramètres de requête. Lorsqu'un paramètre est ajouté à la chaîne de requête, il est accessible aux scripts exécutés sur la page et peut également faire partie du site référent lorsque les utilisateurs accèdent à une autre page ou que le développeur met en œuvre une action de partage.

Les développeurs doivent être conscients de ces conséquences et peuvent les atténuer en utilisant link rel=noreferrer ou en nettoyant l'URL à l'aide de l'API Page Location.

À l'heure actuelle, le protocole d'activité Web sécurisée ne fournit pas de mécanisme permettant d'échanger des messages avec la partie native de l'application après l'appel de la partie Web.

Nous pensons que les API Web Platform existantes ou à venir répondront à la plupart des cas d'utilisation dont ont besoin les développeurs. Si vous recherchez des API Web nouvelles ou à venir, consultez la page État des nouvelles fonctionnalités.