Перейти к основному содержимому

Работа с Link Manager для iOS

Краткое содержание

Требования
Проверьте выполнение действий для начала работы с Link Manager через ссылку.

Шаг 1. Добавить поддомен в Xcode
Если поддомен не предоставлен, обратитесь на почту analytics.support@mts.ru.

  • Включите опцию Associated Domains в разделе Capabilities.
  • Добавьте поддомен в формате applinks:*product*.url.mts.ru, при необходимости укажите параметр mode=developer для ссылок под VPN.

Шаг 2. Поддержать deeplink
Обеспечьте обработку deeplink в приложении согласно документации Apple.

Шаг 3. Настроить передачу deeplink
Используйте методы Swift Concurrency или Completion для передачи deeplink в Аналитику. В ответе получите ссылку и параметры, зарегистрированные в Link Manager.

Шаг 4. Настроить обработку Deeplink

  • Если приложение было закрыто: обработайте userActivity в scene(_:willConnectTo:options:).
  • Если приложение уже открыто: обработайте userActivity в scene(_:continue:).
  • Для UIApplicationDelegate используйте метод application(_:continue:restorationHandler:) для обработки ссылки.

Шаг 5. Дополнительно
Для анализа параметров переходов настройте передачу данных в МТС Аналитику через ссылку.

В основе Link Manager лежит диплинкинг — направление пользователя на конкретный контент в приложении через «глубокую» ссылку (deeplink).

В статье описано, как настроить работу с Link Manager и передачу данных о переходах по таким ссылкам в МТС Аналитику.

Требования

Проверьте, что были выполнены действия для начала работы с Link Manager.

Шаг 1. Добавить поддомен в Xcode

Важно

Если вы не получили поддомен для указания в приложении, напишите на почту analytics.support@mts.ru

  1. Выберите Target приложения во вкладке General.
  2. В разделе Capabilities включите опцию Associated Domains.
  3. В поле Domains добавьте поддомен, зарегистрированный в Link Manager в формате
applinks:*product*.url.mts.ru

Если ссылка открывается под VPN, добавьте параметр mode

applinks:*product*.url.mts.ru?mode=developer

Для работы с deeplink поддержите их в вашем приложении.

Используйте один из методов, чтобы передать deeplink в Аналитику:

  • Swift Concurrency
public func resolveLink(url: URL) async throws -> MTLink
  • Completion
public func resolveLink(url: URL, completion: @escaping (Result<MTLink, Error>) -> Void)

В ответе вы получите ссылку и параметры, которые вы зарегистрировали в Link Manager. Например,

public struct MTLink {

/**
Link (deeplink) with params for app.
*/
public let location: String

/**
Params from Link Manager for link.
*/
public let params: [String: Any?]
}

В UISceneDelegate

  • Если на момент перехода приложение было закрыто и запустилось по ссылке
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let userActivity = connectionOptions.userActivities.first
if userActivity?.activityType == NSUserActivityTypeBrowsingWeb {
Task {
let link = try? await MTAnalyticsApp.linkResolver?.resolveLink(url: url)
}
}
}
  • Если приложение уже было открыто на момент перехода по ссылке
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
let url = userActivity.webpageURL
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url {
Task {
let link = try? await MTAnalyticsApp.linkResolver?.resolveLink(url: url)
}
}
}

В UIApplicationDelegate

Чтобы обработать ссылку в SceneDelegate, используйте

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
MTAnalyticsApp.linkResolver?.resolveLink(url: url) { result in
switch result {
case .success(let link):
...
case .failure(let error):
...
}
}
return true
}

Шаг 5. Дополнительно

Если вы хотите не просто собирать статистику по фактам перехода, а анализировать параметры переходов, настройте передачу данных в МТС Аналитику.