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 kolejno 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 docelowej. - 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 identyfikatora 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 URI Dynamic Links, zanotuj 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.
-
Sprawdź, czy w ustawieniach aplikacji jest podany identyfikator 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 sprawdzić, czy 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 został podany 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
FirebaseAppwspółdzieloną instancję 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, np. 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 funkcję 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 funkcję 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, które
sprawiają, że bardzo mało prawdopodobne jest odgadnięcie prawidłowego 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”, strona podglądu aplikacji zostanie pominięta po otwarciu Dynamic Link, a użytkownik zostanie przekierowany do aplikacji lub sklepu. Strona podglądu aplikacji (domyślnie włączona) może skuteczniej przekierowywać użytkowników do 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 adresów URL potrzebnego do otwarcia aplikacji. Aby uprościć implementację, zalecamy pozostawienie tej wartości domyślnej.
Deweloperzy, którzy używają już niestandardowego schematu adresów URL do innych celów, mogą chcieć używać tego samego niestandardowego schematu URI adresu 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 współdzielonej instancji
FirebaseAppokreśl domyślny schemat URI adresu URL, który ma być używany przez aplikację:Swift
Uwaga: ten produkt Firebase nie jest dostępny na platformach 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 na platformach 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 ich otwarciu.
Aby otrzymywać Dynamic Links w aplikacji, zapoznaj się z dokumentacją na iOS, Androida, C++ i Unity.