跳到主要内容

深度链接指南

在本文中,我们将了解什么是深度链接,需要它们做什么,并通过示例考虑它们的使用。

深度链接是什么

Deeplink(深度链接)是一个URL,它不是指向应用程序的主屏幕,而是指向应用程序中的特定部分或功能。因此,链接可以立即将用户重定向到产品卡或购物车,而不是打开商店的主页。

提示

П深度链接的例子:
myapp://profile/123 — 进入ID为123的用户配置文件。

为什么我们需要深度链接?

  1. 优化用户体验
    Deeplink可减少操作步骤。用户直达目标页面,显著提升应用交互便捷性。

  2. 营销活动优化
    在营销活动中,深度链接(deeplink)可精准引导用户至特定促销、商品或应用功能。用户点击链接后,将直接跳转至应用内对应商品页,无需经过搜索栏或导航菜单。

提示

附带深度链接的推送通知:“你最喜欢的品牌八折优惠!点击订购”——直接进入品牌页面。

  1. 多服务集成
    深度链接(Deeplink)可大幅简化与外部应用的交互流程,例如,支付服务或合作计划。
提示

通过第三方应用程序(例如,SBP或SberPay)付款,然后自动返回到应用程序中的确认屏幕。

深度链接是如何工作的?

  1. 深度链接结构 深层链接具有指向特定屏幕或操作的结构清晰的格式。 实例:
  • myapp://profile/123 — 直接跳转至用户个人主页。
  • myapp://order/987 — 定向打开#987订单详情页。
  • myapp://payment?amount=100 — 自动进入支付界面并预填金额。
  1. 处理您应用程序中的深度链接 要使用深度链接,您需要配置你的应用,使它能够识别这样的URL并执行适当的操作。实现方式如下:
  • Android中通过意图(Intents)处理器实现;
  • 通过配置链接方案或通用链接(App Links)实现。
  1. 导航和操作 当用户点击深链接时,Android系统打开应用程序并传递链接参数。然后,应用程序处理请求并将用户重定向到所需的屏幕。

为什么在支付SDK中处理深度链接

支付SDK中的深度链接处理是银行和支付系统应用(如SBP、SberPay、Tinkoff Pay)正确操作所必需的。deeplink在支付SDK中的主要任务:

  1. 自动付款完成 在切换到第三方支付应用程序(如银行客户端或SBP服务)后,deeplink允许您自动将用户返回到您的应用程序以显示交易状态(成功/不成功)。
提示

用户通过银行应用程序确认购买。付款后,deeplink将带您回到应用程序中的订单确认屏幕。

  1. 缩短支付路径 通过将用户直接引导到第三方应用程序的理想屏幕,deeplink简化了支付过程,绕过了不必要的步骤。
提示

myapp://payment/redirect链接打开用户确认付款的银行应用程序,然后deeplink自动将用户返回到您的应用程序。

  1. 与流行的支付服务集成 对于通过SBP和SberPay或Tinkoff Pay等服务进行的支付,Deeplink尤其重要,因为这些系统与银行应用程序一起工作。由于deeplink方案,用户自动返回到您的应用程序。
提示

用户选择通过Tinkoff Pay支付。SDK生成一个深链接,将其带到银行的应用程序进行确认。交易完成后,用户返回到应用程序查看结果。

如何正确处理SDK支付的深度链接

  1. 在AndroidManifest.xml文件中指定deeplinkScheme,用于通过第三方应用程序支付后想要返回的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时,指定之前在AndroidManifest.xml文件中指定的deeplinkScheme。

    val billingClient: RuStoreBillingClient = RuStoreBillingClientFactory.create(
    context = app,
    consoleApplicationId = "111111",
    deeplinkScheme = "your_deeplink_scheme",
    // Опциональные параметры
    themeProvider = null,
    debugLogs = false,
    externalPaymentLoggerFactory = null,
    )
    信息

    在AndroidManifest文件中指定的方案必须与创建RuStoreBillingClient SDK支付时在create方法中指定的方案匹配。

  3. 为了恢复您的应用程序的状态,当从一个深链接返回一个活动,需要通过第三方应用程序支付后返回,添加android:launchMode="singleTask"到您的AndroidManifest.xml文件(见下面的例子)。

    AndroidManifest.xml
    <activity
    android:name=".YourBillingActivity"
    android:launchMode="singleTask"
    android:exported="true"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustResize">
  4. 接下来,在您为其指定了deeplinkScheme的付款后需要返回的Activity(您的商店页面)中,添加以下代码。

    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)
    }
    }

    信息

    应在 onCreate 和 onNewIntent 方法中调用 billingClient.onNewIntent(intent),以确保用户通过快速支付系统完成支付返回应用时,能正确触发支付结果弹窗。

附加信息

以下链接提供关于深度链接(deeplink)的结构详情及允许使用的字符集说明: https://datatracker.ietf.org/doc/html/rfc3986#section-3.1.

备注

该链接将引导至第三方英文资源页面。