SDK 迁移指南 - Cordova-Ionic SDK (v4)

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

从 v2.x 更新至 v4.0

如果您将 Airbridge Cordova-Ionic 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 的 AirbridgeCO.getInstance 函数已被 AirbridgeCordova.initializeSDK 函数替代。请修改 ios/YOUR_PROJECT_NAME/AppDelegate.m 文件。

12345678910
- #import "AirbridgeCO.h"
- ...
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-     [AirbridgeCO getInstance:@"YOUR_APP_SDK_TOKEN" appName:@"YOUR_APP_NAME" withLaunchOptions:launchOptions];
-     ...
- }
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+     [AirbridgeCordova initializeSDKWithName:@"YOUR_APP_NAME" token:@"YOUR_APP_SDK_TOKEN"];
+     ...
+ }

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

12345678910111213141516
- import co.ab180.airbridge.cordova.AirbridgeCO;
- ...
- @Override
- public void onCreate() {
-     super.onCreate();
-     AirbridgeCO.init(this, "YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN");
-     ...
- }
+ import co.ab180.airbridge.cordova.AirbridgeCordova;
+ ...
+ @Override
+ public void onCreate() {
+     super.onCreate();
+     AirbridgeCordova.initializeSDK(this, "YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN");
+     ...
+ }

深度链接

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

123456
- Airbridge.deeplink.setDeeplinkListener(function (deeplink) {
-     // show proper content
- });
+ Airbridge.setOnDeeplinkReceived(function (deeplink) {
+     // show proper content
+ });

iOS 的 AirbridgeCO.deeplink.handleURLSchemeDeeplinkAirbridgeCO.deeplink.handleUserActivity 函数已被 AirbridgeCordova.trackDeeplink 函数替代。

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

Android 的 AirbridgeCO.processDeeplinkData 函数已被 AirbridgeCordova.trackDeeplink 函数替代。

1234567891011121314
- import co.ab180.airbridge.cordova.AirbridgeCO;
- ...
- @Override
- protected void onResume() {
-   super.onResume();
-   AirbridgeCO.processDeeplinkData(getIntent());
- }
+ import co.ab180.airbridge.cordova.AirbridgeCordova;
+ ...
+ @Override
+ protected void onResume() {
+   super.onResume();
+   AirbridgeCordova.trackDeeplink(getIntent());
+ }

应用内事件及用户信息

注意

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

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

Airbridge.event.trackEvent 函数将被删除。

Airbridge.trackEvent 函数的参数已更改,原 action、label、value 需在 semanticAttributes 内定义。

请参考下方示例代码,使用 Airbridge.trackEvent 函数。

1234567891011121314151617181920212223
- Airbridge.trackEvent('event', {
-     action: '...',
-     label: '...',
-     value: 100,
-     semanticAttributes: {
-         [AirbridgeAttributes.QUERY]: '...',
-     },
-     customAttributes: {
-         'key1': '...',
-         'key2': '...',
-         'key3': '...',
-     },
- })
+ 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 函数。

12345
- Airbridge.state.setUser({ ID: '...', email: '...' })
- Airbridge.state.updateUser({ phone: '...' })
+ Airbridge.setUserID('...')
+ Airbridge.setUserEmail('...')
+ Airbridge.setUserPhone('...')

高级设置

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

123456
- Airbridge.setAttribuitonListener((attribution) => {
-     // using attribution
- })
+ Airbridge.setOnAttributionReceived((attribution) => {
+     // using attribution
+ })

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

1234
- Airbridge.placement.click(url)
- Airbridge.placement.impression(url)
+ Airbridge.click(url)
+ Airbridge.impression(url)

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

123456789101112131415161718192021222324252627282930
- var inAppBrowserRef = cordova.InAppBrowser.open(url, target, options);
- inAppBrowserRef.addEventListener('loadstart', loadstartCallback);
- inAppBrowserRef.addEventListener('message', messageCallBack);
- const webInterface = Airbridge.createWebInterface(
-     'YOUR_WEB_TOKEN',
-     (function (arg) {
-         return `window.cordova_iab.postMessage(${arg})`;
-     })
- );
- function loadstartCallback(event) {
-     inAppBrowserRef.executeScript({ code : webInterface.script });
- }
- function messageCallBack(params){
-     webInterface.handle(JSON.stringify(params.data));
- }
+ const script = await Airbridge.createWebInterfaceScript(
+     'YOUR_WEB_TOKEN',
+     (function (arg) {
+         return `window.cordova_iab.postMessage(${arg})`;
+     })
+ );
+ var inAppBrowserRef = cordova.InAppBrowser.open(url, target, options);
+ inAppBrowserRef.addEventListener('loadstart', loadstartCallback);
+ inAppBrowserRef.addEventListener('message', messageCallBack);
+ function loadstartCallback(event) {
+     inAppBrowserRef.executeScript({ code : script });
+ }
+ function messageCallBack(params){
+     Airbridge.handleWebInterfaceCommand(JSON.stringify(params.data));
+ }

v2.x 更新

请参考各 Cordova-Ionic SDK 版本的主要变更内容。

v2.6.0

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

v2.5.0

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

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

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

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

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

    • 不适用于新安装。

v2.4.0

trackingAuthorizeTimeout 的默认值更改为 30 秒。

Was this page helpful?

Have any questions or suggestions?