twórz Głębokie łącza do zawartości aplikacji

gdy kliknięte łącze lub żądanie programowe wywołuje intencję URI sieci web, System Android próbuje każdej z następujących akcji, w kolejności sekwencyjnej, dopóki żądanie nie powiedzie się:

  1. Otwórz preferowaną przez użytkownika aplikację, która może obsługiwać identyfikator URI, jeśli jest on wyznaczony.
  2. Otwórz jedyną dostępną aplikację, która obsługuje URI.
  3. Pozwól użytkownikowi wybrać aplikację z okna dialogowego.

wykonaj poniższe czynności, aby utworzyć i przetestować linki do treści. Możesz także użyć Asystenta łączy aplikacji w Android Studio, aby dodać linki do aplikacji na Androida.

Add intent filters for incoming links

aby utworzyć łącze do zawartości aplikacji, Dodaj filtr intent zawierający te elementy i wartości atrybutów w manifeście:

<action>Określ działanie intentACTION_VIEW, aby filtr intent był dostępny z wyszukiwarki Google.<data>Dodaj jeden lub więcej znaczników<data>, z których każdy reprezentuje format URI, który odpowiada działaniu. Co najmniej znacznik<data>musi zawierać atrybutandroid:scheme.

możesz dodać więcej atrybutów, aby jeszcze bardziej udoskonalić Typ URI akceptowany przez aktywność. Na przykład możesz mieć wiele działań, które akceptują podobne adresy Uri, ale różnią się po prostu nazwą ścieżki. W takim przypadku użyj atrybutu android:path lub jego wariantów pathPattern lub pathPrefix, aby rozróżnić, którą aktywność system powinien otworzyć dla różnych ścieżek URI.

<category>Dołącz do kategoriiBROWSABLE. Jest to wymagane, aby filtr intent był dostępny z przeglądarki internetowej. Bez tego kliknięcie łącza w przeglądarce nie może rozwiązać problemu z aplikacją.

dodaj także kategorię DEFAULT.Dzięki temu aplikacja może reagować na ukryte intencje. Bez tego czynność może zostać rozpoczęta tylko wtedy, gdy intencja określa nazwę komponentu aplikacji.

poniższy fragment XML pokazuje, jak można określić filtr intencyjny w manifeście dla głębokich łączy. Adresy Uri "example://gizmos" i"http://www.example.com/gizmos" odnoszą się do tej czynności.

<activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_view_http_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos" --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> </intent-filter> <intent-filter android:label="@string/filter_view_example_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos" --> <data android:scheme="example" android:host="gizmos" /> </intent-filter></activity>

zauważ, że dwa filtry intencyjne różnią się tylko elementem <data>.Chociaż możliwe jest włączenie wielu elementów <data> do tego samego filtra, ważne jest, aby utworzyć oddzielne filtry, gdy twoim zamiarem jest zadeklarowanie unikalności (np. określonej kombinacji scheme i host), ponieważ wiele elementów <data> w tym samym filtrze intencji jest faktycznie scalanych razem, aby uwzględnić wszystkie odmiany ich połączonych atrybutów. Na przykład rozważ następujące:

<intent-filter> ... <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="app" android:host="open.my.app" /></intent-filter>

może się wydawać, że obsługuje tylko https://www.example.comiapp://open.my.app. Jednak w rzeczywistości obsługuje te dwa, plus te:app://www.example.com i https://open.my.app.

po dodaniu filtrów intencyjnych z URI dla zawartości aktywności do appmanifest, Android może kierować dowolną Intent, która ma pasujące Uri do Twojej aplikacji w czasie wykonywania.

aby dowiedzieć się więcej o definiowaniu filtrów intencji, zobacz Zezwalaj innym aplikacjom na rozpoczęcie aktywności.

odczyt danych z przychodzących intencji

gdy system rozpocznie aktywność za pomocą filtra intencji, możesz użyć danych dostarczonych przez Intent, aby określić, co chcesz renderować. Wywołaj metody getData() igetAction(), aby pobrać dane i dane powiązane z przychodzącym Intent. Możesz anulować te metody w dowolnym momencie cyklu życia aktywności, ale zazwyczaj powinieneś to zrobić podczas wczesnych wywołań zwrotnych, takich jak onCreate() lubonStart().

oto fragment, który pokazuje, jak pobrać dane zIntent:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) val action: String? = intent?.action val data: Uri? = intent?.data}

@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData();}

postępuj zgodnie z tymi najlepszymi praktykami, aby poprawić wrażenia użytkownika:

  • Głębokie łącze powinno prowadzić użytkowników bezpośrednio do treści,bez żadnych podpowiedzi, stron śródmiąższowych lub loginów. Upewnij się, że użytkownicy mogą oglądać zawartość aplikacji, nawet jeśli nigdy wcześniej jej nie otworzyli.W porządku jest pytanie użytkowników o kolejne interakcje lub po otwarciu aplikacji z Launchera.
  • postępuj zgodnie ze wskazówkami projektowymi opisanymi w nawigacji z tyłu i w górę, aby aplikacja spełniała oczekiwania użytkowników dotyczące nawigacji wstecznej po wejściu do aplikacji za pomocą głębokiego linku.

Testuj głębokie linki

możesz użyć Android DebugBridge z narzędziem activity manager (am), aby sprawdzić, czy filtr intencyjny określony dla głębokich linków rozwiązuje prawidłową aktywność aplikacji. Możesz uruchomić polecenie adb przeciwko urządzeniu lub emulatorowi.

ogólna składnia do testowania filtra intent URI z adb to:

$ adb shell am start -W -a android.intent.action.VIEW -d <URI> <PACKAGE>

na przykład poniższe polecenie próbuje wyświetlić aktywność docelowej aplikacji, która jest powiązana z określonym URI.

$ adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android

ustawiony powyżej moduł obsługi deklaracji i intencji manifestu definiuje połączenie między aplikacją a witryną i co zrobić z linkami przychodzącymi. Aby jednak system traktował Twoją aplikację jako domyślną obsługę zestawu identyfikatorów URI, musisz również poprosić system o weryfikację tego połączenia. Następna lekcja wyjaśnia, jak wdrożyć tę weryfikację.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post Kim jest Toni Kukoc? Były zawodnik Chicago Bulls i gwiazda The Last Dance Michaela Jordana
Next post Zad i astma-ReMed Klinika Medycyny Naturalnej