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 die bestätigte Quelle 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 jeden bestätigten Ursprung verwalten können.

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.

Angenommen, der Paketname der Android-Anwendung lautet com.example.twa, würden beide assetlink.json-Dateien in etwa Folgendes enthalten:

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

Mehrere Ursprünge zur Android-Anwendung 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ügen Sie als Nächstes ein neues meta-data-Tag in das vorhandene Aktivitätselement ein, das auf die LauncherActivity in AndroidManifest.xml 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

Mit diesen Schritten ist die Funktion „Vertrauenswürdige Web-Aktivität“ jetzt für die Unterstützung mehrerer Ursprünge bereit. 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

Die Einrichtung von Digital Asset Links ist recht komplex. Wenn in der Anwendung weiterhin die Leiste „Benutzerdefinierte Tabs“ oben angezeigt wird, ist wahrscheinlich ein Problem mit der Konfiguration aufgetreten.

Im Schnellstartleitfaden für vertrauenswürdige Webaktivitäten finden Sie einen Abschnitt zur Fehlerbehebung, in dem beschrieben wird, wie Sie Probleme mit Digital Asset Link 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.