Работа с 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
- Выберите Target приложения во вкладке General.
- В разделе Capabilities включите опцию Associated Domains.
- В поле Domains добавьте поддомен, зарегистрированный в Link Manager в формате
applinks:*product*.url.mts.ru
Если ссылка открывается под VPN, добавьте параметр mode
applinks:*product*.url.mts.ru?mode=developer
Шаг 2. Поддержать deeplink
Для работы с deeplink поддержите их в вашем приложении.
Шаг 3. Настроить передачу 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?]
}
Шаг 4. Настроить обработку Deeplink
В 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. Дополнительно
Если вы хотите не просто собирать ст атистику по фактам перехода, а анализировать параметры переходов, настройте передачу данных в МТС Аналитику.