Руководство по 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при созданииRuStoreBillingClientSDK платежей. - Для восстановления состояния вашего приложения при возврате с deeplink-ссылки для
Activity, в которую необходимо вернуться после оплаты через стороннее приложение, добавьте в файлAndroidManifest.xmlandroid: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.
Ссылка ведет на сторонний ресурс, сведения представлены на английском языке.