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

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

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

Статья объясняет, как настроить диплинкинг для направления пользователей на конкретный контент в приложении и передавать данные о переходах в МТС Аналитику.

Требования

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

Настроить Манифест приложения

Если поддомен не получен, следует обратиться на почту analytics.support@mts.ru. После регистрации приложения в Link Manager необходимо добавить фильтры намерений в манифест для обработки ссылок. Это позволит операционной системе Android предлагать пользователю открывать ссылки вида testsubdomen.url.mts.ru/12345 непосредственно в вашем приложении.

Получить и обработать deeplink в приложении

В MainActivity требуется добавить обработку deeplink. Это можно сделать в методах Activity#onCreate и Activity#onNewIntent, получив данные из intent.getData(), либо распарсив ссылку из другого источника с помощью Uri.parse.

Настроить передачу deeplink

Для передачи deeplink в Аналитику используется метод resolve. Необходимо проверить, является ли ссылка URI Link Manager, и вызвать mtsAnalytics.resolveLink(uri). В результате вы получите объект DeepLinkResult, который может быть успешным или содержать ошибку.

В случае успеха результат включает:

  • location — URL редиректа;
  • params — набор параметров из Link Manager (вложенность не более 3 уровней).

При ошибке возвращается объект DeeplinkResult.Error с сообщением об ошибке.

Дополнительно

В тексте вы найдете руководство по решению задачи настройки передачи данных в МТС Аналитику с помощью deeplink, если требуется не только собирать статистику переходов, но и анализировать их параметры, а также атрибутировать переходы.

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

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

Требования

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

Шаг 1. Настроить Манифест приложения

Важно

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

После регистрации приложения в Link Manager, нужно добавить фильтры намерений. Это позволит обрабатывать ссылки в манифесте приложения для андройд-компонента (например MainActivity):

<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="https" />
<data android:host="url.mts.ru" />

<data android:scheme="http" />
<data android:host="url.mts.ru" />

<data android:scheme="https" />
<data android:host="*.url.mts.ru" />

<data android:scheme="http" />
<data android:host="*.url.mts.ru" />

<data android:scheme="https"/>
<data android:host="testsubdomen.url.mts.ru"/>
</intent-filter>

После этого, OS Android начнёт предлагать пользователю открывать ссылки типа testsubdomen.url.mts.ru/12345 в вашем приложении.

Далее, в условном MainActivity нужно добавить обработку deeplink:

В Activity#onCreate и Activity#onNewIntent:

// Check if has data
val uri: Uri? = intent.getData()

или, если ссылка в приложении получена из какого-то другого источника:

val uri: Uri = Uri.parse("https://testsubdomen.url.mts.ru/12345")

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

import kotlin.coroutines.suspendCoroutine

val mtsAnalytics: MtsAnalyticsApi = MTSAnalytics.getInstance(
context = this,
config = config
)

// Activity#onNewIntent`
val uri: Uri? = intent.getData()

// or others
val uri: Uri = Uri.parse("https://testsubdomen.url.mts.ru/short_link")

// Check if this link is an MTSA Link Manager's uri
val isLMUri = uri?.authority?.contains("testsubdomen.url.mts.ru") == true
if (isLMUri) {
uri?.let { it ->
val result: DeepLinkResult = runBlocking {
mtsAnalytics.resolveLink(uri)
}
// или
mtsAnalytics.resolveLink(uri) { result: DeepLinkResult ->
// обработка результата
}
}
}

В ответе вы получите ссылку и её параметры. Например,

interface DeepLinkResult {
class Success(
val location: String,
val params: Map<String, Any?>
) : DeepLinkResult

class Error(val error: Throwable) : DeepLinkResult
}
  • location — url редиректа
  • params — набор параметров, полученных из Link Manager. Вложенность может быть не более 3-х уровней
  • DeeplinkResult.Error содержит: error (сообщение об ошибке)

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

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