Aby otrzymać Firebase Dynamic Links, które
utworzonej przez siebie, musisz umieścić w aplikacji pakiet Dynamic Links SDK i wywołać metodę
handleUniversalLink:
i dynamicLinkFromCustomSchemeURL:
podczas wczytywania aplikacji, aby pobrać dane przekazywane w Dynamic Link.
Wymagania wstępne
Zanim zaczniesz, dodaj Firebase do swojego systemu iOS projekt.
Skonfiguruj Firebase i pakiet SDK Dynamic Links
Użyj menedżera pakietów Swift, aby zainstalować zależności Firebase i nimi zarządzać.
- W Xcode po otwarciu projektu aplikacji przejdź do File > Dodaj pakiety.
- Gdy pojawi się prośba, dodaj repozytorium SDK platform Apple Platform SDK Firebase:
- Wybierz bibliotekę Dynamic Links.
- Dodaj flagę
-ObjC
do sekcji Inne flagi łączące w ustawieniach kompilacji celu. - Aby zapewnić optymalne działanie usługi Dynamic Links, zalecamy włączam Google Analytics w projekcie Firebase i dodając do aplikacji pakiet SDK Firebase dla Google Analytics. Dostępne opcje wybrać bibliotekę bez zbierania danych IDFA lub z zbieraniem tych danych.
- Po zakończeniu Xcode automatycznie rozpocznie rozpoznawanie i pobieranie lub zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
Teraz wykonaj kilka czynności konfiguracyjnych:
- W konsoli Firebase otwórz Dynamic Links . Jeśli pojawi się taka prośba, zaakceptuj warunki korzystania z usługi.
-
Upewnij się, że identyfikator aplikacji w sklepie App Store oraz jej prefiks to w ustawieniach aplikacji. Aby wyświetlić i edytować ustawienia aplikacji, wejdź na do właściwości Twojego projektu Firebase stronę Ustawienia i wybierz aplikację na iOS.
Możesz sprawdzić, czy Twój projekt Firebase jest prawidłowo skonfigurowany do używania Dynamic Links w aplikacji na iOS, otwierając ten URL:
https://your_dynamic_links_domain/apple-app-site-association
Jeśli Twoja aplikacja jest połączona, plik
apple-app-site-association
zawiera odwołanie do prefiksu identyfikatora aplikacji i identyfikatora pakietu aplikacji. Przykład:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Jeśli pole
details
jest puste, sprawdź, czy wpisano prefiks identyfikatora aplikacji. Pamiętaj, że prefiks identyfikatora aplikacji może nie być taki sam jak identyfikator zespołu. -
Opcjonalnie: wyłącz używanie iOS przez pakiet SDK Dynamic Links i wklejenie do tablicy.
Domyślnie pakiet SDK Dynamic Links korzysta z edytora, aby ulepszyć niezawodności precyzyjnych linków po instalacji. Przy użyciu wklejenia Dynamic Links mogą się upewnić, że gdy użytkownik otworzy Dynamic Link, ale będzie musiał zainstalować aplikacji, użytkownik może od razu przejść do pierwotnie uruchomienia aplikacji po raz pierwszy po jej zainstalowaniu.
Wadą tego rozwiązania jest fakt, że korzystanie ze schowka powoduje na urządzeniach z iOS 14 i nowszych. Gdy więc pierwszy raz użytkownicy otworzą aplikację, jeśli wklejony adres URL zawiera adres URL, użytkownik zobaczy powiadomienie o tym, aplikacja uzyskała dostęp do schowka, co mogło powodować dezorientację.
Aby wyłączyć to zachowanie, zmodyfikuj parametr
Info.plist
i ustaw wartośćFirebaseDeepLinkPasteboardRetrievalEnabled
klawisz doNO
Otwórz Dynamic Links w aplikacji
- Na karcie Info (Informacje) w projekcie Xcode swojej aplikacji utwórz nowy obiekt. Typ adresu URL dla Dynamic Links. Ustaw parametr Identyfikator na niepowtarzalną wartość, a pola Schemat adresu URL, na identyfikator pakietu, który jest domyślnym schematem adresu URL używanym przez Dynamic Links.
- Na karcie Capabilities (Możliwości) w projekcie Xcode aplikacji
włącz powiązane domeny i dodaj następujące elementy do powiązanych
Lista domen:
applinks:your_dynamic_links_domain
- Jeśli chcesz otrzymać Dynamic Links z
full-custom domain (w pełni niestandardowa domena)
pliku
Info.plist
projektu Xcode, utwórz klucz o nazwieFirebaseDynamicLinksCustomDomains
i ustaw go na Dynamic Links prefiksy adresu URL. Przykład:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Zaimportuj moduł
FirebaseCore
doUIApplicationDelegate
, jak i wszelkie inne Moduły Firebase używane przez przedstawiciela aplikacji. Aby na przykład użyć atrybutów Cloud Firestore i Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Skonfiguruj
FirebaseApp
współdzielonej instancji w uprawnieniach przedstawiciela aplikacji Metodaapplication(_:didFinishLaunchingWithOptions:)
:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Jeśli używasz SwiftUI, musisz utworzyć i dołączyć przedstawiciela aplikacji.
do struktury
App
za pomocąUIApplicationDelegateAdaptor
lubNSApplicationDelegateAdaptor
Musisz też wyłączyć przełączanie przekazywania dostępu do aplikacji. Dla: więcej informacji znajdziesz w instrukcjach SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Następnie w metodzie
application:continueUserActivity:restorationHandler:
obsługa linków otrzymanych jako Linki uniwersalne, jeśli aplikacja jest już zainstalowana:Swift
Uwaga: ta usługa nie jest dostępna na urządzeniach docelowych z systemami macOS, Mac Catalyst, tvOS i watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Objective-C
Uwaga: ta usługa nie jest dostępna na urządzeniach docelowych z systemami macOS, Mac Catalyst, tvOS i watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; }
- Wreszcie w linkach nickujących w usłudze
application:openURL:options:
ze schematu niestandardowego adresu URL aplikacji. Ta metoda jest wywoływana, gdy aplikacja jest otwierana po raz pierwszy po instalacji.Jeśli przy pierwszym uruchomieniu aplikacji nie uda się znaleźć metody Dynamic Link, zostanie ona wywołana z użyciem metody Wartość
url
w tabeliDynamicLink
została ustawiona nanil
, co oznacza, że pakiet SDK nie udało się znaleźć pasującego oczekującego elementu Dynamic Link.Swift
Uwaga: ta usługa nie jest dostępna na urządzeniach docelowych z systemami macOS, Mac Catalyst, tvOS i watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
Objective-C
Uwaga: ta usługa nie jest dostępna na urządzeniach docelowych z systemami macOS, Mac Catalyst, tvOS i watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }