Catch up on everything we announced at this year's Firebase Summit. Learn more

Создавайте динамические ссылки на iOS

Вы можете создавать короткие или длинные динамические ссылки с помощью Firebase Dynamic Links Builder API. Этот API принимает длинную динамическую ссылку или объект, содержащий параметры динамической ссылки, и возвращает URL-адреса, как в следующих примерах:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Предпосылки

Перед тем, как начать, убедитесь , чтобы добавить Firebase в свой проект IOS .

Используйте Swift Package Manager для установки и управления зависимостями Firebase.

  1. В Xcode, с приложением проекта открыто, перейдите в меню Файл> Swift пакеты> Добавить пакет Завис.
  2. При появлении запроса добавьте репозиторий Firebase Apple Platform SDK:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Выберите библиотеку динамических ссылок.
  5. Для оптимальной работы с динамическими связями, мы рекомендуем позволяет Google Analytics в проекте Firebase и добавление Firebase SDK для Google Analytics для вашего приложения. Вы можете выбрать библиотеку без коллекции IDFA или с коллекцией IDFA.
  6. По завершении Xcode автоматически начнет разрешение и загрузку ваших зависимостей в фоновом режиме.

Теперь выполните несколько шагов по настройке:

  1. В Firebase консоли откройте раздел Динамические ссылки.
  2. Если вы еще не приняли условия обслуживания и не установили префикс URI для динамических ссылок, сделайте это при появлении соответствующего запроса.

    Если у вас уже есть префикс URI динамических ссылок, запишите его. Вам необходимо предоставить его, когда вы программно создаете динамические ссылки.

  3. Рекомендуется: Укажите шаблоны URL разрешен в ваших глубоких связях и резервных ссылках. Тем самым вы предотвращаете создание неавторизованными сторонами динамических ссылок, которые перенаправляют с вашего домена на сайты, которые вы не контролируете. См Разрешить шаблоны конкретных URL .
  4. Убедитесь, что идентификатор вашего приложения в магазине приложений и префикс идентификатора приложения указаны в настройках вашего приложения. Для просмотра и редактирования настроек своего приложения, перейдите в раздел вашего проекта Firebase в странице Настройки и выберите приложение IOS.

    Убедитесь , что ваш проект Firebase правильно настроен для использования динамической ссылки в приложении IOS, открыв apple-app-site-association файл, размещенный на домене Dynamic Links. 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 файл содержит ссылку на App ID префикса вашего приложения и расслоение ID. Например:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    Если details свойство пусто, дважды проверьте , что вы указали префикс App ID. Обратите внимание, что ваш префикс идентификатора приложения может не совпадать с идентификатором вашей группы.

Добавьте Firebase в свое приложение

  1. Импорт модуля Firebase в вашем UIApplicationDelegate :

    Быстрый

    import Firebase

    Цель-C

    @import Firebase;
  2. Настройте FirebaseApp общей экземпляр, как правило , в вашем приложении application:didFinishLaunchingWithOptions: метод:

    Быстрый

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Цель-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Используйте консоль Firebase

Если вы хотите создать единый Dynamic Link, либо для целей тестирования, или для вашей маркетинговой команды легко создать ссылку , которая может быть использована в чем - то вроде поста социальных медиа, самый простой способ был бы посетить Firebase консоль и создать вручную, следуя пошаговой форме.

Используйте iOS Builder API

Вы можете использовать iOS Builder API для создания динамических ссылок из параметров или для сокращения длинной динамической ссылки.

Для создания Dynamic Link, создать новый DynamicLinkComponents объект и задать параметры Dynamic Link, установив соответствующие свойства объекта. Затем, получить длинную ссылку из объекта url - shorten() url собственности или получить короткую ссылку, вызвав shorten() .

Следующий минимальный пример создает длинный Dynamic Link для https://www.example.com/my-page , который открывается с приложением IOS на прошивке и приложение com.example.android на Android:

Быстрый

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
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

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
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);

Для того, чтобы создать короткий Dynamic Link, построить DynamicLinkComponents таким же образом, а затем вызвать shorten() .

Построение короткой ссылки требует сетевого вызова, поэтому вместо того , чтобы непосредственно возвращая ссылку, shorten() принимает обработчик завершения, который вызывается , когда запрос завершается. Например:

