Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Otrzymuj dynamiczne linki Firebase w aplikacji Flutter

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Aby otrzymać utworzone przez siebie Linki dynamiczne Firebase , musisz umieścić w swojej aplikacji pakiet SDK Linków dynamicznych i podczas ładowania aplikacji wywołać metodę FirebaseDynamicLinks.getDynamicLink() w celu pobrania danych z Linku dynamicznego.

  1. Zainstaluj i zainicjuj zestawy SDK Firebase dla Flutter , jeśli jeszcze tego nie zrobiłeś.

  2. W katalogu głównym projektu Flutter uruchom następujące polecenie, aby zainstalować wtyczkę Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. Jeśli tworzysz aplikację na Androida, otwórz stronę Ustawienia projektu w konsoli Firebase i upewnij się, że masz określony klucz podpisywania SHA-1. Jeśli korzystasz z łączy aplikacji, podaj również swój klucz SHA-256.

Integracja platformy

Wykonaj następujące kroki integracji platformy dla platform, dla których tworzysz aplikację.

Android

W Androidzie musisz dodać nowy filtr intencji, wyłapujący precyzyjne linki w Twojej domenie, ponieważ link dynamiczny będzie przekierowywał do Twojej domeny, jeśli Twoja aplikacja jest zainstalowana. Jest to wymagane, aby Twoja aplikacja otrzymywała dane Dynamic Link po jej zainstalowaniu/zaktualizowaniu ze Sklepu Play i jednym dotknięciu przycisku Kontynuuj. W AndroidManifest.xml :

<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:host="example.com"
        android:scheme="https"/>
</intent-filter>

Gdy użytkownicy otworzą link dynamiczny z precyzyjnym linkiem do określonego schematu i hosta, Twoja aplikacja rozpocznie działanie z tym filtrem intencji, aby obsłużyć link.

Platformy Apple

  1. Utwórz konto programisty Apple, jeśli jeszcze go nie masz.

  2. Na stronie Ustawienia projektu w konsoli Firebase upewnij się, że aplikacja na iOS jest poprawnie skonfigurowana przy użyciu identyfikatora App Store i identyfikatora zespołu.

  3. W witrynie Apple Developer utwórz profil aprowizacji dla swojej aplikacji z włączoną funkcją Associated Domain.

  4. W Xcode wykonaj następujące czynności:

    1. Otwórz swoją aplikację pod nagłówkiem TARGETS .

    2. Na stronie Podpisywanie i możliwości upewnij się, że Twój zespół jest zarejestrowany, a Twój profil aprowizacji jest ustawiony.

    3. Na stronie Podpisywanie i możliwości włącz Powiązane domeny i dodaj następujące pozycje do listy Powiązanych domen:

      applinks:example.page.link
      
    4. Na stronie Informacje dodaj typ adresu URL do projektu. W polu Schematy adresów URL ustaw identyfikator pakietu aplikacji. (Identyfikatorem może być Bundle ID lub cokolwiek innego.)

    5. Jeśli masz skonfigurowaną domenę niestandardową dla swojego projektu Firebase, dodaj prefiks adresu URL łącza dynamicznego do pliku Info.plist projektu iOS za pomocą klucza FirebaseDynamicLinksCustomDomains .

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>FirebaseDynamicLinksCustomDomains</key>
      <array>
          <string>https://custom.domain.io/path1</string>
          <string>https://custom.domain.io/path2</string>
      </array>
      
      ...other settings
      
      </dict>
      </plist>
      
    6. Opcjonalnie: wyłącz korzystanie ze schowka iOS przez pakiet SDK Dynamic Links.

      Domyślnie zestaw SDK linków dynamicznych korzysta z pulpitu do zwiększania niezawodności precyzyjnych linków po instalacji. Korzystając ze schowka, Dynamic Links może zapewnić, że gdy użytkownik otworzy Dynamic Link, ale najpierw musi zainstalować Twoją aplikację, może natychmiast przejść do oryginalnej, połączonej zawartości podczas otwierania aplikacji po raz pierwszy po instalacji.

      Wadą tego jest to, że użycie schowka wyzwala powiadomienie w systemie iOS 14 i nowszych. Tak więc, gdy użytkownicy po raz pierwszy otworzą Twoją aplikację, jeśli wklejka zawiera adres URL linku dynamicznego, zobaczą powiadomienie, że Twoja aplikacja uzyskała dostęp do schowka, co może powodować zamieszanie.

      Aby wyłączyć to zachowanie, edytuj plik Info.plist projektu Xcode i ustaw klucz FirebaseDeepLinkPasteboardRetrievalEnabled na NO .

Aby obsłużyć łącze dynamiczne w swojej aplikacji, należy wdrożyć dwa scenariusze.

Stan wypowiedziany

Jeśli aplikacja zostanie zamknięta, metoda FirebaseDynamicLinks.getInitialLink umożliwia pobranie łącza dynamicznego, które otworzyło aplikację.

Jest to żądanie asynchroniczne, dlatego warto obsłużyć łącze przed renderowaniem logiki aplikacji, takiej jak nawigator. Na przykład możesz obsłużyć to w main funkcji:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  runApp(MyApp(initialLink));
}

W logice aplikacji możesz wtedy sprawdzić, czy łącze zostało obsłużone i wykonać akcję, na przykład:

if (initialLink != null) {
  final Uri deepLink = initialLink.link;
  // Example of using the dynamic link to push the user to a different screen
  Navigator.pushNamed(context, deepLink.path);
}

Alternatywnie, jeśli chcesz określić, czy do otwarcia aplikacji użyto dokładnego łącza dynamicznego, przekaż go do metody getDynamicLink :

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

Stan tła / pierwszego planu

Gdy aplikacja jest otwarta lub działa w tle, możesz nasłuchiwać zdarzeń Dynamic Links za pomocą obsługi strumienia. Metoda pobierająca FirebaseDynamicLinks.onLink zwraca Stream zawierający PendingDynamicLinkData :

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});