Testowanie linków aplikacji

Podczas wdrażania funkcji linkowania aplikacji należy przetestować jej działanie, aby upewnić się, że system może powiązać aplikację z witrynami i obsługiwać żądania URL zgodnie z oczekiwaniami.

Aby przetestować istniejący plik z oświadczeniem, możesz użyć narzędzia Generator i tester listy oświadczeń.

W sekcjach poniżej znajdziesz informacje o tym, jak ręcznie przetestować weryfikację linków do aplikacji. Jeśli wolisz, możesz przetestować weryfikację za pomocą narzędzia Play Deep Links lub Asystenta linków aplikacji w Android Studio.

Potwierdź listę hostów do zweryfikowania

Podczas testowania sprawdź listę powiązanych hostów, które system powinien zweryfikować w przypadku Twojej aplikacji. Utwórz listę wszystkich adresów URL, których filtry intencji zawierają te atrybuty i elementy:

  • atrybut android:scheme o wartości http lub https;
  • android:host atrybut ze wzorcem adresu URL domeny,
  • android.intent.action.VIEW element działania
  • Element kategorii android.intent.category.BROWSABLE

Skorzystaj z tej listy, aby sprawdzić, czy w każdym wymienionym hoście i subdomenie znajduje się plik JSON protokołu Digital Asset Links.

Potwierdź pliki Digital Asset Links

W przypadku każdej witryny użyj interfejsu Digital Asset Links API, aby potwierdzić, że plik JSON protokołu Digital Asset Links jest prawidłowo hostowany i zdefiniowany:

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

W przypadku dynamicznych linków do aplikacji możesz też sprawdzić rozszerzenia relacji.

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

W ramach procesu testowania możesz sprawdzić bieżące ustawienia systemu dotyczące obsługi linków. Aby uzyskać listę istniejących zasad obsługi linków dla wszystkich aplikacji na połączonym urządzeniu, użyj tego polecenia:

adb shell dumpsys package domain-preferred-apps

To samo robi to polecenie:

adb shell dumpsys package d

Polecenie zwraca listę wszystkich użytkowników lub profili zdefiniowanych na urządzeniu, poprzedzoną nagłówkiem w tym formacie:

App linkages for user 0:

Po tym nagłówku dane wyjściowe mają następujący format, który zawiera listę ustawień obsługi linków dla danego użytkownika:

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

Ta lista wskazuje, które aplikacje są powiązane z którymi domenami w przypadku danego użytkownika:

  • Package – identyfikuje aplikację na podstawie nazwy pakietu zadeklarowanej w jej pliku manifestu.
  • Domains – wyświetla pełną listę hostów, których linki internetowe obsługuje ta aplikacja, używając spacji jako separatorów.
  • Status – pokazuje bieżące ustawienie obsługi linków w tej aplikacji. Aplikacja, która przeszła weryfikację i której manifest zawiera android:autoVerify="true", ma stan always. Liczba szesnastkowa po tym stanie jest związana z zapisem preferencji użytkownika dotyczących połączenia aplikacji w systemie Android. Ta wartość nie wskazuje, czy weryfikacja się powiodła.
bez wyświetlania okna dialogowego, tak jakby weryfikacja się powiodła.

Przykładowy test

Aby weryfikacja linku do aplikacji zakończyła się powodzeniem, system musi być w stanie zweryfikować aplikację w każdej z witryn określonych w danym filtrze intencji, który spełnia kryteria linków do aplikacji. Poniżej znajdziesz przykład konfiguracji pliku manifestu z kilkoma zdefiniowanymi linkami do aplikacji:

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

Lista hostów, które platforma będzie próbować zweryfikować na podstawie poprzedniego manifestu:

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

Lista hostów, których platforma nie będzie próbować zweryfikować na podstawie poprzedniego pliku manifestu:

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

Więcej informacji o listach instrukcji znajdziesz w artykule Tworzenie listy instrukcji.