DeepLink Plan - React Native SDK (v4)

NPM Version

本指南介绍如何安装 Airbridge React Native SDK 并进行必要的配置。

React Native SDK 安装

您可以通过以下方法安装 Airbridge React Native SDK。安装后,可以 测试 React Native SDK 来检查 SDK 是否正确安装。

1. 使用 npm 安装 airbridge-react-native-sdk。

1
npm install airbridge-react-native-sdk

2. 使用 CocoaPods 安装 iOS 依赖项。Android 依赖项会自动安装。

1
cd ios; pod install

Restricted SDK

提示

请根据需求选择一般 SDK 或 Restricted SDK, 只能安装其中一个。

根据政策或环境,可能需要对收集 设备 ID(例如 GAID 或 IDFA)进行限制。如果安装 Restricted SDK,Airbridge SDK 不会收集设备 ID。

请按照以下步骤安装 Restricted SDK:

1. 使用 npm 安装 airbridge-react-native-sdk-restricted。

1
npm install airbridge-react-native-sdk-restricted

2. 使用 CocoaPods 安装 iOS 依赖项。Android 依赖项会自动安装。

1
cd ios; pod install

SDK 初始化

iOS SDK 与 Android SDK 的初始化方式不同。请参阅以下指南。

YOUR_APP_NAME 和 YOUR_APP_SDK_TOKEN 可在 Airbridge 面板的 [设置]>[Token] 获取。

iOS

将以下代码添加至 ios/YOUR_PROJECT_NAME/AppDelegate.m 文件中:

123456
import AirbridgeReactNative
...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    AirbridgeReactNative.initializeSDK(name: "YOUR_APP_NAME", token:"YOUR_APP_SDK_TOKEN")
    ...
}

Android

将以下代码添加至 android/app/src/main/java/.../MainApplication.kt 文件中:

1234567
import co.ab180.airbridge.reactnative.AirbridgeReactNative
...
override fun onCreate() {
    super.onCreate()
    AirbridgeReactNative.initializeSDK(this, "YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
    ...
}

SDK 设置

输入用于 Airbridge React Native SDK 的配置值。

1234
{
    "autoDetermineTrackingAuthorizationTimeoutInSecond": number,
    "isHandleAirbridgeDeeplinkOnly" : boolean
}

1. 在 React Native Project 文件夹的顶部创建 airbridge.json 文件,并按照上方示例输入 JSON。

2. 对于不需要配置的值,省略对应的键。

有关配置值的更多信息,参阅以下指南:

ATT 弹窗提供

提示

为确保遵守隐私政策所需的功能,应与法律顾问共同审查。

在 iOS 环境中,只有在通过 ATT(App Tracking Transparency,应用跟踪透明度)弹窗征得用户同意后,才能收集 IDFA

收集安装事件应延迟到用户允许追踪后进行。IDFA 会与安装事件一同收集,因此如果在用户通过 ATT 弹窗允许追踪之前收集安装事件,IDFA 将缺失,影响绩效监测。建议设置足够的延迟时间,以确保 IDFA 被正确收集。

1. 准备好您将在 ATT 弹窗中使用的文本。

2. 按照 Apple 文档 设置 ATT 弹窗。

3. 如果未收集到安装事件,Airbridge React Native SDK 会在每次 App 启用时延迟 30 秒尝试收集安装事件,直到用户允许追踪为止。如果用户在决定是否允许追踪之前关闭 App,SDK 将不会收集安装事件,并会在下次启用 App 时重试。

您可以使用 SDK 设置autoDetermineTrackingAuthorizationTimeoutInSecond 函数修改延迟时间。该函数的默认值为 30 秒,最大可设置为 3600 秒(1 小时)。

提示

在 DeepLink Plan 中,建议将 setAutoDetermineTrackingAuthorizationTimeout 函数设为 0 秒。DeepLink Plan 不支持基于标识符的归因。为了使安装 App 的用户能立即通过 延迟深度链接 跳转至预设目标页面,建议将该函数设为 0 秒。

您可以通过设置深度链接,将点击包含追踪链接的广告的用户跳转至 App 的特定页面。此外,还可以基于追踪链接收集的信息,在 Airbridge 面板查看通过深度链接产生的绩效。

Airbridge 深度链接的工作原理

Airbridge 在追踪链接打开时,会根据用户环境,将追踪链接中配置的 URI Scheme 深度链接转换为最适合的 Airbridge 深度链接(HTTP 深度链接或 URI Scheme 深度链接)以引导用户进入 App。随后,Airbridge SDK 会将 Airbridge 深度链接重新转换为追踪链接中配置的 URI Scheme 深度链接,并传递至 App。

  • 追踪链接中配置的 URI Scheme 深度链接示例:YOUR_SCHEME://product/12345

  • Airbridge 深度链接示例:

    • HTTP 深度链接格式 1:https://YOUR_APP_NAME.airbridge.io/~~~

    • HTTP 深度链接格式 2:https://YOUR_APP_NAME.abr.ge/~~~

    • URI Scheme 深度链接格式:YOUR_SCHEME://product/12345?airbridge_referrer=~~~

当 App 已安装时,用户点击追踪链接后,App 将通过 Airbridge 深度链接打开。随后,Airbridge SDK 会将该 Airbridge 深度链接转换为追踪链接中配置的 URI Scheme 深度链接,并将转换后的 URI Scheme 深度链接传递给 App。

当 App 未安装时,用户点击追踪链接后,Airbridge SDK 会保存 Airbridge 深度链接信息。用户被发送至应用商店或网站安装并打开 App 后,Airbridge SDK 会将保存的 Airbridge 深度链接转换为追踪链接中配置的 URI Scheme 深度链接,并将转换后的 URI Scheme 深度链接传递给 App。

深度链接设置

请按照以下步骤设置深度链接。准备在 Airbridge 面板中注册的深度链接信息和用户跳转目的地的 App 内页面地址。

首先,在 Airbridge 面板注册深度链接信息。

在 Airbridge 面板注册深度链接信息后,进行设置启用以下功能:

延迟深度链接(Deferred Deep Link)设置

当 App 未安装时,如果用户点击了设置了延迟深度链接的追踪链接,Airbridge 深度链接信息将被保存。Airbridge SDK 会通过以下方法来获取保存的深度链接:

延迟深度链接会自动传递给 OnDeeplinkReceived,无需额外设置。

测试

可通过 SDK 运行测试和深度链接测试,验证 Airbridge SDK 和深度链接是否正常运行。

高级设置

提示

此功能并非必需功能,请在设置前确认需求。

仅收集 Airbridge 深度链接

提示

Airbridge React Native SDK 需为 v4.1.2 或以上版本。

通过 Airbridge React Native SDK 的 setOnDeeplinkReceived 方法接收的深度链接,不仅包括 Airbridge 深度链接,还可能包括其他解决方案的深度链接或自定义深度链接。

12345
import { Airbridge } from 'airbridge-react-native-sdk';
...
Airbridge.setOnDeeplinkReceived((url) => {
    // show proper content using url
})

您可以通过将 SDK 设置isHandleAirbridgeDeeplinkOnly 设置为 true,仅收集 Airbridge 深度链接。

Was this page helpful?

Have any questions or suggestions?