App-Links testen

Wenn Sie die Funktion für App-Links implementieren, sollten Sie die Verknüpfungsfunktion testen, um sicherzustellen, dass das System Ihre App Ihren Websites zuordnen und URL-Anfragen wie erwartet verarbeiten kann.

Wenn Sie eine vorhandene Statement-Datei testen möchten, können Sie das Tool Statement List Generator and Tester verwenden.

In den folgenden Abschnitten wird beschrieben, wie Sie die Bestätigung von App-Links manuell testen. Alternativ können Sie die Bestätigung über das Tool Play Deep Links oder den App-Link-Assistenten in Android Studio testen.

Liste der zu bestätigenden Hosts bestätigen

Beim Testen sollten Sie die Liste der verknüpften Hosts bestätigen, die das System für Ihre App bestätigen soll. Erstellen Sie eine Liste aller URLs, deren entsprechende Intent-Filter die folgenden Attribute und Elemente enthalten:

  • Attribut android:scheme mit dem Wert http oder https
  • Attribut android:host mit einem Domain-URL-Muster
  • Aktionselement android.intent.action.VIEW
  • Kategorieelement android.intent.category.BROWSABLE

Anhand dieser Liste können Sie prüfen, ob auf jedem genannten Host und jeder genannten Subdomain eine Digital Asset Links-JSON-Datei vorhanden ist.

Digital Asset Links-Dateien bestätigen

Bestätigen Sie für jede Website mit der Digital Asset Links API, dass die Digital Asset Links-JSON-Datei ordnungsgemäß gehostet und definiert ist:

https://digitalassetlinks.googleapis.com/v1/statements:list?
   source.web.site=https://<var>domain.name</var>:<var>optional_port</var>&amp;
   relation=delegate_permission/common.handle_all_urls

Bei dynamischen App-Links können Sie auch die Beziehungserweiterungen prüfen.

https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.example.com&relation=delegate_permission/common.handle_all_urls&return_relation_extensions=true

Im Rahmen des Testverfahrens können Sie die aktuellen Systemeinstellungen für die Linkverarbeitung prüfen. Verwenden Sie den folgenden Befehl, um eine Liste der vorhandenen Richtlinien zur Linkverarbeitung für alle Apps auf Ihrem verbundenen Gerät abzurufen:

adb shell dumpsys package domain-preferred-apps

Der folgende Befehl bewirkt dasselbe:

adb shell dumpsys package d

Der Befehl gibt eine Liste der einzelnen Nutzer oder Profile zurück, die auf dem Gerät definiert sind. Vorangestellt ist eine Kopfzeile im folgenden Format:

App linkages for user 0:

Nach dieser Kopfzeile werden die Einstellungen zur Linkverarbeitung für diesen Nutzer im folgenden Format aufgeführt:

Package: com.android.vending
Domains: play.google.com market.android.com
Status: always : 200000002

In dieser Liste ist angegeben, welche Apps für diesen Nutzer mit welchen Domains verknüpft sind:

  • Package : Gibt eine App anhand ihres Paketnamens an, wie im Manifest deklariert.
  • Domains : Enthält die vollständige Liste der Hosts, deren Weblinks von dieser App verarbeitet werden. Die einzelnen Hosts sind durch Leerzeichen getrennt.
  • Status : Zeigt die aktuelle Einstellung zur Linkverarbeitung für diese App. Für eine App, die die Bestätigung bestanden hat und deren Manifest android:autoVerify="true" enthält, wird der Status always angezeigt. Die Hexadezimalzahl nach diesem Status bezieht sich auf den Eintrag im Android-System zu den Einstellungen des Nutzers für die App-Verknüpfung. Dieser Wert gibt nicht an, ob die Bestätigung erfolgreich war.

Testbeispiel

Damit die Bestätigung von App-Links erfolgreich ist, muss das System Ihre App mit jeder der Websites bestätigen können, die Sie in einem bestimmten Intent-Filter angeben, der die Kriterien für App-Links erfüllt. Das folgende Beispiel zeigt eine Manifestkonfiguration mit mehreren definierten App-Links:

<activity android:name="MainActivity">
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:scheme="https" />
            <data android:host="www.example.com" />
            <data android:host="mobile.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="www.example2.com" />
        </intent-filter>
    </activity>

    <activity android:name="SecondActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
            <data android:host="account.example.com" />
        </intent-filter>
    </activity>

      <activity android:name="ThirdActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="https" />
            <data android:host="map.example.com" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="market" />
            <data android:host="example.com" />
        </intent-filter>
      </activity>

</application>

Die Liste der Hosts, die die Plattform anhand des vorherigen Manifests bestätigen würde, sieht so aus:

www.example.com
mobile.example.com
www.example2.com
account.example.com

Die Liste der Hosts, die die Plattform anhand des vorherigen Manifests nicht bestätigen würde, sieht so aus:

map.example.com (it does not have android.intent.category.BROWSABLE)
market://example.com (it does not have either an "http" or "https" scheme)

Weitere Informationen zu Statement-Listen finden Sie unter Statement-Liste erstellen.