Tworzenie precyzyjnych linków

Precyzyjne linki umożliwiają kierowanie użytkowników bezpośrednio do aplikacji z przeglądarek internetowych, powiadomień, mediów społecznościowych, reklam i innych źródeł. Precyzyjne linki zapewniają bezpośrednie przejścia z aplikacji do aplikacji i z internetu do aplikacji, które mogą pomóc Ci zwiększyć zaangażowanie dzięki kontekstowym, kierowanym treściom.

Z tego przewodnika dowiesz się, jak działają precyzyjne linki oraz jak tworzyć i testować precyzyjne linki do swoich treści.

W przypadku precyzyjnych linków odwołujących się do Twojej witryny lub domen zalecamy używanie linków do aplikacji, które zapewniają użytkownikom bezproblemowe i wiarygodne wrażenia.

Jak działają precyzyjne linki

Głębokie linkowanie to ogólna funkcja systemu Android, która jest obsługiwana na wszystkich wersjach i urządzeniach. Wykorzystuje system intencji Androida do kierowania precyzyjnych linków do odpowiednich aplikacji. Aplikacje, które chcą obsługiwać konkretny identyfikator URI precyzyjnego linku, deklarują pasujący filtr intencji w plikach manifestu aplikacji.

Gdy użytkownik kliknie link, Android wywoła intencję i spróbuje przekierować ją do aplikacji. Ponieważ wiele aplikacji może deklarować filtry intencji pasujące do danego identyfikatora URI, Android wykonuje te działania w tej kolejności, aby przekierować intencję:

  1. Otwórz domyślną aplikację użytkownika, która może obsługiwać identyfikator URI (jeśli została wyznaczona).
  2. Otwórz jedyną dostępną aplikację, która może obsłużyć ten URI.
  3. Umożliwia użytkownikowi wybranie aplikacji z okna wyboru.

Oznacza to, że nawet jeśli filtry intencji pasują do danego URI, nie ma gwarancji, że system przekieruje intencję precyzyjnego linku do Twojej aplikacji. Użytkownik odgrywa kluczową rolę w zarządzaniu tym, która aplikacja obsługuje intencję, co daje mu kontrolę i możliwość wyboru. Aby mieć większą kontrolę nad precyzyjnymi linkami do własnej witryny i domen, wypróbuj linki do aplikacji.

Okno dialogowe usuwania niejednoznaczności w Androidzie pozwala użytkownikowi zobaczyć wszystkie zainstalowane aplikacje, które zarejestrowały się do obsługi intencji precyzyjnego linku. Użytkownik może też wybrać aplikację jako domyślną dla tego typu linku. Gdy użytkownik ustawi domyślną aplikację, system nie będzie już wyświetlać okna dialogowego dla tego konkretnego zamiaru, a wybrana aplikacja będzie otwierać się automatycznie.

Rysunek 1. Okno dialogowe ujednoznacznienia

Działanie okna wyboru różni się w zależności od wersji Androida. Na przykład na Androidzie 12 i nowszych wersjach niezweryfikowane linki aplikacji będą domyślnie otwierać się w przeglądarce internetowej, a w starszych wersjach może się pojawić okno, które pozwala użytkownikowi wybrać aplikację, która otworzy link.

Uwaga: od Androida 12 (API na poziomie 31) ogólny zamiar internetowy jest rozpoznawany jako aktywność w aplikacji tylko wtedy, gdy aplikacja jest zatwierdzona w przypadku konkretnej domeny zawartej w tym zamiarze. Jeśli aplikacja nie zostanie zatwierdzona w domenie, zamiast niej zostanie otwarta domyślna aplikacja przeglądarki użytkownika.

Rodzaje precyzyjnych linków

