Migracja z linków dynamicznych na linki aplikacji i linki uniwersalne

Ten przewodnik po migracji koncentruje się na korzystaniu z linków aplikacji i uniwersalnych linków oraz na opcjonalnie korzystaniu z Hostingu Firebase do hostowania plików powiązań z witryną aplikacji.

Ta migracja zastępuje te funkcje Linków dynamicznych Firebase:

Cecha Linki dynamiczne Firebase Linki aplikacji / linki uniwersalne
Kierowanie użytkowników do sklepu odpowiedniego dla danego urządzenia za pomocą jednego kliknięcia linku
Zapewnij użytkownikom kontynuację po pobraniu i zainstalowaniu aplikacji za pomocą odroczonego precyzyjnego linku
Zapewnij użytkownikom wrażenia kontekstowe dzięki treściom z precyzyjnymi linkami (jeśli są już zainstalowane)
Przesyłanie danych analitycznych związanych ze zdarzeniami kliknięcia linku dynamicznego
Umożliwia tworzenie krótkich adresów URL linków

Jeśli do przeprowadzenia migracji potrzebujesz innych funkcji linków dynamicznych Firebase, które nie są obsługiwane w tym przewodniku, zapoznaj się z innymi scenariuszami migracji w dokumentacji wycofywania linków dynamicznych – najczęstsze pytania.

Załóżmy, że masz link dynamiczny Firebase, który wygląda tak:

Przykład linku dynamicznego
Nazwa połączenia Witamy w example.com
Precyzyjny link https://example.web.app/welcome
Aplikacja na Androida com.example.android
Aplikacja Apple com.example.ios
Długi link dynamiczny https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Krótki link dynamiczny https://example.page.link/m9Mm

Ten przewodnik po migracji ma zastąpić Linki dynamiczne Firebase w ten sposób:

https://example.page.link/m9Mm

W przypadku precyzyjnych linków aplikacji i uniwersalnych linków wygląda to tak:

https://your-project-domain.web.app/welcome

Pamiętaj, że precyzyjny link aplikacji lub uniwersalny link zapewni użytkownikom te informacje:

  • Precyzyjny link, który użytkownik może kliknąć, aby otworzyć aplikację, gdy jest już zainstalowana
  • to ciąg dalszy ścieżki użytkownika, który prowadzi go do określonej części aplikacji po jej uruchomieniu.

Jednak precyzyjny link aplikacji lub precyzyjny link nie będzie dawać użytkownikom takich efektów (które wcześniej dotyczyły Linków dynamicznych Firebase):

  • Kierowanie użytkowników do sklepu, w którym mogą pobrać i zainstalować aplikację na danym urządzeniu
  • zapewnia kontynuację ścieżki użytkownika po pobraniu, zainstalowaniu i otwarciu aplikacji,

Zwróć uwagę na różnice w działaniu i funkcjonalności tych linków aplikacji i linków uniwersalnych w porównaniu z Linkami dynamicznymi Firebase w tabeli powyżej.

Zanim zaczniesz

Linki dynamiczne Firebase wykorzystują linki aplikacji (na Androidzie) i linki uniwersalne (na iOS) we własnej implementacji bazowej, aby umożliwić działanie precyzyjnych linków już po zainstalowaniu aplikacji.

Z tego przewodnika dowiesz się, jak utworzyć własne linki do aplikacji i uniwersalne linki przy użyciu Hostingu Firebase, aby zastąpić tę część funkcji zapewnianej przez Linki dynamiczne Firebase podczas przenoszenia Linków dynamicznych Firebase do nowego rozwiązania do migracji linków aplikacji lub linków uniwersalnych.

Aby przeprowadzić migrację, musisz podać te informacje:

  • Linki dynamiczne Firebase, które chcesz przenieść
  • Parametry adresu URL precyzyjnych linków uwzględnione w linkach dynamicznych
  • Domena, której planujesz użyć zamiast poprzedniej domeny Linków dynamicznych Firebase (w stosownych przypadkach)

Aby wyeksportować istniejące metadane linków i uzyskać informacje wymienione powyżej, możesz skorzystać z przewodnika po eksportowaniu metadanych linków dynamicznych.

