Expo SDK

NPM Version NPM Version

SDK 安装


包安装

请使用 npm 安装 airbridge-expo-sdk 和 airbridge-react-native-sdk

12
npm install --save airbridge-expo-sdk
npm install --save airbridge-react-native-sdk

注意

Airbridge Expo SDK 不支持 expo go 环境。请使用 expo prebuild 或 eas build

Project 设置

app.json

请在 app.json 中添加以下设置:

123456789101112131415
{
  "expo": {
    ...
    "plugins": [
      ...
      [
        "airbridge-expo-sdk",
        {
          "appName": "APP_NAME",
          "appToken": "APP_TOKEN"
        }
      ]
    ]
  }
}

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

airbridge.json

  1. 请在 Project 文件夹中创建 airbridge.json 文件。

  2. 请以 JSON 格式进行设置。

示例

123456789101112
{
    "sessionTimeoutSeconds": 300,
    "autoStartTrackingEnabled": true,
    "userInfoHashEnabled": true,
    "trackAirbridgeLinkOnly": false,
    "facebookDeferredAppLinkEnabled": false,
    "locationCollectionEnabled": false,
    "trackingAuthorizeTimeoutSeconds": 30,
    "sdkSignatureSecretID": "YOUR_SDK_SIGNATURE_SECRET_ID",
    "sdkSignatureSecret": "YOUR_SDK_SIGNATURE_SECRET",
    "logLevel": "warning"
}

名称

类型

默认值

说明

sessionTimeoutSeconds

Number

300

即使用户重新启用 App,如果是在设定的会话期间内,也会被视为同一会话,不会重新发送 App 启用事件。

autoStartTrackingEnabled

Boolean

true

如果设置为 false,则在调用 Airbridge.state.startTracking() 之前不会发送任何事件。

userInfoHashEnabled

Boolean

true

如果设置为 false,则在发送事件时不会对 User Email 和 User Phone 进行 SHA256 哈希处理。

trackAirbridgeLinkOnly

Boolean

false

如果设置为 true,则只有通过 Airbridge 深度链接打开 App 时才会发送深度链接事件。

facebookDeferredAppLinkEnabled

Boolean

false

当设置为 true、且已安装 Facebook SDK 时,将收取 Facebook Deferred AppLink。

locationCollectionEnabled

Boolean

false

(仅限 Android)如果设置为 true,可以收集设备的位置信息。

使用此功能需要在 AndroidManifest.xml 添加 2 个权限: android.permission.ACCESS_FINE_LOCATION android.permission.ACCESS_COARSE_LOCATION

trackingAuthorizeTimeoutSeconds

Number

30

(仅限 iOS)如果设置 timeout,SDK 将在 timeout 时间内延迟发送安装事件,等待用户在 ATT 弹窗中允许追踪。

sdkSignatureSecretID

String

null

启用 SDK 伪造(SDK Spoofing)防止功能。必须同时应用已发放的 Secret 和 Secret ID。

sdkSignatureSecret

String

null

启用 SDK 伪造(SDK Spoofing)防止功能。必须同时应用已发放的 Secret 和 Secret ID。

logLevel

String

warning

设置 Airbridge log 输出级别。 logLevel: "debug" | "info" | "warning" | "error" | "fault"

检查 SDK 安装

请查看安装并启用 App 时,安装(Install)事件是否收集到。

在 Airbridge 面板检查

从 SDK 发生的事件可在 Airbridge 面板的 [原始数据]>[App 实时记录] 查看。实时记录最多可能会有 5 分钟的延迟。

  1. 请导航至 Airbridge 面板的 [原始数据]>[App 实时记录]。

  2. 请在搜索栏中输入已安装并启用 App 的设备的 ADID (例 : IDFA、IDFV、GAID)。


Airbridge 面板设置

请参阅以下指南在 Airbridge 面板进行深度链接设置:

Project 设置

app.json

请在 app.json 中添加以下设置:

12345678910111213141516171819202122232425262728293031323334353637
{
  "expo": {
    ...
    "scheme": "YOUR_SCHEME",
    "android": {
      ...
      "intentFilters": [{
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "APP_NAME.airbridge.io" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "https", "host": "APP_NAME.deeplink.page" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "APP_NAME.airbridge.io" },
        "category": ["BROWSABLE", "DEFAULT"]
      }, {
        "autoVerify": true,
        "action": "VIEW",
        "data": { "scheme": "http", "host": "APP_NAME.deeplink.page" },
        "category": ["BROWSABLE", "DEFAULT"]
      }]
    },
    "ios": {
      ...
      "associatedDomains": [
        "applinks:APP_NAME.airbridge.io",
        "applinks:APP_NAME.deeplink.page"
      ]
    }
  }
}

YOUR_SCHEME 可在 Airbridge 面板的 [追踪链接]>[深度链接] 获取。

setDeeplinkListener

请注册深度链接或延迟深度链接(Deferred Deep Link)发生时调用的函数。

