Руков одство по deeplink-ссылкам
В этой статье мы рассмотрим, что такое deeplink-ссылки, для чего они нужны, а также рассмотрим их применение на примерах.
Что такое deeplink-ссылки
Deeplink (глубокая ссылка) — это URL-адрес, который ведёт не на основной экран приложения, а на конкретный раздел или функцию внутри него. Таким образом, вместо открытия главной страницы магазина, ссылка может сразу перенаправить пользователя на карточку товара или корзину.
Пример deeplink-ссылки:
myapp://profile/123
— переход к профилю пользователя с ID 123
.
Зачем нужны deeplink-ссылки
-
Улучшение пользовательского опыта
Deeplink позволяет сократить количество шагов для выполнения действия. Пользователи мгновенно попадают на нужный экран, что делает взаимодействие с приложением удобнее. -
Маркетинговые кампании
В маркетинговых кампаниях deeplink-ссылки помогают привлекать пользователей к конкретным акциям, продуктам или функциям приложения. Нажав на ссылку, пользователь сразу открывает карточку этого товара в приложении, минуя поисковую строку и навигацию.
Push-уведомление с прикрепленной deeplink ссылкой: «Скидка 20% на ваш любимый бренд! Нажмите, чтобы заказать» — ведёт прямо на страницу бренда.
- Интеграция с другими сервисами
Deeplink значительно упрощает взаимодействие с внешними приложениями, например, платёжными сервисами или партнёрскими программами.
Оплата через стороннее приложение (например, СБП или SberPay) с последующим автоматическим возвратом на экран подтверждения в вашем приложении.
Как работают deeplink-ссылки?
- Структура deeplink-ссылки Глубокие ссылки имеют чётко структурированный формат, который указывает на определённый экран или действие. Пример:
- myapp://profile/123 — открывает профиль пользователя.
- myapp://order/987 — ведёт на страницу заказа №987.
- myapp://payment?amount=100 — запускает экран оплаты с предзаполненной суммой.
- Обработка deeplink в приложении Для работы с deeplink-ссылками необходимо настроить приложение, чтобы оно могло распознавать такие URL и выполнять соответствующие действия. Это достигается:
- через обработчики намерений (Intents) в Android;
- через настройку схемы ссылок или универсальных ссылок (App Links).
- Навигация и действия Когда пользователь нажимает на deeplink, система Android открывает приложение и передаёт параметры ссылки. Далее приложение обрабатывает запрос и перенаправляет пользователя на нужный экран.
Зачем обрабатывать deeplink-ссылки в SDK платежей
Обработка deeplink в SDK платежей необходима для корректной работы с приложениями банков и платёжных систем (например, СБП, SberPay, Tinkoff Pay). Основные задачи deeplink в SDK платежей:
- Автоматическое завершение оплаты После перехода в стороннее приложение для оплаты, например, банк-клиент или сервис СБП, deeplink позволяет автоматически вернуть пользователя в ваше приложение, чтобы показать статус транзакции (успешная/неуспешная).
Пользователь подтверждает покупку через приложение банка. После оплаты deeplink возвращает его на экран подтверждения заказа в вашем приложении.
- Сокращение пути оплаты Deeplink-ссылки упрощают процесс оплаты, направляя пользователя сразу на нужный экран стороннего приложения, минуя лишние действия.
Ссылка myapp://payment/redirect открывает приложение банка, где пользователь подтверждает оплату, затем deeplink автоматически возвращает пользователя в ваше приложение
- Интеграция с популярными платёжными сервисами Deeplink особенно важен для платежей через СБП и сервисы, например, SberPay или Tinkoff Pay, так как эти системы работают в связке с приложениями банков. Благодаря deeplink схеме пользователь автоматически возвращается в ваше приложение.
Пользователь выбирает оплату через Tinkoff Pay. SDK формирует deeplink, который переводит его в приложение банка для подтверждения. После завершения операции пользователь возвращается в ваше приложение для просмотра итогов.
Как правильно обрабатывать deeplink ссылки для SDK-платежей
- Укажите
deeplinkScheme
внутри вашего файлаAndroidManifest.xml
дляActivity
, в которую необходимо вернуться после оплаты через стороннее приложение. SDK генерирует свой хост к данной схеме, его с вашей стороны указывать не нужно.ВместоAndroidManifest.xml<activity
android:name=".YourBillingActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your_deeplink_scheme" />
</intent-filter>
</activity>your_deeplink_scheme
из примера выше укажите название своей схемы. Например,ru.package.name.rustore.scheme
. - При создании
RuStoreBillingClientFactory
укажитеdeeplinkScheme
, которую указывали в файлеAndroidManifest.xml
ранее.val billingClient: RuStoreBillingClient = RuStoreBillingClientFactory.create(
context = app,
consoleApplicationId = "111111",
deeplinkScheme = "your_deeplink_scheme",
// Опциональные параметры
themeProvider = null,
debugLogs = false,
externalPaymentLoggerFactory = null,
)к сведениюСхема, указанная в
AndroidManifest
-файле должна совпадать со схемой, которую вы указываете в методеcreate
при созданииRuStoreBillingClient
SDK платежей. - Для восстановления состояния вашего приложения при возврате с deeplink-ссылки для
Activity
, в которую необходимо вернуться после оплаты через стороннее приложение, добавьте в файлAndroidManifest.xml
android:launchMode="singleTask"
(см. пример ниже).AndroidManifest.xml<activity
android:name=".YourBillingActivity"
android:launchMode="singleTask"
android:exported="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"> - Далее в
Activity
, в которую необходимо вернуться после совершения оплаты (ваша страница магазина), для который вы прописывалиdeeplinkScheme
, добавьте следующий код.class YourBillingActivity: AppCompatActivity() {
// Previously created with RuStoreBillingClientFactory.create()
private val billingClient: RuStoreBillingClient = YourDependencyInjection.getBillingClient()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
billingClient.onNewIntent(intent)
}
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
billingClient.onNewIntent(intent)
}
}к сведениюМетод
billingClient.onNewIntent(intent)
должен вызываться вonCreate
иonNewIntent
при возврате в приложение после оплаты через СБП — чтобы вызвать шторку для завершения оплаты.
Дополнительные сведения
По ссылке ниже приведены сведения, касающиеся структуры deeplink-ссылок, а также информация о допустимых символах:
https://datatracker.ietf.org/doc/html/rfc3986#section-3.1.
Ссылка ведёт на сторонний ресурс, сведения представлены на английском языке.