Vertrauenswürdige Webaktivitäten aus mehreren Quellen

Mit vertrauenswürdigen Webaktivitäten können Sie Web-App-Inhalte wie z. B. PWAs mithilfe eines Protokolls, das auf benutzerdefinierten Tabs basiert, in Ihre Android-App einbinden.

ff-origin-Navigation

Für vertrauenswürdige Webaktivitäten müssen die Ursprungsquellen über digitale Asset-Links validiert werden, damit der Inhalt im Vollbildmodus angezeigt wird.

Wenn ein Nutzer den bestätigten Ursprung verlässt, wird die Benutzeroberfläche für den benutzerdefinierten Tab angezeigt. Die URL-Leiste auf dem benutzerdefinierten Tab teilt Nutzern mit, dass sie nun eine Domain außerhalb der Anwendung besuchen, und bietet ihnen eine X-Schaltfläche, mit der sie schnell zum validierten Ursprung zurückkehren können.

Es ist aber auch üblich, dass Webanwendungen Erlebnisse erstellen, die mehrere Ursprünge umfassen. Ein Beispiel wäre eine Shopping-App mit der Hauptfunktion unter www.example.com, während der Bezahlvorgang unter checkout.example.com gehostet wird.

In solchen Fällen ist es unerwünscht, die benutzerdefinierten Tabs anzuzeigen – nicht nur, weil sich der Nutzer in derselben Anwendung befindet, sondern auch, weil die obere Leiste den Nutzer denken könnte, dass er die Anwendung verlassen und den Bezahlvorgang abbrechen könnte.

Mit vertrauenswürdigen Webaktivitäten können Entwickler mehrere Ursprünge validieren, wobei der Nutzer im Vollbildmodus bleibt, wenn er zwischen diesen Ursprüngen navigiert. Wie bei der Hauptdomain muss der Entwickler jede validierte Quelle steuern können.

Validierung für mehrere Ursprünge einrichten

Wie im Hauptursprung erfolgt die Validierung über Digital Asset Links und jede zu validierende Domain muss eine eigene „assetlinks.json“-Datei haben.

In unserem Beispiel mit www.example.com und checkout.example.com ergibt sich Folgendes:

  • https://www.example.com/.well-known/assetlinks.json
  • https://checkout.example.com/.well-known/assetlinks.json

Da jede Domain mit derselben Android-Anwendung verbunden wird, sehen die assetlinks.json-Dateien genau gleich aus.

Wenn der Paketname für die Android-App com.example.twa lautet, enthalten beide assetlink.json-Dateien etwa Folgendes:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
  "namespace": "android_app",
  "package_name": "com.example",
   "sha256_cert_fingerprints": ["..."]}
}]

Der Android-App mehrere Ursprünge hinzufügen

In der Android-App muss die Deklaration asset_statements so aktualisiert werden, dass sie alle Ursprünge enthält, die validiert werden müssen:

<string name="asset_statements">
[{
    \"relation\": [\"delegate_permission/common.handle_all_urls\"],
    \"target\": {
        \"namespace\": \"web\",
        \"site\": \"https://www.example.com\"
    }
}],
[{
    \"relation\": [\"delegate_permission/common.handle_all_urls\"],
    \"target\": {
        \"namespace\": \"web\",
        \"site\": \"https://checkout.example.com\"
    }
}],
</string>

Zusätzliche Ursprünge zur LauncherActivity hinzufügen

Standard-LauncherActivity verwenden

Mit der LauncherActivity, die zur android-browser-helper-Supportbibliothek gehört, können Sie mehrere Ursprünge hinzufügen, die validiert werden sollen. Dazu wird das Android-Projekt konfiguriert.

Fügen Sie zuerst ein string-array-Element in die Datei res/values/strings.xml ein. Jede zusätzliche URL, die validiert werden soll, befindet sich in einem item-Unterelement:

...
<string-array name="additional_trusted_origins">
    <item>https://www.google.com</item>
</string-array>
...

Fügen Sie als Nächstes ein neues meta-data-Tag in das vorhandene Aktivitätselement ein, das auf LauncherActivity verweist, und zwar in AndroidManifest.xml:

...
<activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
    android:label="@string/app_name">


    <meta-data
        android:name="android.support.customtabs.trusted.ADDITIONAL_TRUSTED_ORIGINS"
        android:resource="@array/additional_trusted_origins" />


    ...
</activity>
...

Benutzerdefinierte LauncherActivity verwenden

Wenn Sie benutzerdefinierten Code zum Starten einer vertrauenswürdigen Webaktivität verwenden, können zusätzliche Ursprünge hinzugefügt werden. Dazu muss beim Erstellen des Intents zum Starten der vertrauenswürdigen Webaktivität setAdditionalTrustedOrigins aufgerufen werden:

public void launcherWithMultipleOrigins(View view) {
  List<String> origins = Arrays.asList(
      "https://checkout.example.com/"
  );


  TrustedWebActivityIntentBuilder builder = new TrustedWebActivityIntentBuilder(LAUNCH_URI)
      .setAdditionalTrustedOrigins(origins);


  new TwaLauncher(this).launch(builder, null, null);
}

Fazit

Damit unterstützt die vertrauenswürdige Webaktivität jetzt mehrere Ursprünge. android-browser-helper bietet eine Beispiel-App für vertrauenswürdige Webaktivitäten mit mehreren Ursprüngen. Überprüfen Sie ihn.

Fehlerbehebung

Die Einrichtung von Digital Asset Links umfasst mehrere bewegliche Teile. Wenn in der Anwendung immer noch die Leiste für benutzerdefinierte Tabs oben angezeigt wird, liegt wahrscheinlich ein Problem mit der Konfiguration vor.

Die Kurzanleitung zu vertrauenswürdigen Webaktivitäten bietet einen hervorragenden Abschnitt zur Fehlerbehebung zum Beheben von Problemen mit Digital Asset Link.

Außerdem steht Ihnen das hervorragende Peters Asset Link Tool zur Verfügung, mit dem Sie Fehler in Digital Asset Links in auf dem Gerät installierten Anwendungen beheben können.