Быстрый

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Цель-C

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
[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 свойства:

Быстрый

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
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

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
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 построителя динамических ссылок для создания динамических ссылок с любым из поддерживаемых параметров. Смотрите ссылку API для получения подробной информации.

В следующем примере создается динамическая ссылка с набором нескольких общих параметров:

Быстрый

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
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

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
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 со следующими объектами и свойствами:

DynamicLinkComponents
ссылка

Ссылка откроется в вашем приложении. Укажите URL-адрес, который может обрабатывать ваше приложение, обычно это контент или полезные данные приложения, которые запускают логику, специфичную для приложения (например, зачисление пользователю купона или отображение экрана приветствия). Эта ссылка должна быть хорошо отформатированным URL, иметь правильную кодировку URL, использовать протокол HTTP или HTTPS и не может быть другой динамической ссылкой.

domainURIPrefix Префикс URL-адреса динамической ссылки, который вы можете найти в консоли Firebase. Динамическая Link домена выглядит следующим образом : примеры
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
fallbackURL Ссылка, которую нужно открыть, когда приложение не установлено. Укажите это, чтобы делать что-то, кроме установки вашего приложения из Play Store, когда приложение не установлено, например открывать мобильную веб-версию контента или отображать рекламную страницу для вашего приложения.
minimumVersion versionCode минимальной версии приложения , которое может открыть ссылку. Если установленное приложение более ранней версии, пользователь попадает в Play Store для обновления приложения.
DynamicLinkIOSParameters
appStoreID Идентификатор вашего приложения в App Store, используемый для отправки пользователей в App Store, когда приложение не установлено.
fallbackURL Ссылка, которую нужно открыть, когда приложение не установлено. Укажите это, чтобы делать что-то, кроме установки приложения из App Store, когда приложение не установлено, например открывать мобильную веб-версию содержимого или отображать рекламную страницу для вашего приложения.
customScheme Пользовательская схема URL-адресов вашего приложения, если она определена как нечто иное, чем идентификатор пакета вашего приложения.
iPadFallbackURL Ссылка для открытия на iPad, когда приложение не установлено. Укажите это, чтобы делать что-то, кроме установки приложения из App Store, когда приложение не установлено, например открывать веб-версию контента или отображать рекламную страницу для вашего приложения.
iPadBundleID Идентификатор пакета приложения iOS для использования на iPad, чтобы открыть ссылку. Приложение должно быть подключено к вашему проекту на странице обзора консоли Firebase.
minimumAppVersion Номер версии минимальной версии приложения , которое может открыть ссылку. Этот флаг передается вашему приложению при его открытии, и ваше приложение должно решить, что с ним делать.
DynamicLinkNavigationInfoParameters
forceRedirectEnabled Если установлено значение «1», пропускать страницу предварительного просмотра приложения при открытии динамической ссылки и вместо этого выполнять перенаправление в приложение или магазин. Страница предварительного просмотра приложения (включена по умолчанию) может более надежно отправлять пользователей в наиболее подходящее место назначения, когда они открывают динамические ссылки в приложениях; однако, если вы ожидаете, что динамическая ссылка будет открываться только в приложениях, которые могут надежно открывать динамические ссылки без этой страницы, вы можете отключить ее с помощью этого параметра. Этот параметр повлияет на поведение динамической ссылки только на iOS.
DynamicLinkSocialMetaTagParameters
заглавие Заголовок, который следует использовать, когда динамическая ссылка публикуется в сообщении в социальной сети.
descriptionText Описание, которое следует использовать, когда динамическая ссылка публикуется в социальной публикации.
URL изображения URL-адрес изображения, связанного с этой ссылкой. Размер изображения должен быть не менее 300x200 пикселей и не более 300 КБ.
DynamicLinkGoogleAnalyticsParameters
источник
Средняя
кампания
срок
содержание
Параметры аналитики Google Play. Эти параметры ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) передается в Play Store , а также добавленные к полезной нагрузке линии связи.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
campaignToken
Параметры аналитики iTunes Connect. Эти параметры ( pt , at , ct ), передаются в App Store.

Чтобы сократить длинный Dynamic Link, пройти длинный Dynamic Link для shortenURL(url:options:) вместе с DynamicLinkComponentsOptions объекта , если вы хотите создать ссылку с коротким суффиксом:

Быстрый

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
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

Примечание: Этот продукт Firebase не доступен на MacOS, Mac Catalyst, tvOS или цели watchOS.
[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, необходимой для открытия вашего приложения. Мы рекомендуем придерживаться этого значения по умолчанию, чтобы упростить реализацию.

Однако разработчики, которые уже используют настраиваемую схему URL-адресов для других целей, могут захотеть использовать эту же настраиваемую схему URL-адресов и для своих динамических ссылок. Если вы находитесь в такой ситуации, вы можете указать другую схему URL-адресов для динамических ссылок Firebase, выполнив следующие действия:

  1. При настройке приложения, убедитесь , что вы указать схему 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;
    }
  2. Каждый раз, когда вы создаете какую-либо динамическую ссылку, вам нужно будет указать настраиваемую схему URL-адресов, которую использует ваше приложение. Вы можете сделать это через консоль Firebase, установив customScheme в API Builder, указав ius параметр в вашей URL, или отправив iosCustomScheme параметр в REST API

Следующие шаги

Теперь, когда вы создали динамические ссылки, вам необходимо настроить приложение для получения динамических ссылок и отправки пользователей в нужное место в вашем приложении после того, как пользователь их откроет.

Для того, чтобы получить динамические ссылки в вашем приложении, обратитесь к документации для IOS , Android , C ++ , и единства .