Podczas wdrażania funkcji linków aplikacji należy przetestować funkcję linkowania, aby upewnić się, że system może powiązać Twoją aplikację z Twoimi witrynami i obsługiwać żądania adresów URL zgodnie z oczekiwaniami.
Aby przetestować istniejący plik deklaracji, możesz użyć narzędzia do generowania listy deklaracji i testowania.
W kolejnych sekcjach opisujemy, jak ręcznie przetestować weryfikację linków aplikacji. Jeśli wolisz, możesz przetestować weryfikację za pomocą narzędzia Play Deep Links lub Asystenta linków do aplikacji w Android Studio.
Potwierdź listę hostów do zweryfikowania
Podczas testowania należy potwierdzić listę powiązanych hostów, które system powinien zweryfikować w przypadku Twojej aplikacji. Utwórz listę wszystkich adresów URL, których odpowiednie filtry intencji zawierają te atrybuty i elementy:
- atrybut
android:schemeo wartościhttplubhttps - atrybut
android:hostz wzorcem adresu URL domeny - element działania
android.intent.action.VIEW - element kategorii
android.intent.category.BROWSABLE
Użyj tej listy, aby sprawdzić, czy plik JSON protokołu Digital Asset Links jest dostępny na każdym nazwanym hoście i w każdej poddomenie.
Potwierdź pliki protokołu Digital Asset Links
W przypadku każdej witryny użyj interfejsu API Digital Asset Links, 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>&
relation=delegate_permission/common.handle_all_urls
W przypadku dynamicznych linków 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
Sprawdzanie zasad dotyczących linków
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 polecenie robi to samo:
adb shell dumpsys package d
Polecenie zwraca listę każdego użytkownika lub profilu zdefiniowanego na urządzeniu, poprzedzoną nagłówkiem w tym formacie:
App linkages for user 0:
Po tym nagłówku dane wyjściowe używają tego formatu, aby wyświetlić ustawienia 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(Pakiet) – identyfikuje aplikację według nazwy pakietu zadeklarowanej w jej manifeście.Domains(Domeny) – wyświetla pełną listę hostów, których linki internetowe obsługuje ta aplikacja, używając spacji jako separatorów.Status(Stan) – wyświetla bieżące ustawienie obsługi linków dla tej aplikacji. Aplikacja, która przeszła weryfikację i której manifest zawieraandroid:autoVerify="true", ma stanalways. Liczba szesnastkowa po tym stanie jest powiązana z rekordem preferencji użytkownika dotyczących powiązania aplikacji w systemie Android. Ta wartość nie wskazuje, czy weryfikacja się powiodła.
Przykład testu
Aby weryfikacja linków aplikacji się powiodła, system musi być w stanie zweryfikować Twoją aplikację w każdej witrynie, którą określisz w danym filtrze intencji spełniającym kryteria linków aplikacji. Poniższy przykład pokazuje konfigurację pliku manifestu z kilkoma zdefiniowanymi linkami 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 powyższego 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 powyższego 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 deklaracji znajdziesz w artykule Tworzenie listy deklaracji.