Вы можете создавать короткие или длинные динамические ссылки с помощью Firebase Dynamic Links Builder API. Этот API принимает либо длинную динамическую ссылку, либо объект, содержащий параметры динамической ссылки, и возвращает URL-адреса, подобные следующим примерам:
https://example.com/link/WXYZ https://example.page.link/WXYZ
Предпосылки
Прежде чем начать, обязательно добавьте Firebase в свой проект iOS .
Настройте Firebase и Dynamic Links SDK
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode при открытом проекте приложения перейдите в File > Add Packages .
- При появлении запроса добавьте репозиторий SDK Firebase для платформ Apple:
- Выберите библиотеку динамических ссылок.
- Для оптимальной работы с динамическими ссылками мы рекомендуем включить Google Analytics в вашем проекте Firebase и добавить Firebase SDK для Google Analytics в ваше приложение. Вы можете выбрать библиотеку без коллекции IDFA или с коллекцией IDFA.
- Когда закончите, Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk
Теперь выполните несколько шагов настройки:
- В консоли Firebase откройте раздел «Динамические ссылки» .
Если вы еще не приняли условия обслуживания и не установили префикс URI для своих динамических ссылок, сделайте это при появлении запроса.
Если у вас уже есть префикс URI динамических ссылок, запишите его. Вам необходимо предоставить его при программном создании динамических ссылок.
- Рекомендуется . Укажите шаблоны URL, разрешенные для ссылок на контент и резервных ссылок. Тем самым вы предотвращаете создание динамических ссылок неавторизованными сторонами, которые перенаправляют вас с вашего домена на сайты, которые вы не контролируете. См. раздел Разрешить определенные шаблоны URL .
Убедитесь, что идентификатор вашего приложения в App Store и префикс идентификатора приложения указаны в настройках вашего приложения. Чтобы просмотреть и изменить настройки своего приложения, перейдите на страницу настроек вашего проекта Firebase и выберите свое приложение для iOS.
Убедитесь, что ваш проект Firebase правильно настроен для использования динамических ссылок в вашем приложении iOS, открыв файл
apple-app-site-association
, размещенный в вашем домене динамических ссылок. Firebase будет обслуживать файлapple-app-site-association
из корня домена, а также из подкаталога.well-known
. Например:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-association
Если ваше приложение подключено, файл
apple-app-site-association
содержит ссылку на префикс идентификатора приложения и идентификатор пакета вашего приложения. Например:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
Если свойство
details
пусто, дважды проверьте, указали ли вы префикс идентификатора приложения. Обратите внимание, что ваш префикс идентификатора приложения может не совпадать с идентификатором вашей команды.
Добавьте Firebase в свое приложение
- Импортируйте модуль
FirebaseCore
в свойUIApplicationDelegate
, а также любые другие модули Firebase, которые использует ваш делегат приложения. Например, чтобы использовать Cloud Firestore и аутентификацию:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Быстрый
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Цель-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Настройте общий экземпляр
FirebaseApp
в методе applicationapplication(_:didFinishLaunchingWithOptions:)
вашего делегата приложения:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Быстрый
// Use Firebase library to configure APIs FirebaseApp.configure()
Цель-C
// Use Firebase library to configure APIs [FIRApp configure];
- Если вы используете SwiftUI, вы должны создать делегат приложения и прикрепить его к своей структуре
App
черезUIApplicationDelegateAdaptor
илиNSApplicationDelegateAdaptor
. Вы также должны отключить swizzling делегата приложения. Дополнительные сведения см. в инструкциях SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Используйте консоль Firebase
Если вы хотите создать одну динамическую ссылку либо для целей тестирования, либо для вашей маркетинговой команды, чтобы легко создать ссылку, которую можно использовать в чем-то вроде поста в социальной сети, самый простой способ — посетить консоль Firebase и создать ее. вручную, следуя пошаговой форме.
Используйте API-интерфейс iOS Builder
Вы можете использовать API iOS Builder для создания динамических ссылок из параметров или для сокращения длинной динамической ссылки.
Создать динамическую ссылку из параметров
Чтобы создать динамическую ссылку, создайте новый объект DynamicLinkComponents
и укажите параметры динамической ссылки, установив соответствующие свойства объекта. Затем получите длинную ссылку из свойства url
объекта или получите короткую ссылку, вызвав shorten()
.
В следующем минимальном примере создается длинная динамическая ссылка на https://www.example.com/my-page
, которая открывается с вашим приложением iOS на iOS и приложением com.example.android
на Android:
Быстрый
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)")
Цель-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);
Чтобы создать короткую динамическую ссылку, создайте DynamicLinkComponents
таким же образом, а затем вызовите shorten()
.
Создание короткой ссылки требует сетевого вызова, поэтому вместо прямого возврата ссылки, shorten()
принимает обработчик завершения, который вызывается после завершения запроса. Например:
Быстрый
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Цель-C
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
По умолчанию короткие динамические ссылки генерируются с 17-символьными суффиксами ссылок, что крайне маловероятно, что кто-то сможет угадать действительную динамическую ссылку. Если для вашего варианта использования нет ничего плохого в том, что кто-то успешно угадает короткую ссылку, вы можете предпочесть генерировать суффиксы, длина которых необходима для уникальности, что вы можете сделать, установив свойство dynamicLinkComponentsOptions
:
Быстрый
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)") }
Цель-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); }];
Параметры динамической ссылки
Вы можете использовать API Dynamic Link Builder для создания динамических ссылок с любым из поддерживаемых параметров. Подробнее см. в справочнике по API .
В следующем примере создается динамическая ссылка с несколькими наборами общих параметров:
Быстрый
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)")
Цель-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);
Вы можете задать параметры Dynamic Link со следующими объектами и свойствами:
Компоненты DynamicLink | |
---|---|
связь | Ссылка, которую откроет ваше приложение. Укажите URL-адрес, который может обрабатывать ваше приложение, обычно содержимое или полезные данные приложения, которые инициируют логику приложения (например, начисление пользователю купона или отображение экрана приветствия). Эта ссылка должна представлять собой правильно отформатированный URL-адрес, правильно закодированный URL-адрес, использовать HTTP или HTTPS и не может быть другой динамической ссылкой. |
доменURIпрефикс | Префикс URL-адреса динамической ссылки, который вы можете найти в консоли Firebase. Домен Dynamic Link выглядит следующим образом: https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
резервный URL | Ссылка для открытия, когда приложение не установлено. Укажите это, чтобы сделать что-то, кроме установки вашего приложения из Play Store, когда приложение не установлено, например открыть мобильную веб-версию контента или отобразить рекламную страницу для вашего приложения. |
минимальная версия | versionCode минимальной версии вашего приложения, которая может открыть ссылку. Если установленное приложение является более старой версией, пользователь перенаправляется в Play Store для обновления приложения. |
DynamicLinkIOSПараметры | |
---|---|
AppStoreID | Идентификатор App Store вашего приложения, используемый для отправки пользователей в App Store, когда приложение не установлено. |
резервный URL | Ссылка для открытия, когда приложение не установлено. Укажите это, чтобы сделать что-то кроме установки вашего приложения из App Store, когда приложение не установлено, например открыть мобильную веб-версию содержимого или отобразить рекламную страницу для вашего приложения. |
пользовательская схема | Настраиваемая схема URL-адреса вашего приложения, если она определена как нечто отличное от идентификатора пакета вашего приложения. |
iPadFallbackURL | Ссылка для открытия на iPad, когда приложение не установлено. Укажите это, чтобы сделать что-то, кроме установки вашего приложения из App Store, когда приложение не установлено, например открыть веб-версию содержимого или отобразить рекламную страницу для вашего приложения. |
iPadBundleID | Идентификатор пакета приложения iOS для использования на iPad для открытия ссылки. Приложение должно быть подключено к вашему проекту на странице обзора консоли Firebase. |
минимальная версия приложения | Номер версии минимальной версии вашего приложения, которая может открыть ссылку. Этот флаг передается вашему приложению при его открытии, и ваше приложение должно решить, что с ним делать. |
Динамиклинкнавигатионинфопараметерс | |
---|---|
принудительноРедиректенаблед | Если установлено значение «1», пропустить страницу предварительного просмотра приложения при открытии динамической ссылки и вместо этого перенаправить в приложение или магазин. Страница предварительного просмотра приложения (включена по умолчанию) может более надежно направлять пользователей в наиболее подходящее место назначения, когда они открывают динамические ссылки в приложениях; однако, если вы ожидаете, что динамическая ссылка будет открываться только в приложениях, которые могут надежно открывать динамические ссылки без этой страницы, вы можете отключить ее с помощью этого параметра. Этот параметр повлияет на поведение Dynamic Link только на iOS. |
DynamicLinkSocialMetaTagParameters | |
---|---|
заголовок | Заголовок, используемый при публикации динамической ссылки в публикации в социальной сети. |
описаниеТекст | Описание, используемое при публикации динамической ссылки в публикации в социальной сети. |
URL изображения | URL-адрес изображения, связанного с этой ссылкой. Размер изображения должен быть не менее 300x200 пикселей и не более 300 КБ. |
DynamicLinkGoogle AnalyticsПараметры | |
---|---|
источник середина кампания срок содержание | Параметры аналитики Google Play. Эти параметры ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) передаются в Play Store, а также добавляются к полезной нагрузке ссылки. |
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
провайдерТокен партнерский токен кампанияToken | Параметры аналитики iTunes Connect. Эти параметры ( pt , at , ct ) передаются в App Store. |
Сократите длинную динамическую ссылку
Чтобы сократить длинную динамическую ссылку, передайте длинную динамическую ссылку в shortenURL(url:options:)
вместе с объектом DynamicLinkComponentsOptions
, если вы хотите создать ссылку с коротким суффиксом:
Быстрый
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Цель-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); }];
Указание пользовательской схемы URL для динамических ссылок
По умолчанию Dynamic Links использует идентификатор пакета вашего приложения в качестве схемы URL, необходимой для открытия вашего приложения. Мы рекомендуем оставить это значение по умолчанию, чтобы упростить реализацию.
Однако разработчики, которые уже используют настраиваемую схему URL-адресов для других целей, могут захотеть использовать эту же настраиваемую схему URL-адресов и для своих динамических ссылок. Если вы находитесь в такой ситуации, вы можете указать другую схему URL-адресов для своих динамических ссылок Firebase, выполнив следующие действия:
- При настройке приложения убедитесь, что вы указали схему URL-адресов по умолчанию, которая будет использоваться вашим приложением, прежде чем настраивать общий экземпляр
FirebaseApp
:Быстрый
Примечание. Этот продукт Firebase недоступен для целей macOS, Mac Catalyst, tvOS или 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 }
Цель-C
Примечание. Этот продукт Firebase недоступен для целей macOS, Mac Catalyst, tvOS или 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; }
- Всякий раз, когда вы создаете любую динамическую ссылку, вам нужно будет указать настраиваемую схему URL-адресов, которую использует ваше приложение. Вы можете сделать это через консоль Firebase, установив
customScheme
в Builder API, указав параметрius
в своем URL-адресе или отправив параметрiosCustomScheme
в REST API.
Следующие шаги
Теперь, когда вы создали динамические ссылки, вам нужно настроить свое приложение для получения динамических ссылок и отправки пользователей в нужное место в вашем приложении после того, как пользователь откроет их.
Чтобы получить динамические ссылки в своем приложении, см. документацию для iOS , Android , C++ и Unity .