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

Руководство по deeplink-ссылкам

В этой статье мы рассмотрим, что такое deeplink-ссылки, для чего они нужны, а также рассмотрим их применение на примерах.

Deeplink (глубокая ссылка) — это URL-адрес, который ведёт не на основной экран приложения, а на конкретный раздел или функцию внутри него. Таким образом, вместо открытия главной страницы магазина, ссылка может сразу перенаправить пользователя на карточку товара или корзину.

подсказка

Пример deeplink-ссылки:
myapp://profile/123 — переход к профилю пользователя с ID 123.

  1. Улучшение пользовательского опыта
    Deeplink позволяет сократить количество шагов для выполнения действия. Пользователи мгновенно попадают на нужный экран, что делает взаимодействие с приложением удобнее.

  2. Маркетинговые кампании
    В маркетинговых кампаниях deeplink-ссылки помогают привлекать пользователей к конкретным акциям, продуктам или функциям приложения. Нажав на ссылку, пользователь сразу открывает карточку этого товара в приложении, минуя поисковую строку и навигацию.

подсказка

Push-уведомление с прикрепленной deep-link ссылкой: «Скидка 20% на ваш любимый бренд! Нажмите, чтобы заказать» — ведёт прямо на страницу бренда.

  1. Интеграция с другими сервисами
    Deeplink значительно упрощает взаимодействие с внешними приложениями, например, платёжными сервисами или партнёрскими программами.
подсказка

Оплата через стороннее приложение (например, СБП или SberPay) с последующим автоматическим возвратом на экран подтверждения в вашем приложении.

  1. Структура deeplink-ссылки Глубокие ссылки имеют чётко структурированный формат, который указывает на определённый экран или действие. Пример:
  • myapp://profile/123 — открывает профиль пользователя.
  • myapp://order/987 — ведёт на страницу заказа №987.
  • myapp://payment?amount=100 — запускает экран оплаты с предзаполненной суммой.
  1. Обработка deeplink в приложении Для работы с deeplink-ссылками необходимо настроить приложение, чтобы оно могло распознавать такие URL и выполнять соответствующие действия. Это достигается:
  • через обработчики намерений (Intents) в Android;
  • через настройку схемы ссылок или универсальных ссылок (App Links).
  1. Навигация и действия Когда пользователь нажимает на deeplink, система Android открывает приложение и передаёт параметры ссылки. Далее приложение обрабатывает запрос и перенаправляет пользователя на нужный экран.

Обработка deeplink в SDK платежей необходима для корректной работы с приложениями банков и платёжных систем (например, СБП, SberPay, Tinkoff Pay). Основные задачи deeplink в SDK платежей:

  1. Автоматическое завершение оплаты После перехода в стороннее приложение для оплаты, например, банк-клиент или сервис СБП, deeplink позволяет автоматически вернуть пользователя в ваше приложение, чтобы показать статус транзакции (успешная/неуспешная).
подсказка

Пользователь подтверждает покупку через приложение банка. После оплаты deeplink возвращает его на экран подтверждения заказа в вашем приложении.

  1. Сокращение пути оплаты Deeplink-ссылки упрощают процесс оплаты, направляя пользователя сразу на нужный экран стороннего приложения, минуя лишние действия.
подсказка

Ссылка myapp://payment/redirect открывает приложение банка, где пользователь подтверждает оплату, затем deeplink автоматически возвращает пользователя в ваше приложение

  1. Интеграция с популярными платёжными сервисами Deeplink особенно важен для платежей через СБП и сервисы, например, SberPay или Tinkoff Pay, так как эти системы работают в связке с приложениями банков. Благодаря deep-link схеме пользователь автоматически возвращается в ваше приложение.
подсказка

Пользователь выбирает оплату через Tinkoff Pay. SDK формирует deeplink, который переводит его в приложение банка для подтверждения. После завершения операции пользователь возвращается в ваше приложение для просмотра итогов.

  1. Укажите 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.
  2. При создании 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 платежей.

  3. Для восстановления состояния вашего приложения при возврате с 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">
  4. Далее в 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.

примечание

Ссылка ведёт на сторонний ресурс, сведения представлены на английском языке.