Руководство по deeplink-ссылкам
В этой статье мы рассмотрим, что такое deeplink-ссылки, для чего они нужны, а также рассмотрим их применение на примере.
Что такое deeplink-ссылки
Ссылки deeplink, или глубокие ссылки, в контексте разработки под Android представляют собой URL-адреса, которые ведут не к основному экрану приложения, а к конкретному месту внутри приложения. Они позволяют пользователям напрямую переходить к определённым функциям или экранам внутри вашего приложения, минуя главный экран.
Зачем нужны deeplink-ссылки
- Улучшенный пользовательский опыт
Пользователи могут мгновенно получить доступ к нужным им функциям без необходимости проходить через главный экран приложения. - Маркетинговые кампании
Deeplink-ссылки могут быть использованы в маркетинговых кампаниях для направления пользователей к определенным экранам или функциям, что может повысить их вовлеченность. - Интеграция с другими сервисами
Deeplink-ссылки полезны при интеграции с другими сервисами, например: для совершения покупок через сторонние приложения.
Как работают deeplink-ссылки
- Определение структуры
Ссылки deeplink обычно содержат структурированный URL-адрес, который указывает на конкретный экран или действие внутри приложения. Например,myapp://profile/123
. - Обработка в приложении
Приложение должно уметь распознавать и обрабатывать такие URL-адресы. Это обычно осуществляется через обработчики намерений (Intents) или через собственные механизмы обработки URL. - Навигация
Когда пользователь нажимает на deeplink-ссылку, система Android перенаправляет приложение на указанный экран или выполняет указанное действие.
Предположим, у нас есть приложение социальной сети и deeplink-ссылка для перехода к профилю пользователя:
myapp://profile/123
.
Когда пользователь нажимает на этот URL-адрес, приложение перенаправляет его на экран профиля пользователя с ID 123.
Зачем обрабатывать deeplink-ссылки в SDK платежей
Ссылки deeplink в SDK платежей необходимо обрабатывать для корректного завершения оплаты через СБП. Сама схема deeplink необходима для возврата в ваше приложение после оплаты через стороннее приложение (например, SberPay или СБП).
Как правильно обрабатывать 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.
Ссылка ведёт на сторонний ресурс, сведения представлены на английском языке.