SDK 迁移指南 - React Native SDK (v4)

您可以查看更新 Airbridge React Native SDK 过程中需要注意的内容。建议查看当前版本至目标更新版本之间的所有更新详情。

从 v2.x 更新至 v4.0

如果您将 Airbridge React Native SDK 更新至 v4.0,请查看以下内容。

SDK 安装及初始化

airbridge.json 的键名已更改。请参考下方映射进行修改。

airbridge.json (v2)

airbridge.json (v4)

trackingAuthorizeTimeoutSeconds

autoDetermineTrackingAuthorizationTimeoutInSecond

facebookDeferredAppLinkEnabled

trackMetaDeferredAppLinkEnabled

sessionTimeoutSeconds

sessionTimeoutInSecond

metaInstallReferrer

metaInstallReferrerAppID

trackAirbridgeLinkOnly

trackAirbridgeDeeplinkOnlyEnabled

userInfoHashEnabled

hashUserInformationEnabled

sdkSignatureSecretID

sdkSignatureID

sdkSignatureSecret

sdkSignatureSecret

iOS 的 AirbridgeRN.getInstance 函数已被 AirbridgeReactNative.initializeSDK 函数替代。请修改 ios/YOUR_PROJECT_NAME/AppDelegate.m 文件。

123456789101112
- import <AirbridgeRN/AirbridgeRN.h>
- ...
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-     [AirbridgeRN getInstance:@"YOUR_APP_SDK_TOKEN" appName:@"YOUR_APP_NAME" withLaunchOptions:launchOptions];
-     ...
- }
+ import <AirbridgeReactNative/AirbridgeReactNative.h>
+ ...
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+     [AirbridgeReactNative initializeSDKWithName:@"YOUR_APP_NAME" token:@"YOUR_APP_SDK_TOKEN"];
+     ...
+ }

Android 的 AirbridgeRN.init 函数已被 AirbridgeReactNative.initializeSDK 函数替代。请修改 android/app/src/main/java/.../MainApplication.kt 文件。