Omówienie etapów migracji

  1. Udostępnij nową domenę (jeśli jeszcze jej nie masz), aby hostować pliki konfiguracji linku aplikacji lub uniwersalnego linku za pomocą Hostingu Firebase.

  2. Utwórz pliki konfiguracji linku aplikacji lub uniwersalnego linku i przechowuj je w swojej domenie hostingowej.

  3. Utwórz nowe linki aplikacji lub linki uniwersalne pasujące do schematu precyzyjnych linków używanego w Linkach dynamicznych Firebase.

  4. Aby otrzymywać precyzyjne linki, zaktualizuj aplikacje oraz kod aplikacji na Androida lub iOS.

  5. Testowanie integracji linków aplikacji i uniwersalnych linków.

  6. Zastąp opublikowane lub udostępnione linki dynamiczne Firebase linkami aplikacji i uniwersalnymi linkami.

Pierwszy krok będzie wspólny dla obu etapów migracji linków aplikacji i uniwersalnych linków. Pozostałe wartości będą się różnić w zależności od platformy, dlatego przejdź do sekcji przewodnika poniżej w zależności od platformy, którą chcesz przenieść w pierwszej kolejności.

Wybierz domenę

Pierwszym krokiem jest wybór domeny, której chcesz użyć w linkach aplikacji lub linkach uniwersalnych. Ta domena będzie używana w nowych linkach, które udostępnisz użytkownikom.

Jeśli korzystasz z Hostingu Firebase, subdomeny projektu w formacie your-project-domain.web.app lub your-project-domain.firebaseapp.com zostaną udostępnione automatycznie i bezpłatnie. Opcjonalnie możesz też używać domeny niestandardowej z Hostingiem Firebase lub bez niego do hostowania plików konfiguracji linku aplikacji lub uniwersalnego linku.

Konfigurowanie Hostingu Firebase

Musisz teraz skonfigurować instancję Hostingu Firebase.

Po skonfigurowaniu instancji Hostingu Firebase będziesz mieć domenę podobną do your-project-domain.web.app lub własną domenę, jeśli wolisz.

Aby korzystać z linków aplikacji, musisz hostować plik konfiguracji, który ułatwia utworzenie bezpiecznego powiązania między domeną używaną w linkach a Twoją aplikacją. W przypadku linków aplikacji jest to plik assetlinks.json.

Etapy tworzenia i hostowania pliku assetlinks.json

Plik assetlinks.json umożliwia nam udostępnienie listy autoryzowanych aplikacji, które mogą obsługiwać zawartość domeny internetowej, której będziemy używać w linkach aplikacji. Sam plik assetlinks.json musi być hostowany w katalogu głównym domeny internetowej pod ścieżką: /.well-known.