Na Androidzie możesz obsługiwać 3 rodzaje precyzyjnych linków:

  • Niestandardowe precyzyjne linki: to precyzyjne linki, które używają niestandardowego schematu URI (np. example://products/123), aby kierować użytkowników bezpośrednio do określonych treści w aplikacji. Są przydatne w przypadku nawigacji wewnętrznej lub linków ze źródeł, nad którymi masz kontrolę, ale nie są standardowymi linkami internetowymi i mogą nadal wywoływać okno dialogowe ujednoznaczniania, jeśli inna aplikacja zarejestruje ten sam schemat niestandardowy.
  • Linki internetowe: są to precyzyjne linki, które korzystają ze standardowych schematów httphttps. Są bardziej uniwersalne, ponieważ są standardowymi adresami URL, ale na Androidzie 12 i nowszych wersjach prawie zawsze wywołują okno wyboru, co oznacza, że domyślnie są obsługiwane przez przeglądarkę użytkownika, a nie przekierowywane do Twojej aplikacji.
  • Linki do aplikacji: dostępne od Androida 6.0 (poziom interfejsu API 23). Są to zweryfikowane linki internetowe. W procesie powiązania witryny możesz udowodnić systemowi Android, że jesteś właścicielem domeny. Po weryfikacji system automatycznie kieruje linki do tej domeny bezpośrednio do aplikacji, całkowicie pomijając okno dialogowe z wyborem. Zapewnia to użytkownikom zaufane i bezproblemowe korzystanie z usługi.

Dodawanie filtrów intencji dla linków przychodzących

Aby utworzyć link do treści aplikacji, dodaj do manifestu filtr intencji zawierający te elementy i wartości atrybutów:

<action>

Określ działanie intencji ACTION_VIEW, aby filtr intencji był dostępny z wyszukiwarki Google.

<data>

Dodaj co najmniej 1 tag <data>, z których każdy reprezentuje format URI, który prowadzi do aktywności. Tag <data> musi zawierać co najmniej atrybut android:scheme.

Możesz dodać więcej atrybutów, aby dokładniej określić typ URI akceptowany przez działanie. Możesz na przykład mieć wiele aktywności, które akceptują podobne identyfikatory URI, ale różnią się tylko nazwą ścieżki. W takim przypadku użyj atrybutu android:path lub jego wariantów pathPattern lub pathPrefix, aby odróżnić aktywność, którą system ma otwierać w przypadku różnych ścieżek URI.

<category>

Uwzględnij kategorię BROWSABLE. Jest to wymagane, aby filtr intencji był dostępny z przeglądarki. Bez niego kliknięcie linku w przeglądarce nie spowoduje otwarcia aplikacji.

Uwzględnij też kategorię DEFAULT. Umożliwia to aplikacji reagowanie na intencje niejawne. Bez tego działania aktywność można rozpocząć tylko wtedy, gdy intencja określa nazwę komponentu aplikacji.

Poniższy fragment kodu XML pokazuje, jak można określić filtr intencji w manifeście na potrzeby precyzyjnego linkowania. Adresy URI "example://gizmos""http://www.example.com/gizmos" prowadzą do tej aktywnoś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 oba filtry intencji różnią się tylko elementem <data>. Chociaż w tym samym filtrze można umieścić kilka elementów <data>, ważne jest, aby w przypadku deklarowania unikalnych adresów URL (np. określonej kombinacji schemehost) tworzyć osobne filtry, ponieważ wiele elementów <data> w tym samym filtrze intencji jest w rzeczywistości łączonych ze sobą, aby uwzględnić wszystkie odmiany ich połączonych atrybutów. Na przykład:

<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.comapp://open.my.app. W rzeczywistości obsługuje on te 2 znaki oraz te:app://www.example.comhttps://open.my.app.

Ostrzeżenie: jeśli wiele aktywności zawiera filtry intencji, które prowadzą do tego samego zweryfikowanego linku do aplikacji na Androida, nie ma gwarancji, która aktywność obsłuży ten link.

Gdy dodasz do pliku manifestu aplikacji filtry intencji z identyfikatorami URI treści aktywności, Android będzie mógł w czasie działania aplikacji kierować do niej wszystkie Intent z pasującymi identyfikatorami URI.

Więcej informacji o definiowaniu filtrów intencji znajdziesz w artykule Umożliwianie innym aplikacjom uruchamiania aktywności.

Odczytywanie danych z przychodzących intencji

Gdy system uruchomi Twoją aktywność za pomocą filtra intencji, możesz użyć danych dostarczonych przez Intent, aby określić, co musisz wyrenderować. Aby pobrać dane i działanie powiązane z przychodzącym elementem Intent, wywołaj metody getData()getAction(). Możesz wywoływać te metody w dowolnym momencie cyklu życia aktywności, ale zwykle należy to robić podczas wczesnych wywołań zwrotnych, takich jak onCreate() lub onStart.

Oto fragment kodu, który pokazuje, jak pobrać dane z Intent:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

    val action: String? = intent?.action
    val data: Uri? = intent?.data
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
}

Aby zwiększyć wygodę użytkowników, stosuj te sprawdzone metody:

  • Precyzyjny link powinien prowadzić użytkowników bezpośrednio do treści, bez żadnych monitów, stron z reklamami pełnoekranowymi ani logowania. Upewnij się, że użytkownicy mogą zobaczyć zawartość aplikacji, nawet jeśli nigdy wcześniej jej nie otworzyli. Możesz wyświetlać prośby o ocenę podczas kolejnych interakcji użytkowników lub gdy otworzą oni aplikację z menu z aplikacjami.
  • Postępuj zgodnie z wytycznymi dotyczącymi projektowania opisanymi w artykule Nawigacja za pomocą przycisków Wstecz i W górę, aby aplikacja spełniała oczekiwania użytkowników dotyczące nawigacji wstecznej po wejściu do niej za pomocą precyzyjnego linku.

Testowanie precyzyjnych linków

Możesz użyć Android Debug Bridge z narzędziem menedżera aktywności (am), aby sprawdzić, czy adresy URI filtrów intencji określone dla precyzyjnych linków prowadzą do prawidłowej aktywności aplikacji. Polecenie adb możesz uruchomić na urządzeniu lub emulatorze.

Ogólna składnia testowania adresu URI filtra intencji za pomocą narzędzia adb jest następująca:

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

Na przykład to polecenie próbuje wyświetlić aktywność aplikacji docelowej powiązaną z określonym identyfikatorem URI.

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

Uwaga: podczas definiowania w trasie kolekcji typów prostych, np. **@Serializable data class Product(val colors: List)**, automatycznie generowany format adresu URL precyzyjnego linku to **basePath?colors={value**}. Jeśli spróbujesz określić identyfikator URI z wieloma parametrami zapytania (np. **basepath?colors=red&colors=blue**), musisz zmienić znaczenie znaku ampersand (np. **basepath?colors=red\&colors=blue**).

Deklaracja w pliku manifestu i skonfigurowany przez Ciebie moduł obsługi intencji określają połączenie między aplikacją a witryną oraz to, co należy zrobić z przychodzącymi linkami. Aby jednak system traktował Twoją aplikację jako domyślny program obsługi zestawu identyfikatorów URI, musisz też poprosić o zweryfikowanie tego połączenia. W artykule Weryfikowanie linków aplikacji znajdziesz informacje o tym, jak przeprowadzić tę weryfikację.

Więcej informacji o intencjach i linkach do aplikacji znajdziesz w tych materiałach: