Za pomocą interfejsu Firebase Dynamic Links Builder API możesz tworzyć krótkie i długie Dynamic Links. Ten interfejs API przyjmuje długi Dynamic Link lub obiekt zawierający Dynamic Link parametry i zwraca adresy URL takie jak w tych przykładach:
https://example.com/link/WXYZ https://example.page.link/WXYZ
Wymagania wstępne
Zanim zaczniesz, upewnij się, że dodasz Firebase do projektu na iOS.
Konfigurowanie Firebase i pakietu SDK Dynamic Links
Do instalacji zależności Firebase i do zarządzania nimi możesz używać menedżera pakietów Swift.
- Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (Plik > Dodaj pakiety).
- Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Dynamic Links.
- Dodaj flagę
-ObjCdo sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji celu. - Aby zapewnić optymalne działanie Dynamic Links, zalecamy włączenie Google Analytics w projekcie Firebase i dodanie do aplikacji [pakietu] SDK Firebase dla Google Analytics. Możesz wybrać bibliotekę bez zbierania IDFA lub z jego zbieraniem. Więcej informacji znajdziesz w odpowiedziach na najczęstsze pytania dotyczące najnowszej organizacji modułów w Google Analytics dla Firebase SDK.
- Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać Twoje zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
Teraz wykonaj kilka czynności konfiguracyjnych:
- W konsoli Firebase otwórz sekcję Dynamic Links.
-
Jeśli nie masz jeszcze zaakceptowanych warunków korzystania z usługi i nie masz ustawionego prefiksu URI dla Dynamic Links, zrób to, gdy pojawi się prośba.
Jeśli masz już prefiks identyfikatora URI Dynamic Links, zapisz go. Będzie on potrzebny podczas programowego tworzenia Dynamic Links.

- Zalecane: określ wzorce adresów URL dozwolone w precyzyjnych linkach i linkach zastępczych. Dzięki temu uniemożliwisz nieupoważnionym osobom tworzenie Dynamic Links, które przekierowują z Twojej domeny do witryn, nad którymi nie masz kontroli. Zobacz Zezwalanie na określone wzorce adresów URL.
-
Upewnij się, że w ustawieniach aplikacji podano identyfikator aplikacji w App Store i prefiks identyfikatora aplikacji. Aby wyświetlić i edytować ustawienia aplikacji, otwórz stronę Ustawienia projektu Firebase i wybierz aplikację na iOS.
Otwórz plik
apple-app-site-associationhostowany w domenie Dynamic Links, aby potwierdzić, że projekt w Firebase jest prawidłowo skonfigurowany do używania Dynamic Links w aplikacji na iOS. Firebase będzie udostępniać plikapple-app-site-associationz katalogu głównego domeny oraz z podkatalogu.well-known. Przykład:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-associationJeśli aplikacja jest połączona, plik
apple-app-site-associationzawiera odniesienie do prefiksu identyfikatora aplikacji i identyfikatora pakietu. Przykład:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}Jeśli właściwość
detailsjest pusta, sprawdź, czy podano prefiks identyfikatora aplikacji. Pamiętaj, że prefiks identyfikatora aplikacji może być inny niż identyfikator zespołu.
Dodaj Firebase do swojej aplikacji
- Zaimportuj moduł
FirebaseCorewUIApplicationDelegate, a także inne moduły Firebase, których używa delegat aplikacji. Aby na przykład używać 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
FirebaseAppinstancję współdzieloną w metodzieapplication(_:didFinishLaunchingWithOptions:)delegata aplikacji: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ć delegata aplikacji i dołączyć go
do struktury
Appza pomocąUIApplicationDelegateAdaptorlubNSApplicationDelegateAdaptor. Musisz też wyłączyć swizzling delegata aplikacji. Więcej informacji znajdziesz w instrukcjach dotyczących SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Korzystanie z konsoli Firebase
Jeśli chcesz wygenerować pojedynczy Dynamic Link, na potrzeby testowania lub aby zespół marketingowy mógł łatwo utworzyć link, który można wykorzystać np. w poście w mediach społecznościowych, najprościej będzie otworzyć Firebase konsolę i utworzyć go ręcznie, korzystając z formularza krok po kroku.
Korzystanie z interfejsu iOS Builder API
Za pomocą interfejsu iOS Builder API możesz tworzyć Dynamic Links na podstawie parametrów lub skracać długie Dynamic Link.
Tworzenie Dynamic Link na podstawie parametrów
Aby utworzyć Dynamic Link, utwórz nowy obiekt DynamicLinkComponents i określ parametry Dynamic Link, ustawiając odpowiednie właściwości obiektu. Następnie pobierz długi link z właściwości url
obiektu lub pobierz krótki link, wywołując shorten().
Ten minimalny przykład tworzy długi Dynamic Link do
https://www.example.com/my-page który otwiera się w aplikacji na iOS na
iOS i w aplikacji com.example.android na Androidzie:
Swift
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
Objective-C
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; NSLog(@"The long URL is: %@", linkBuilder.url);
Aby utworzyć krótki Dynamic Link, utwórz DynamicLinkComponents w ten
sam sposób, a następnie wywołaj shorten().
Utworzenie krótkiego linku wymaga wywołania sieciowego, więc zamiast bezpośrednio
zwracać link, shorten() akceptuje procedurę obsługi zakończenia, która
jest wywoływana po zakończeniu żądania. Przykład:
Swift
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Domyślnie krótkie Dynamic Links są generowane z 17-znakowymi sufiksami, co
sprawia, że bardzo mało prawdopodobne jest, aby ktoś mógł odgadnąć prawidłowy Dynamic Link. Jeśli w Twoim przypadku nie ma nic złego w tym, że ktoś odgadnie krótki link,
możesz wygenerować sufiksy, które są tylko tak długie, jak to konieczne, aby były
unikalne. Możesz to zrobić, ustawiając właściwość
dynamicLinkComponentsOptions:
Swift
linkBuilder.options = DynamicLinkComponentsOptions() linkBuilder.options.pathLength = .short linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init]; linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort; [linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Dynamic Link parametry
Za pomocą interfejsu Dynamic Link Builder API możesz tworzyć Dynamic Links z dowolnymi obsługiwanymi parametrami. Szczegółowe informacje znajdziesz w dokumentacji API.
Ten przykład tworzy Dynamic Link z ustawionymi kilkoma typowymi parametrami:
Swift
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.iOSParameters.appStoreID = "123456789" linkBuilder.iOSParameters.minimumAppVersion = "1.2.3" linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") linkBuilder.androidParameters.minimumVersion = 123 linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut", medium: "social", campaign: "example-promo") linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters() linkBuilder.iTunesConnectParameters.providerToken = "123456" linkBuilder.iTunesConnectParameters.campaignToken = "example-promo" linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters() linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link" linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!" linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg" guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
Objective-C
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.iOSParameters.appStoreID = @"123456789"; linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3"; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; linkBuilder.androidParameters.minimumVersion = 123; linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc] initWithSource:@"orkut" medium:@"social" campaign:@"example-promo"]; linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init]; linkBuilder.iTunesConnectParameters.providerToken = @"123456"; linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo"; linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init]; linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link"; linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!"; linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg"; NSLog(@"The long URL is: %@", linkBuilder.url);
Parametry Dynamic Link możesz ustawić za pomocą tych obiektów i właściwości:
| DynamicLinkComponents | |
|---|---|
| link |
Link, który otworzy Twoja aplikacja. Określ adres URL, który może obsługiwać Twoja aplikacja, zwykle treść lub ładunek aplikacji, który inicjuje logikę specyficzną dla aplikacji (np. przyznanie użytkownikowi kuponu lub wyświetlenie ekranu powitalnego). Ten link musi być prawidłowo sformatowanym adresem URL, prawidłowo zakodowanym w formacie URL, używać protokołu HTTP lub HTTPS i nie może być innym linkiem dynamicznym. |
| domainURIPrefix | Prefiks adresu URL Dynamic Link, który znajdziesz w konsoli Firebase. Domena wygląda tak jak w tych przykładach:Dynamic Link
https://example.com/link https://example.page.link |
| DynamicLinkAndroidParameters | |
|---|---|
| fallbackURL | Link, który ma się otworzyć, gdy aplikacja nie jest zainstalowana. Określ ten parametr, aby wykonać inne działanie niż zainstalowanie aplikacji ze Sklepu Play, gdy aplikacja nie jest zainstalowana, np. otworzyć mobilną wersję internetową treści lub wyświetlić stronę promocyjną aplikacji. |
| minimumVersion | versionCode minimalnej wersji aplikacji, która może otworzyć link. Jeśli zainstalowana aplikacja jest starszą wersją, użytkownik zostanie przekierowany do Sklepu Play, aby ją zaktualizować. |
| DynamicLinkIOSParameters | |
|---|---|
| appStoreID | Identyfikator aplikacji w App Store, który służy do przekierowywania użytkowników do App Store, gdy aplikacja nie jest zainstalowana. |
| fallbackURL | Link, który ma się otworzyć, gdy aplikacja nie jest zainstalowana. Określ ten parametr, aby wykonać inne działanie niż zainstalowanie aplikacji z App Store, gdy aplikacja nie jest zainstalowana, np. otworzyć mobilną wersję internetową treści lub wyświetlić stronę promocyjną aplikacji. |
| customScheme | Niestandardowy schemat URI adresu URL aplikacji, jeśli jest zdefiniowany jako inny niż identyfikator pakietu aplikacji. |
| iPadFallbackURL | Link, który ma się otworzyć na iPadach, gdy aplikacja nie jest zainstalowana. Określ ten parametr, aby wykonać inne działanie niż zainstalowanie aplikacji z App Store, gdy aplikacja nie jest zainstalowana, np. otworzyć wersję internetową treści lub wyświetlić stronę promocyjną aplikacji. |
| iPadBundleID | Identyfikator pakietu aplikacji na iOS, która ma być używana na iPadach do otwierania linku. Aplikacja musi być połączona z projektem na stronie Przegląd w konsoli Firebase. |
| minimumAppVersion | Numer wersji minimalnej wersji aplikacji, która może otworzyć link. Ta flaga jest przekazywana do aplikacji po jej otwarciu, a aplikacja musi zdecydować, co z nią zrobić. |
| DynamicLinkNavigationInfoParameters | |
|---|---|
| forcedRedirectEnabled | Jeśli ustawisz wartość „1”, pomiń stronę podglądu aplikacji po otwarciu Dynamic Link i zamiast tego przekieruj do aplikacji lub sklepu. Strona podglądu aplikacji (domyślnie włączona) może niezawodnie przekierowywać użytkowników do najbardziej odpowiedniego miejsca docelowego, gdy otwierają oni Dynamic Links w aplikacjach. Jeśli jednak oczekujesz, że Dynamic Link będzie otwierany tylko w aplikacjach, które mogą niezawodnie otwierać Dynamic Links bez tej strony, możesz ją wyłączyć za pomocą tego parametru. Ten parametr będzie wpływać na działanie Dynamic Link tylko na iOS. |
| DynamicLinkSocialMetaTagParameters | |
|---|---|
| title | Tytuł, który ma być używany, gdy Dynamic Link jest udostępniany w poście w mediach społecznościowych. |
| descriptionText | Opis, który ma być używany, gdy Dynamic Link jest udostępniany w poście w mediach społecznościowych. |
| imageURL | Adres URL obrazu powiązanego z tym linkiem. Obraz powinien mieć wymiary co najmniej 300 x 200 pikseli i rozmiar mniejszy niż 300 kB. |
| DynamicLinkGoogleAnalyticsParameters | |
|---|---|
| source medium campaign term content |
Parametry Google Play Analytics. Te parametry
(utm_source, utm_medium,
utm_campaign, utm_term, utm_content)
są przekazywane do Sklepu Play i dołączane do ładunku linku.
|
| DynamicLinkItunesConnectAnalyticsParameters | |
|---|---|
| providerToken affiliateToken campaignToken |
Parametry iTunes Connect Analytics. Te parametry (pt,
at, ct) są przekazywane do App Store. |
Skracanie długiego Dynamic Link
Aby skrócić długi Dynamic Link, przekaż długi Dynamic Link do
shortenURL(url:options:) wraz z obiektem
DynamicLinkComponentsOptions, jeśli chcesz wygenerować
link z krótkim sufiksem:
Swift
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[FIRDynamicLinkComponents shortenURL:longLinkUrl options:nil completion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Określanie niestandardowego schematu URI adresu URL dla Dynamic Links
Domyślnie Dynamic Links używa identyfikatora pakietu aplikacji jako schematu URI adresu URL potrzebnego do otwarcia aplikacji. Aby uprościć implementację, zalecamy pozostawienie tej wartości domyślnej.
Deweloperzy, którzy już używają niestandardowego schematu adresów URL do innych celów, mogą jednak chcieć używać tego samego niestandardowego schematu adresów URL również w przypadku Dynamic Links Jeśli jesteś w takiej sytuacji, możesz określić inny schemat URI adresu URL dla swoich Firebase Dynamic Links , wykonując te czynności:
- Podczas konfigurowania aplikacji przed skonfigurowaniem instancji współdzielonej
FirebaseAppupewnij się, że określisz domyślny schemat URI adresu URL, który ma być używany przez aplikację:Swift
Uwaga: ten produkt Firebase nie jest dostępny w przypadku celów macOS, Mac Catalyst, tvOS ani watchOS.func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication .LaunchOptionsKey: Any]?) -> Bool { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme FirebaseApp.configure() return true }
Objective-C
Uwaga: ten produkt Firebase nie jest dostępny w przypadku celów macOS, Mac Catalyst, tvOS ani watchOS.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME; [FIRApp configure]; return YES; }
- Za każdym razem, gdy tworzysz Dynamic Link, musisz określić niestandardowy schemat URI adresu URL używany przez twoją aplikację. Możesz to zrobić w konsoli Firebase, ustawiając
customSchemew interfejsie Builder API, określając parametriusw adresie URL lub wysyłając parametriosCustomSchemedo interfejsu REST API.
Dalsze kroki
Po utworzeniu Dynamic Links musisz skonfigurować aplikację tak, aby odbierała Dynamic Links i przekierowywała użytkowników do odpowiedniego miejsca w aplikacji po otwarciu linku.
Aby otrzymywać Dynamic Links w aplikacji, zapoznaj się z dokumentacją na iOS, Androida, C++ i Unity.