Expo SDK

    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 中添加以下设置:

    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 helpful?

    Any questions or suggestions?