Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

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

Предпосылки

Для Firebase Dynamic Links требуется iOS 8 или новее. Вы можете настроить таргетинг на iOS 7 в своем приложении, но вызовы Firebase Dynamic Links SDK работают только в приложениях под управлением iOS 8 или новее.

  1. Добавьте Firebase в свой проект iOS . Включите в свой Podfile следующий модуль:
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
        
  2. Запустите pod install и откройте созданный файл .xcworkspace .
  3. В консоли Firebase откройте раздел Динамические ссылки .
  4. Если вы еще не приняли условия обслуживания и не установили префикс URI для динамических ссылок, сделайте это при появлении соответствующего запроса.

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

  5. Рекомендуется : укажите шаблоны URL, разрешенные в ваших глубоких и резервных ссылках. Таким образом вы предотвращаете создание неавторизованными сторонами динамических ссылок, которые перенаправляют с вашего домена на сайты, которые вы не контролируете. См. Разрешить определенные шаблоны URL .
  6. Убедитесь, что идентификатор вашего приложения в магазине приложений и префикс идентификатора приложения указаны в настройках вашего приложения. Чтобы просмотреть и изменить настройки приложения, перейдите на страницу настроек проекта 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 в свое приложение

  1. Импортируйте модуль Firebase в свой UIApplicationDelegate :

    Swift

    import Firebase

    Цель-C

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

    Swift

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

    Цель-C

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

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

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

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

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

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

В следующем минимальном примере создается длинная динамическая ссылка на https://www.example.com/my-page которая открывается с вашим приложением iOS на iOS и приложением com.example.android на Android:

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)")

Цель-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() принимает обработчик завершения, который вызывается после завершения запроса. Например:

Swift

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 от уникальности, что вы можете сделать, установив свойство 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)")
}

Цель-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 построителя динамических ссылок для создания динамических ссылок с любым из поддерживаемых параметров. См. Подробности в справке по API .

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

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)")

Цель-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 со следующими объектами и свойствами:

DynamicLinkComponents
ссылка

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

domainURIPrefix Префикс URL-адреса динамической ссылки, который можно найти в консоли Firebase. Домен с динамической ссылкой выглядит следующим образом:
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, но со временем может быть отображена на Android. Этот параметр повлияет на поведение динамической ссылки на обеих платформах.
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.

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

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)")
}

Цель-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, необходимой для открытия вашего приложения. Мы рекомендуем придерживаться этого значения по умолчанию, чтобы упростить реализацию.

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

  1. При настройке приложения убедитесь, что вы указали схему URL-адресов по умолчанию, которая будет использоваться вашим приложением, прежде чем настраивать общий экземпляр FirebaseApp :

    Swift

    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 = self.customURLScheme
      FirebaseApp.configure()
    
      return true
    }

    Цель-C

    - (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 в Builder API, указав параметр ius в своем URL-адресе или отправив параметр iosCustomScheme в REST API.

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

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

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