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

    Any questions or suggestions?