Aby dokończyć konfigurację:

  1. Utwórz folder .well-known w folderze publicznym w katalogu głównym Hostingu Firebase.

  2. Utwórz plik o nazwie assetlinks.json w folderze .well-known.

  3. Skopiuj poniższą treść do pliku assetlinks.json, zwracając uwagę na znaczenie poszczególnych pól:

    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target": {
        "namespace": "android_app",
        "package_name": "com.example.android",
        "sha256_cert_fingerprints":
          ["01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF"]
      }
    }]
    
    • namespace – dotyczy nazwy aplikacji, którą chcesz przesłać;
    • package_name – odnosi się do identyfikatora aplikacji zadeklarowanego w pliku build.gradle aplikacji.
    • sha256_cert_fingerprints – oznacza odcisk cyfrowy SHA256 pliku magazynu kluczy używanego do podpisywania aplikacji.

    Do wygenerowania rekordu sha256_cert_fingerprints na potrzeby debugowania możesz użyć pliku debug.keystore używanego w Android Studio. Znajdziesz go pod adresem /Users/<username>/.android/debug.keystore na urządzeniach z systemem macOS i Linux oraz C:\Users\<username>\.android\debug.keystore w systemie Windows.

    Z tego magazynu kluczy możesz pobrać wartość SHA256 za pomocą narzędzia do obsługi kluczy.

    Więcej informacji o tym, jak to zrobić, znajdziesz w tej sekcji w dokumentacji dotyczącej linków aplikacji.

    Możesz też użyć Asystenta linków aplikacji w Android Studio, aby wygenerować zawartość pliku assetlinks.json i skonfigurować aplikację do obsługi linków aplikacji.

  4. Zaktualizuj plik firebase.json, aby go zindeksować na potrzeby hostingu.

    "headers": [
      {
        "source": "/.well-known/assetlinks.json",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. Po utworzeniu pliku assetlinks.json uruchom polecenie firebase deploy, aby hostować zmiany.

    Aby uruchomić powyższe polecenie wdrażania, musisz mieć zainstalowany interfejs wiersza poleceń Firebase.

    firebase deploy --only hosting
    
  6. Zweryfikuj plik assetlinks.json na stronie https://your-project-domain.web.app/.well-known/assetlinks.json

W tym kroku ponownie utworzysz precyzyjne linki z Linków dynamicznych Firebase, używając zwykłych adresów URL precyzyjnych linków pasujących do nowej domeny utworzonej dla linków do aplikacji.

Załóżmy na przykład, że masz taki link dynamiczny Firebase:

Przykład linku dynamicznego
Nazwa połączenia Witamy w example.com
Precyzyjny link https://example.web.app/welcome
Aplikacja na Androida com.example.android
Aplikacja Apple com.example.ios
Długi link dynamiczny https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Krótki link dynamiczny https://example.page.link/m9Mm

W tym przypadku wyodrębnisz parametr precyzyjnego linku, np. https://example.web.app/welcome, i użyjesz go jako parametru linku aplikacji w swojej aplikacji.

Musisz powtórzyć ten proces w przypadku każdego linku dynamicznego Firebase, do którego chcesz przejść za pomocą linków aplikacji lub linków uniwersalnych, a następnie powielić użyty schemat precyzyjnych linków.

Spójrzmy np. na taki zestaw skróconych linków dynamicznych Firebase, parametrów precyzyjnych linków i przeniesionych wartości precyzyjnych linków:

Krótki link Parametr precyzyjnego linku Przeniesiony precyzyjny link
twojaaplikacja.strona.link/witamy https://example.com/welcome yourapp.web.app/welcome
twojaaplikacja.strona.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
twojaaplikacja.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

Następnie musisz zastąpić wszystkie opublikowane lub udostępnione wystąpienia linków dynamicznych Firebase nowymi precyzyjnymi linkami. Dzięki temu użytkownicy będą je klikać zamiast poprzednich linków dynamicznych Firebase.

Następnym krokiem po wybraniu domeny, wybraniu schematu precyzyjnych linków i przeniesieniu Linków dynamicznych Firebase do linków aplikacji jest zaktualizowanie aplikacji na Androida i jej kodu, tak aby otrzymywały nowe precyzyjne linki.

Zalecamy zapoznanie się z pełną dokumentacją dotyczącą linków aplikacji lub przewodnikiem po Android Studio dotyczącym konfigurowania aplikacji pod kątem obsługi precyzyjnych linków. Najważniejsze czynności to:

  1. Przez określenie, które działania powinny obsługiwać odpowiednie precyzyjne linki
  2. dodanie filtra intencji dla tych działań w pliku AndroidManifest.xml,
  3. Otrzymywanie precyzyjnego linku w kodzie aplikacji aktywności

Załóżmy, że chcesz użyć elementu MainActivity do obsługi niektórych precyzyjnych linków. Aby to zrobić, w pliku AndroidManifest.xml musisz dodać do elementu MainActivity ten filtr intencji:

<activity android:name=".MainActivity"
   android:exported="true">
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
   <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:host="example.web.app" android:scheme="http"
           android:pathPrefix="/welcome" />
       <data android:host="example.web.app" android:scheme="https"
           android:pathPrefix="/welcome" />
   </intent-filter>
</activity>

W tym kroku określasz, że MainActivity jest miejscem docelowym do obsługi precyzyjnych linków z domeny wxample.web.app, która zawiera prefiks ścieżki /welcome. Pamiętaj, że musisz też określić atrybut android:autoVerify="true", który umożliwia oznaczenie aplikacji jako domyślnego modułu obsługi tego typu linku.

Na koniec musisz dodać kod w MainActivity, by pobierać dane precyzyjnych linków i używać go do obsługi precyzyjnych linków w Twojej aplikacji. Przypomina to logikę zakodowaną w aplikacji po integracji z Linkami dynamicznymi Firebase.

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

  val  data: Uri? = intent?.data

  val toast = Toast.makeText(this, data, duration)
  toast.show()
}

Możesz testować utworzone linki aplikacji, uruchamiając aplikację na urządzeniu fizycznym lub w emulatorze Androida.

Musisz utworzyć klikalny link w domenie skonfigurowanej dla linków aplikacji, a następnie kliknąć ten link, aby upewnić się, że otwiera się w aplikacji i prowadzi do odpowiedniego działania.

Możesz też przetestować integrację linków aplikacji za pomocą Asystenta linków aplikacji w Android Studio lub użyć tego polecenia w przypadku skonfigurowanego adresu URL linku aplikacji, aby mieć pewność, że uruchamia ono pasującą aktywność:

adb shell am start -a android.intent.action.VIEW -d <your_deep_link_url>

Ostatnim krokiem migracji będzie zastąpienie opublikowanych lub udostępnionych linków dynamicznych Firebase linkami do aplikacji w miarę możliwości i dalsze korzystanie z linków aplikacji.

Sposób wykonania tego kroku zależy od miejsca i sposobu publikowania linków dynamicznych Firebase. Jeśli jednak chcesz sprawdzić, które z nich występują, możesz wyeksportować istniejące metadane Linków dynamicznych Firebase. Zapoznaj się z przewodnikiem po eksportowaniu metadanych linków dynamicznych.

Aby korzystać z linków uniwersalnych, musisz hostować plik konfiguracji, który pomoże w ustanowieniu bezpiecznego powiązania między domeną używaną w linkach a Twoją aplikacją. W przypadku linków uniwersalnych jest to plik apple-app-site-association (nazywany też plikiem AASA).

Procedura tworzenia i hostowania pliku apple-app-site-association

Plik AASA umożliwia nam udostępnienie listy autoryzowanych aplikacji, które mogą obsługiwać treści z domeny internetowej, której będziemy używać w linkach uniwersalnych. Sam plik AASA musi być hostowany w katalogu głównym domeny internetowej pod ścieżką: /.well-known.

Aby dokończyć konfigurację:

  1. Utwórz folder „.well-known” w folderze publicznym w katalogu głównym Hostingu Firebase.

  2. Utwórz plik o nazwie „apple-app-site-association” w folderze „.well-known”.

  3. Skopiuj poniższą treść do pliku apple-app-site-association, zwracając uwagę na znaczenie poszczególnych pól:

    {
      "applinks": {
        "apps": [],
        "details": [
          {
            "appId": "$TEAM_ID.com.firebase.UniversalLinks",
            "paths": [
              "NOT /_/*",
              "/*"
            ]
          }
        ]
      }
    }
    
    • $team_ID.BundleId – w pełni kwalifikowana nazwa aplikacji autoryzowana do obsługi linków.
  4. Zaktualizuj plik firebase.json, aby go zindeksować na potrzeby hostingu.

    "headers": [
      {
        "source": "/.well-known/apple-app-site-association",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. Plik AASA jest już gotowy, więc możemy wdrożyć Firebase, aby hostować zmiany.

  6. Zweryfikuj plik AASA na stronie https://your-project-domain.web.app/.well-known/app-app-site-association

W tym kroku ponownie utworzysz precyzyjne linki z Linków dynamicznych Firebase, używając zwykłych adresów URL precyzyjnych linków pasujących do nowej domeny utworzonej na potrzeby uniwersalnych linków.

Załóżmy na przykład, że masz taki link dynamiczny Firebase:

Przykład linku dynamicznego
Nazwa połączenia Witamy w example.com
Precyzyjny link https://example.web.app/welcome
Aplikacja na Androida com.example.android
Aplikacja Apple com.example.ios
Długi link dynamiczny https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
Krótki link dynamiczny https://example.page.link/m9Mm

W tym przypadku wyodrębnisz parametr precyzyjnego linku, czyli https://example.web.app/welcome, i użyjesz go jako parametru uniwersalnego linku w swojej aplikacji.

Musisz powtórzyć ten proces w przypadku każdego linku dynamicznego Firebase, do którego chcesz przejść za pomocą linków aplikacji lub linków uniwersalnych, a następnie powielić użyty schemat precyzyjnych linków.

Spójrzmy np. na taki zestaw skróconych linków dynamicznych Firebase, parametrów precyzyjnych linków i przeniesionych wartości precyzyjnych linków:

Krótki link Parametr precyzyjnego linku Przeniesiony precyzyjny link
twojaaplikacja.strona.link/witamy https://example.com/welcome yourapp.web.app/welcome
twojaaplikacja.strona.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
twojaaplikacja.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

Następnie konieczne będzie zastąpienie wszystkich opublikowanych lub udostępnionych linków dynamicznych Firebase nowo przeniesionych precyzyjnych linków. Dzięki temu użytkownicy będą je klikać zamiast dotychczasowych linków dynamicznych Firebase.

Następnym krokiem po wybraniu domeny, wybraniu schematu precyzyjnych linków i przeniesieniu Linków dynamicznych Firebase do uniwersalnych linków jest zaktualizowanie kodu aplikacji na iOS i aplikacji, tak aby otrzymywały nowe precyzyjne linki.

Zalecamy skorzystanie z pełnej dokumentacji dotyczącej uniwersalnych linków dotyczących konfigurowania aplikacji pod kątem obsługi precyzyjnych linków. Najważniejsze czynności to:

  1. Zaktualizuj konfigurację projektu, aby umożliwić aplikacji obsługę precyzyjnych linków z nowo utworzonej domeny

  2. Odbierz precyzyjny link w kodzie aplikacji

Aby zaktualizować konfigurację projektu i umożliwić aplikacji obsługę precyzyjnych linków, musisz dodać do projektu dodatkową powiązaną domenę w xCode dla domeny, której zamierzasz używać do hostowania pliku powiązanego z aplikacją Apple.

W tym celu:

  1. Otwieram Xcode
  2. Wybieranie projektu w nawigatorze plików
  3. Przechodzenie do karty Podpisywanie i możliwości w ustawieniach projektu
  4. Przejdź w dół do sekcji Powiązane domeny.
  5. Klika przycisk +, aby dodać do projektu dodatkową domenę w formacie „applinks:”.

Na koniec musisz zaktualizować kod aplikacji, aby otrzymywać przychodzące precyzyjne linki.

W tym celu zaktualizuj najpierw plik AppDelegate.swift w taki sposób, aby odpowiadał na link uniwersalny, dodając ten kod:

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  AppDelegate.showReceivedUrl(userActivity: userActivity);
  return true
}

static func showReceivedUrl(userActivity: NSUserActivity) {
  if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
    let url = userActivity.webpageURL!
    print(url.absoluteString)
}

Powyższy kod zastępuje metodę wywołania zwrotnego uniwersalnego linku i rejestruje adres URL precyzyjnego linku, jeśli występuje.

Teraz wywołamy tę samą metodę showReceivedUrl z klasy SceneDelegates, ponieważ jeśli aplikacja jest już otwarta przed kliknięciem linku uniwersalnego przez użytkownika, wywoływane będzie uniwersalne wywołanie zwrotne linku SceneDelegate.

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
  AppDelegate.showReceivedUrl(userActivity: userActivity)
}

Możesz przetestować utworzone linki uniwersalne, uruchamiając aplikację na urządzeniu fizycznym lub symulatorze.

Musisz utworzyć klikalny link w domenie skonfigurowanej dla linków uniwersalnych, a następnie kliknąć ten link, aby upewnić się, że otwiera się w aplikacji i kieruje do odpowiedniego ekranu.

Obsługa banerów inteligentnych w aplikacjach

Zdecydowanie zalecamy korzystanie z banerów aplikacji inteligentnych, aby zapewnić użytkownikom podobne wrażenia co w przypadku Linków dynamicznych Firebase.

Dzięki inteligentnym banerom użytkownicy zostaną przekierowani do sklepu App Store, gdzie będą mogli znaleźć Twoją aplikację, jeśli nie została ona jeszcze zainstalowana na ich urządzeniu. Możesz też opcjonalnie skonfigurować parametr, który będzie przekazywany do Twojej aplikacji po jej pobraniu i zainstalowaniu, aby umożliwić użytkownikom kontynuowanie pracy. Jeśli Twoja aplikacja jest już zainstalowana, uruchomi przekazywanie parametru do aplikacji, by ułatwić użytkownikowi przejście do odpowiednich treści na podstawie klikniętego banera inteligentnego aplikacji.

Ostatnim krokiem migracji będzie zastąpienie opublikowanych lub udostępnionych linków dynamicznych Firebase uniwersalnymi linkami, gdy tylko będzie to możliwe, i dalsze korzystanie z uniwersalnych linków.

Sposób wykonania tego kroku zależy od miejsca i sposobu publikowania linków dynamicznych Firebase.

Aby ułatwić śledzenie istniejących Linków dynamicznych Firebase, które mają zostać przeniesione, opublikujemy przewodnik po eksportowaniu metadanych krótkich linków z Linków dynamicznych Firebase. Więcej informacji znajdziesz w dokumencie na temat wycofywania linków dynamicznych.