Работа с 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 в вашем приложении.
Шаг 2. Получить и обработать deeplink в приложении
Далее, в условном 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")
Шаг 3. Настроить передачу deeplink
Используйте метод 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.