Работа с Link Manager для Flutter
Краткое содержание
Требования
Проверьте выполнение действий для начала работы с Link Manager через ссылку.
Шаг 1. Поддержать deeplink
Настройте deeplinks для каждой платформы Flutter-приложения с помощью пакета go_router. Пример кода включает обработку URI и передачу данных в MTC Аналитику.
Шаг 2. Настроить передачу deeplink
Используйте метод resolveLink(uri: Uri) для передачи ссылки в Аналитику. В ответе получите объект DeepLinkResult, содержащий URL редиректа и параметры. В случае ошибки возвращается исключение.
В основе Link Manager лежит диплинкинг — направление пользователя на конкретный контент в приложении через «глубокую» ссылку (deeplink).
В статье описано, как настроить работу с Link Manager и передачу данных о переходах по таким ссылкам в МТС Аналитику.
Требования
Проверьте, что были выполнены действия для начала работы с Link Manager.
Шаг 1. Поддержать deeplink
Настройте работу deeplinks для каждой из платформ, поддерживаемой вашим Flutter-приложением, используя пакет go_router
GoRoute(
path: '/',
builder: (_, __) => HomePage(
title: 'SDK Demo Home Page',
mtsAnalyticsPlugin: mtsAnalyticsPlugin,
),
routes: [
GoRoute(
name: LinkmanagerPage.route,
path: LinkmanagerPage.path,
builder: (_, goRouterState) {
mtsAnalyticsPlugin.trackUri(uri: goRouterState.uri);
return LinkmanagerPage(
uri: goRouterState.uri,
mtsAnalyticsPlugin: mtsAnalyticsPlugin,
)
},
)
]
);
/// Можно отправить событие с произвольной ссылкой
final url = 'http://yoururl.ru'
mtsAnalyticsPlugin.trackUri(uri: Uri.parse(url));
Шаг 2. Настроить передачу deeplink
Используйте метод resolve, чтобы передать ссылку в Аналитику
`resolveLink(uri: Uri): DeeplinkResult`
Например,
final MtsAnalyticsConfig config = MtsAnalyticsConfig()
..logLevel = LogLevel.verbose
..crashReportingEnabled = false
..backgroundTimeout = 120
..activeTimeout = 90
..eventStorageLimit = 3000
..networkTrafficEnabled = true
..androidFlowId = androidFlowId
..iosFlowId = iosFlowId;
final mtsAnalyticsPlugin = MtsAnalyticsPlugin();
mtsAnalyticsPlugin.init(config);
final uri = Uri.parse("https://url.mts.ru/short_link")
final DeepLinkResult result = await mtsAnalyticsPlugin.resolveLink(uri: uri)
В ответе вы получите ссылку и её параметры. Например,
sealed class DeepLinkResult {
const DeepLinkResult();
}
@JsonSerializable()
class DeepLinkResultSuccess extends DeepLinkResult {
const DeepLinkResultSuccess({
required this.params,
required this.location,
});
final String location;
final Map<String, dynamic> params;
}
class DeepLinkResultError extends DeepLinkResult {
const DeepLinkResultError(this.error);
final Exception error;
}
location— url редиректаparams— набор параметров, полученных из Link Manager. Вложенность может быть не более 3-х уровнейDeeplinkResult.Errorсодержит: error (сообщение об ошибке)