1234567891011121314
- import co.ab180.airbridge.reactnative.AirbridgeRN;
- ...
- override fun onCreate() {
-     super.onCreate()
-     AirbridgeRN.init(this, "YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
-     ...
- }
+ import co.ab180.airbridge.reactnative.AirbridgeReactNative
+ ...
+ override fun onCreate() {
+     super.onCreate()
+     AirbridgeReactNative.initializeSDK(this, "YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
+     ...
+ }

深度链接

Airbridge.setDeeplinkListener 函数已被 Airbridge.setOnDeeplinkReceived 函数替代。

12345678910
- import Airbridge from 'airbridge-react-native-sdk'
- ...
- Airbridge.setDeeplinkListener((url) => {
-     // show proper content
- })
+ import { Airbridge } from 'airbridge-react-native-sdk'
+ ...
+ Airbridge.setOnDeeplinkReceived((url) => {
+     // show proper content
+ })

iOS 的 AirbridgeRN.deeplink.handleURLSchemeDeeplinkAirbridgeRN.deeplink.handleUserActivity 函数已被 AirbridgeReactNative.trackDeeplink 函数替代。

12345678910111213141516171819202122232425262728293031323334
- import <AirbridgeRN/AirbridgeRN.h>
- ...
- (BOOL)application:(UIApplication *)application
-             openURL:(NSURL *)url
-             options:(NSDictionary<UIApplicationOpenURLOptionsKey, id>*)options
- {
-   [AirbridgeRN.deeplink handleURLSchemeDeeplink:url];
-   return YES;
- }
- 
- -  (BOOL)application:(UIApplication *)application
- continueUserActivity:(NSUserActivity *)userActivity
-   restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
- {
-   [AirbridgeRN.deeplink handleUserActivity:userActivity];
-   return YES;
- }
+ import <AirbridgeReactNative/AirbridgeReactNative.h>
+ ...
+ - (BOOL)application:(UIApplication *)application
+             openURL:(NSURL *)url
+             options:(NSDictionary<UIApplicationOpenURLOptionsKey, id>*)options
+ {
+   [AirbridgeReactNative trackDeeplinkWithUrl:url];
+   return YES;
+ }
+ 
+ -  (BOOL)application:(UIApplication *)application
+ continueUserActivity:(NSUserActivity *)userActivity
+   restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
+ {
+   [AirbridgeReactNative trackDeeplinkWithUserActivity:userActivity];
+   return YES;
+ }

Android 的 AirbridgeRN.processAirbridgeRN.deeplink.processDeeplinkData 函数已被 AirbridgeReactNative.trackDeeplink 函数替代。

123456789101112
- import co.ab180.airbridge.reactnative.AirbridgeRN
- ...
- override fun onResume() {
-   super.onResume()
-   AirbridgeRN.processDeeplinkData(intent)
- }
+ import co.ab180.airbridge.reactnative.AirbridgeReactNative
+ ...
+ override fun onResume() {
+   super.onResume()
+   AirbridgeReactNative.trackDeeplink(intent)
+ }

应用内事件及用户信息

注意

请使用 AirbridgeAttribute.VALUE 代替原 AirbridgeAttributes.TOTAL_VALUE 进行赋值。

从 Expo SDK v4 起,AirbridgeAttributes.TOTAL_VALUE 覆盖 value 赋值的逻辑已被删除。

Airbridge.event.trackEvent 函数已被 Airbridge.trackEvent 函数替代。

请参考下方示例代码,将 Airbridge.event.trackEvent 函数修改为 Airbridge.trackEvent 函数。

123456789101112131415161718192021222324252627
- import Airbridge, { AirbridgeAttributes } from 'airbridge-react-native-sdk'
- ...
- Airbridge.event.trackEvent('event', {
-     action: '...',
-     label: '...',
-     value: 100,
-     semanticAttributes: {
-         [AirbridgeAttributes.QUERY]: '...',
-     },
-     customAttributes: {
-         'key1': '...',
-         'key2': '...',
-         'key3': '...',
-     },
- })
+ import { Airbridge, AirbridgeAttribute } from 'airbridge-react-native-sdk'
+ ...
+ Airbridge.trackEvent('event', {
+     [AirbridgeAttribute.ACTION]: '...',
+     [AirbridgeAttribute.LABEL]: '...',
+     [AirbridgeAttribute.VALUE]: 100,
+     [AirbridgeAttribute.QUERY]: '...',
+ }, {
+     'key1': '...',
+     'key2': '...',
+     'key3': '...',
+ })

注意

Airbridge.event.trackEvent 函数的第二个参数中的 actionlabelvaluesemanticAttributes 值,应包含在 Airbridge.trackEvent 函数的第二个参数中。

Airbridge.event.trackEvent 函数的第二个参数中的 customAttributes 值,应包含在 Airbridge.trackEvent 函数的第三个参数中。

Airbridge.state.setUserAirbridge.state.updateUser 函数已被 Airbridge.setUser 相关函数替代。不再支持一次性设置用户信息的 setUserupdateUser 函数。

123456789
- import Airbridge from 'airbridge-react-native-sdk'
- ...
- Airbridge.state.setUser({ ID: '...', email: '...' })
- Airbridge.state.updateUser({ phone: '...' })
+ import { Airbridge } from 'airbridge-react-native-sdk'
+ ...
+ Airbridge.setUserID('...')
+ Airbridge.setUserEmail('...')
+ Airbridge.setUserPhone('...')

高级设置

Airbridge.setAttributionListener 函数已被 Airbridge.setOnAttributionReceived 函数替代。

12345678910
- import Airbridge from 'airbridge-react-native-sdk'
- ...
- Airbridge.setAttribuitonListener((attribution) => {
-     // using attribution
- })
+ import { Airbridge } from 'airbridge-react-native-sdk'
+ ...
+ Airbridge.setOnAttributionReceived((attribution) => {
+     // using attribution
+ })

Airbridge.placement.clickAirbridge.placement.impression 函数已被 Airbridge.clickAirbridge.impression 函数替代。

12345678
- import Airbridge from 'airbridge-react-native-sdk'
- ...
- Airbridge.placement.click(url)
- Airbridge.placement.impression(url)
+ import { Airbridge } from 'airbridge-react-native-sdk'
+ ...
+ Airbridge.click(url)
+ Airbridge.impression(url)

Airbridge.createWebInterface 函数已被 Airbridge.createWebInterfaceScriptAirbridge.handleWebInterfaceCommand 函数替代。

12345678910111213141516171819202122
- import Airbridge from 'airbridge-react-native-sdk'
- ...
- const { script, handle } = Airbridge.createWebInterface(
-     'YOUR_WEB_TOKEN',
-     (command) => { 
-         return `window.ReactNativeWebView.postMessage(${command})`
-     },
- )
- <WebView
-     source={{ uri: 'https://...' }}
-     onMessage={(command) => { handle(command) }}
-     injectedJavaScript={script} />
+ import { Airbridge } from 'airbridge-react-native-sdk'
+ ...
+ const script = await Airbridge.createWebInterface(
+     'YOUR_WEB_TOKEN',
+     'window.ReactNativeWebView.postMessage(payload)',
+ )
+ <WebView
+     source={{ uri: 'https://...' }}
+     onMessage={(command) => { Airbridge.handleWebInterfaceCommand(command) }}
+     injectedJavaScript={script} />

v2.x 更新

请参考各 React Native SDK 版本的主要变更内容。

v2.8.0 - 深度链接

修复了 v2.7.3~v2.5.1 中出现的,2023-09-04 或以后创建的 Airbridge App 在深度链接回调中提供的深度链接 URL 被解码两次的问题。

v2.5.1 - 深度链接、SKAN

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

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

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

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

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

    • 不适用于新安装。

v2.5.0 - 隐私设置

trackingAuthorizeTimeout 的默认值更改为 30 秒。

Was this page helpful?

Have any questions or suggestions?