深度链接指南
在本文中,我们将了解什么是深度链接,需要它们做什么,并通过示例考虑它们的使用。
深度链接是什么
Deeplink(深度链接)是一个URL,它不是指向应用程序的主屏幕,而是指向应用程序中的特定部分或功能。因此,链接可以立即将用户重定向到产品卡或购物车,而不是打开商店的主页。
П深度链接的例子:
myapp://profile/123
— 进入ID为123的用户配置文件。
为什么我们需要深度链接?
-
优化用户体验
Deeplink可减少操作步骤。用户直达目标页面,显著提升应用交互便捷性。 -
营销活动优化
在营销活动中,深度链接(deeplink)可精准引导用户至特定促销、商品或应用功能。用户点击链接后,将直接跳转至应用内对应商品页,无需经过搜索栏或导航菜单。
附带深度链接的推送通知:“你最喜欢的品牌八折优惠!点击订购”——直接进入品牌页面。
- 多服务集成
深度链接(Deeplink)可大幅简化与外部应用的交互流程,例如,支付服务或合作计划。
通过第三方应用程序(例如,SBP或SberPay)付款,然后自动返回到应用程序中的确认屏幕。
深度链接是如何工作的?
- 深度链接结构 深层链接具有指向特定屏幕或操作的结构清晰的格式。 实例:
- myapp://profile/123 — 直接跳转至用户个人主页。
- myapp://order/987 — 定向打开#987订单详情页。
- myapp://payment?amount=100 — 自动进入支付界面并预填金额。
- 处理您应用程序中的深度链接 要使用深度链接,您需要配置你的应用,使它能够识别这样的URL并执行适当的操作。实现方式如下:
- Android中通过意图(Intents)处理器实现;
- 通过配置链接方案或通用链接(App Links)实现。
- 导航和操作 当用户点击深链接时,Android系统打开应用程序并传递链接参数。然后,应用程序处理请求并将用户重定向到所需的屏幕。
为什么在支付SDK中处理深度链接
支付SDK中的深度链接处理是银行和支付系统应用(如SBP、SberPay、Tinkoff Pay)正确操作所必需的。deeplink在支付SDK中的主要任务:
- 自动付款完成 在切换到第三方支付应用程序(如银行客户端或SBP服务)后,deeplink允许您自动将用户返回到您的应用程序以显示交易状态(成功/不成功)。
用户通过银行应用程序确认购买。付款后,deeplink将带您回到应用程序中的订单确认屏幕。
- 缩短支付路径 通过将用户直接引导到第三方应用程序的理想屏幕,deeplink简化了支付过程,绕过了不必要的步骤。
myapp://payment/redirect链接打开用户确认付款的银行应用程序,然后deeplink自动将用户返回到您的应用程序。
- 与流行的支付服务集成 对于通过SBP和SberPay或Tinkoff Pay等服务进行的支付,Deeplink尤其重要,因为这些系统与银行应用程序一起工作。由于deeplink方案,用户自动返回到您的应用程序。
用户选择通过Tinkoff Pay支付。SDK生成一个深链接,将其带到银行的应用程序进行确认。交易完成后,用户返回到应用程序查看结果。
如何正确处理SDK支付的深度链接
-
在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.
-
在创建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方法中指定的方案匹配。
-
为了恢复您的应用程序的状态,当从一个深链接返回一个活动,需要通过第三方应用程序支付后返回,添加android:launchMode="singleTask"到您的AndroidManifest.xml文件(见下面的例子)。
AndroidManifest.xml<activity
android:name=".YourBillingActivity"
android:launchMode="singleTask"
android:exported="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"> -
接下来,在您为其指定了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.
该链接将引导至第三方英文资源页 面。