Aby otrzymać utworzone linki dynamiczne Firebase,
musisz umieścić w aplikacji pakiet SDK Linków dynamicznych i wywołać metodę
Metoda FirebaseDynamicLinks.getDynamicLink()
, gdy aplikacja wczytuje się na
uzyskać dane przekazywane w linku dynamicznym.
Konfiguracja Firebase i pakietu SDK Linków dynamicznych
Zainstaluj i zainicjuj pakiety SDK Firebase na potrzeby Flutter, jeśli: jeszcze tego nie zrobiliśmy.
W katalogu głównym projektu Flutter uruchom to polecenie aby zainstalować wtyczkę Linków dynamicznych:
flutter pub add firebase_dynamic_links
Jeśli tworzysz aplikację na Androida, otwórz Ustawienia projektu. w konsoli Firebase i upewnij się, że został zdefiniowany SHA-1. klucz podpisywania. Jeśli korzystasz z linków aplikacji, podaj też klucz SHA-256.
Integracja platformy
Wykonaj te czynności związane z integracją platformy dla używanej przez Ciebie platformy przy tworzeniu aplikacji.
Android
Na Androidzie musisz dodać nowy filtr intencji, przechwytujący precyzyjne linki do swojej domeny,
Link dynamiczny przekierowuje do Twojej domeny, jeśli Twoja aplikacja jest zainstalowana. Jest to wymagane, aby aplikacja mogła:
otrzymują dane linku dynamicznego po ich zainstalowaniu lub zaktualizowaniu ze Sklepu Play oraz kliknięciem przycisku
Przycisk Dalej. W aplikacji 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 schematu i hosta określonego przez Ciebie, aplikacja rozpocząć aktywność za pomocą tego filtra intencji, aby obsłużyć link.
Następnym krokiem jest sprawdzenie, czy odcisk cyfrowy SHA-256 certyfikatu podpisywania jest zarejestrowany w konsoli Firebase. dla danej aplikacji. Więcej informacji o pobieraniu odcisku palca SHA-256 znajdziesz w Authenticating Your Client (Uwierzytelnianie klienta).
Platformy Apple
Tworzenie konta dewelopera Apple jeśli jeszcze jej nie masz.
W ustawieniach projektu w konsoli Firebase, sprawdź, czy aplikacja na iOS skonfigurowane za pomocą Twojego identyfikatora App Store i identyfikatora zespołu.
Na stronie dla deweloperów Apple utwórz profil obsługi administracyjnej aplikacji. z włączoną funkcją Powiązana domena.
W Xcode wykonaj te czynności:
Otwórz aplikację pod nagłówkiem CELE.
W sekcji umiejętności, sprawdź, czy Twój zespół jest zarejestrowany. profil obsługi administracyjnej został skonfigurowany.
W sekcji na stronie „Możliwości”, włącz Powiązane domeny oraz dodaj następujące rekordy do listy powiązanych domen (zastąp przykład swoją domeną):
applinks:example.page.link
Na stronie Informacje dodaj do projektu typ adresu URL. Ustaw schematy adresów URL do identyfikatora pakietu aplikacji. (identyfikatorem może być
Bundle ID
lub co tylko chcesz).Jeśli dla projektu Firebase masz skonfigurowaną domenę niestandardową, dodaj atrybut Prefiks adresu URL linku dynamicznego do pliku
Info.plist
projektu iOS za pomocą klawiszaFirebaseDynamicLinksCustomDomains
.<?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>
Opcjonalnie: wyłącz możliwość korzystania przez pakiet SDK Linków dynamicznych z paska do iOS.
Domyślnie pakiet Dynamic Links SDK korzysta z polecanego tekstu, aby ulepszać niezawodności precyzyjnych linków po instalacji. Przy użyciu wklejania Dzięki linkom, gdy użytkownik otworzy link dynamiczny, zainstalować aplikację, użytkownik może od razu przejść do oryginalnej wersji treści, do których prowadzą linki przy pierwszym otwarciu aplikacji. instalacji.
Wadą tego rozwiązania jest fakt, że korzystanie ze schowka powoduje na urządzeniach z iOS 14 i nowszych. Gdy użytkownik pierwszy raz otworzy jeśli wklejony adres URL zawiera URL linku dynamicznego, wyświetli się powiadomienie o uzyskaniu przez aplikację dostępu do schowka, co może spowodować zdezorientowanie.
Aby wyłączyć to zachowanie, edytuj plik
Info.plist
projektu Xcode i ustaw klawiszFirebaseDeepLinkPasteboardRetrievalEnabled
naNO
.
Obsługa precyzyjnych linków
Obsługa linku dynamicznego w aplikacji wymaga wdrożenia dwóch scenariuszy.
Stan zakończenia
Skonfiguruj te metody:
FirebaseDynamicLinks.getInitialLink
– zwracaFuture<PendingDynamicLinkData?>
FirebaseDynamicLinks.onLink
– moduł obsługi zdarzeń, który zwraca elementStream
zawierającyPendingDynamicLinkData?
.
Gdy działanie zostanie zakończone, Android zawsze otrzyma link przez FirebaseDynamicLinks.getInitialLink
.
ale w iOS nie ma gwarancji. Dlatego warto skonfigurować je w takiej kolejności:
aby upewnić się, że aplikacja otrzyma link:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
// Check if you received the link via `getInitialLink` first
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
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);
}
FirebaseDynamicLinks.instance.onLink.listen(
(pendingDynamicLinkData) {
// Set up the `onLink` event listener next as it may be received here
if (pendingDynamicLinkData != null) {
final Uri deepLink = pendingDynamicLinkData.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
},
);
runApp(MyApp(initialLink));
}
W logice aplikacji możesz sprawdzić, czy link został obsłużony, i wykonać działanie, 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);
}
Tło / Stan pierwszego planu
Gdy aplikacja jest otwarta lub w tle, używaj aplikacji FirebaseDynamicLinks.onLink
getter:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
Jeśli chcesz sprawdzić, czy do otwarcia aplikacji użyto konkretnego linku dynamicznego, przekaż go
metodę getDynamicLink
:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Testowanie linku dynamicznego na platformie iOS
Aby przetestować link dynamiczny na urządzeniu z iOS, musisz użyć rzeczywistego urządzenia. Musisz też uruchomić aplikację w trybie publikowania (tj. flutter run --release
).
w przypadku testowania linku dynamicznego ze stanu aplikacji, która została zakończona (tj. aplikacja została zamknięta przez przesunięcie).