1234567
import Airbridge from 'airbridge-react-native-sdk'

Airbridge.deeplink.setDeeplinkListener((deeplink) => {
    // code that will run when app is opened with deep-link or deferred-deep-link
    // deeplink = YOUR_SCHEME://...
    console.log(deeplink)
})

注意

如果多次调用 setDeeplinkListener,只有最后一个 Listener 会收取深度链接数据。

检查深度链接设置

可以通过点击 URI Scheme 来检查 Airbridge SDK 中的深度链接是否已正确设置。

  • YOUR_SCHEME://

如果深度链接设置正确无误,您可在 Airbridge 面板的 [原始数据]>[App 实时记录] 中查看深度链接事件记录。

用户设置


有关用户设置,请参阅以下指南:

设备设置


有关设备设置,请参阅以下指南:

事件设置


有关事件设置,请参阅以下指南:

高级设置


Restricted SDK

如果由于隐私法等原因无法收集 ADID (Advertising ID,广告 ID),您可以使用移除了 ADID 收集功能的 Restricted SDK。airbridge-expo-sdk-restricted 从 2.5.2 版本开始支持。

SDK 签名 (SDK Signature) 设置

您可通过 SDK 签名防止 SDK 伪造(SDK Spoofing)。SDK 签名从 airbridge_expo_sdk@2.2.0、 airbridge-react-native-sdk@2.3.0 版本开始可用。

请以 JSON 格式将以下设置输入 Project 文件夹的 airbridge.json 文件:

1234
{
    "sdkSignatureSecretID": "YOUR_SDK_SIGNATURE_SECRET_ID",
    "sdkSignatureSecret": "YOUR_SDK_SIGNATURE_SECRET"
}

为了设置 SDK 签名,需要 SDK 签名凭证。请参阅 本指南 获取 SDK 签名凭证。

其他设置

有关其他高级设置,请参阅以下指南:

故障排除


expo-route

如果您已在使用 expo-route,安装 SDK 后,expo-route 功能可能停止工作。

通过 Airbridge 追踪链接进入 App 时,需要将进入的链接通过 Airbridge 转换为 URI Scheme 深度链接后再进行 route 处理。但是,由于 expo-router 的影响,可能会导致 route 处理重复或错误跳转等问题。

因此,Airbridge Expo SDK 设计为 route 处理深度链接。请通过以下设置,使 route 在 airbridge.deeplink.setDeeplinkListener 内处理。

12345678
import * as Router from 'expo-router';

const router = Router.useRouter();

airbridge.deeplink.setDeeplinkListener((_deeplink) => {
  // route deeplink
  router.push(...);
});

Webcredentials

App 使用 Autofill 功能保存密码时,如果没有设置 webcredentials:... ,密码将被保存至 applinks:YOUR_APP_NAME.airbridge.io 或 applinks:YOUR_APP_NAME.abr.ge 域名中。

如果希望更改保存密码的域名,请将 example.com 更改为您希望使用的域名,并按照以下步骤进行设置:

1. 请将以下代码托管 (host) 至 https://example.com/.well-known/apple-app-site-association

12345
{
    "webcredentials": {
        "apps": ["TEAM_ID.APP_BUNDLE_ID"]
    }
}
  • 示例:9JA89QQLNQ.com.apple.wwdc

2. 请在 app.json 添加 webcredentials:example.com

123456789
{
  "expo": {
    "ios": {
      "associatedDomains": [
        "webcredentials:example.com"
      ]
    }
  }
}

迁移指南


更新 SDK 时,请考虑以下内容:

2.6.0

对于 2023-09-04 或以后创建的 Airbridge App,2.5.0~2.5.2 版本中存在的深度链接回调提供的深度链接 URL 被解码 2 次的问题得到解决。

2.5.1

对于 2023-09-04 或以后创建的 Airbridge App,深度链接回调提供的深度链接 URL 中不再添加 airbridge_referrer

更新 iOS App 时,SKAN 转化值将以最后计算的值为准,不会进行额外计算。

  • 2.5.1 以下版本计算 SKAN 转化值的时间最多为 24 小时。

  • 对于新安装,这不会成为问题。

deeplink.page 已被弃用。从 2.5.1 版本开始,请使用 abr.ge 作为深度链接域名进行代码编写。

  • 为了保持向后兼容性,deeplink.page 仍然受支持并可正常运行。

2.5.0

trackingAuthorizeTimeout 的默认值更改为 30 秒。

1.x.x → 2.0.0 更新

原有的 1 版本中的事件发送 API 已被删除,并被以下 API 所取代:

123456
/**
 * Send event to server.
 * @param {string} category event name
 * @param {EventOption} [option={}] event options
 */
trackEvent(category: string, option?: EventOption): void;

有关更多信息,请参阅 Expo SDK 2.1.0 迁移指南

1.0.0 → 1.1.0 更新

请参阅 迁移指南

Was this page helpful?

Have any questions or suggestions?