Vertrauenswürdige Webaktivitäten aus mehreren Quellen

Vertrauenswürdige Web-Aktivitäten sind eine neue Möglichkeit, Web-App-Inhalte wie Ihre PWA mithilfe eines Protokolls, das auf benutzerdefinierten Tabs basiert, in Ihre Android-App einzubinden.

ff-origin navigation

Bei einer vertrauenswürdigen Webaktivität müssen die geöffneten Ursprünge mithilfe von Digital Asset Links validiert werden, damit die Inhalte im Vollbildmodus angezeigt werden.

Wenn ein Nutzer den bestätigten Ursprung verlässt, wird die Benutzeroberfläche des benutzerdefinierten Tabs angezeigt. Die URL-Leiste auf dem Tab „Benutzerdefiniert“ informiert die Nutzer darüber, dass sie sich jetzt in einer Domain außerhalb der Anwendung befinden. Außerdem wird ihnen eine Schaltfläche mit einem X angezeigt, über die sie schnell zum bestätigten Ursprung zurückkehren können.

Es ist aber auch üblich, dass Web-Apps mehrere Ursprünge umfassen. Ein Beispiel wäre eine Shopping-App, deren Hauptfunktion unter www.beispiel.de aufgerufen wird, während der Bezahlvorgang unter checkout.beispiel.de gehostet wird.

In solchen Fällen ist die Anzeige der benutzerdefinierten Tabs nicht erwünscht, nicht nur weil sich der Nutzer in derselben App befindet, sondern auch weil die obere Leiste den Nutzer dazu verleiten könnte, zu glauben, dass er die App verlassen hat und den Bezahlvorgang abbricht.

Mit vertrauenswürdigen Webaktivitäten können Entwickler mehrere Ursprünge validieren. Der Nutzer bleibt dabei im Vollbildmodus. Wie bei der Hauptdomain muss der Entwickler in der Lage sein, jeden validierten Ursprung zu kontrollieren.

Validierung für mehrere Ursprünge einrichten

Wie beim Hauptursprung erfolgt die Validierung über Digital Asset Links. Jede zu validierende Domain muss eine eigene assetlinks.json-Datei haben.

In unserem Beispiel mit www.beispiel.de und checkout.beispiel.de hätten wir:

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

Da jede Domain mit derselben Android-Anwendung verbunden ist, 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": ["..."]}
}]

Android-App mehrere Ursprünge hinzufügen

In der Android-Anwendung muss die asset_statements-Erklärung aktualisiert werden, damit 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>

LauncherActivity zusätzliche Ursprünge hinzufügen

Standard-LauncherActivity verwenden

Die LauncherActivity, die Teil der android-browser-helper-Supportbibliothek ist, bietet die Möglichkeit, mehrere Ursprünge hinzuzufügen, die durch Konfigurieren des Android-Projekts validiert werden sollen.

Fügen Sie der Datei res/values/strings.xml zuerst ein string-array-Element hinzu. 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üge als Nächstes in AndroidManifest.xml ein neues meta-data-Tag im vorhandenen Aktivitätselement hinzu, das auf LauncherActivity verweist:

...
<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 Sie zusätzliche Ursprünge hinzufügen, indem Sie setAdditionalTrustedOrigins aufrufen, wenn Sie den Intent zum Starten der vertrauenswürdigen Webaktivität erstellen:

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

Nach diesen Schritten kann die Funktion „Vertrauenswürdige Web-Aktivität“ jetzt mehrere Ursprünge unterstützen. In android-browser-helper finden Sie eine Beispielanwendung für vertrauenswürdige Web-Aktivitäten mit mehreren Ursprüngen. Prüfen Sie das unbedingt.

Fehlerbehebung

Das Einrichten von Digital Asset Links ist recht komplex. Wenn die Leiste für benutzerdefinierte Tabs weiterhin oben in der Anwendung angezeigt wird, liegt wahrscheinlich ein Problem mit der Konfiguration vor.

Im Schnellstartleitfaden für vertrauenswürdige Webaktivitäten finden Sie einen Abschnitt zur Fehlerbehebung, in dem beschrieben wird, wie Sie Probleme mit Digital Asset Links beheben.

Außerdem gibt es das Asset Link Tool von Peter, mit dem sich Digital Asset Links in auf dem Gerät installierten Apps beheben lassen.