adjust-icon

设置延迟深度链接

延迟深度链接让未安装您应用的用户可以点击 Adjust 链接,从 App Store 安装应用,并在首次打开应用时直接跳转至其目标内容。

工作原理

以下是延迟深度链接的基本流程:

  1. 用户点击 Adjust 深度链接。
  2. Adjust 服务器将用户重定向至 App Store。
  3. 用户安装并打开您的应用。
  4. Adjust 服务器进行归因,并将深度链接发送至 Adjust SDK。
  5. 如果适用,您的应用将显示其初始界面,例如新客户引导界面和用户登录界面。
  6. Adjust SDK 会向您的应用发送延迟深度链接。您的应用程序随后会处理此链接,将用户引导至相应的界面。(此步骤的具体机制取决于您的设置,如下所述。)

当用户点击 Adjust 品牌化链接 (brandname.go.link),且该链接被延迟时,Adjust 的服务器会使用在 Adjust 控制面板的 iOS 平台设置中配置的应用 Scheme,将其转换为应用 Scheme 格式 (example://),然后传递给 Adjust SDK。

因此,您应设置应用以相同方式处理 Adjust 品牌化链接和应用 Scheme 深度链接。例如,以下两个链接都应打开同一个界面:

  • Adjust 品牌化链接: https://brandname.go.link/summer-clothes?promo=beach
  • 应用 Scheme 深度链接: example://summer-clothes?promo=beach

您的应用需要通过解析延迟深度链接的组件 (例如:路径、查询参数) 来加以处理,并跳转至相应的界面。

设置

  1. 遵循 AppDelegate 中的 AdjustDelegate 协议。如果您已经配置归因回传,可以跳过这一步。
  1. 在初始化 SDK 之前,在 Adjust 配置中将 AppDelegate 指定为委托。
  1. 向应用委托添加 adjustDeferredDeeplinkReceived 回传方法。Adjust SDK 收到延迟深度链接后会调用该方法。

返回值选项

adjustDeferredDeeplinkReceived 的返回值决定了回传代码执行完毕后将执行什么操作:

返回 false (最常见)

如果希望您的应用对延迟深链接的处理时间和方式拥有完全控制权,请采用此方法。返回 false 时,Adjust SDK 不会尝试打开延迟深度链接。例如,如果您的应用需要在处理延迟深度链接之前显示并跳过初始界面 (如新客户引导或登录界面),则此方法十分适用。

返回 true

如果您希望 Adjust SDK 在回传代码运行完毕后立即尝试打开延迟深度链接,请使用此方法。例如,如果您的应用没有任何初始界面,则此方法十分适用。

当 Adjust SDK 收到延迟深度链接时,将运行 Adjust 回传代码,然后 Adjust SDK 会使用该链接调用 application(_:open:options:),iOS 随后根据您的应用设置将其路由到相应的处理程序:

应用实施处理程序
使用 AppDelegate 的 UIKitapplication(_:open:options:)
使用 SceneDelegate 的 UIKitscene(_:openURLContexts:)
SwiftUI.onOpenURL 修饰符

如需处理来自上述相应处理程序的深度链接,请确保您已实施直接深度链接

完整代码示例

此示例展示了一个应用,该应用在处理延迟深度链接之前,必须首先完成其新客户引导流程。以下是示例代码的工作原理摘要。

  1. 未安装相关应用的用户点击 Adjust 深度链接后,会跳转至 App Store。

  2. 用户安装并打开应用。

  3. Adjust SDK 向 Adjust 的服务器发送会话和归因请求。

  4. 应用开始其新客户引导流程。

  5. Adjust 的服务器会返回包含归因数据的响应,其中包括用户点击的深度链接 (“延迟深度链接”)。

  6. Adjust SDK 在应用中触发延迟深度链接回传 (如下面的 AppDelegate 中所示)。相关回传检查是否已完成新用户引导:

    • 如果已完成新客户引导,会立即处理深度链接。
    • 如果未完成新客户引导,则会存储深度链接。
  7. 完成新客户引导后,应用会检查并处理任何已存储的延迟深度链接 (如以下 ViewController 和 ContentView 示例所示)。

  8. 应用将用户引导至深度链接界面。

AppDelegate

突出显示的代码中包含 AppDelegate 的延迟深度链接更新。此示例适用于 UIKit 和 SwiftUI 示例。

UIKit

SwiftUI