SDK 마이그레이션 가이드 - 코도바-아이오닉 SDK

에어브릿지 코도바-아이오닉 SDK의 업데이트에 필요한 사항을 확인할 수 있습니다. 현재 버전 이후부터 업데이트 이후 버전까지의 사항을 모두 확인하는 것을 권장합니다.

v2.x에서 v4.0으로 업데이트

에어브릿지 코도바-아이오닉 SDK를 v4.0으로 업데이트하면 확인해 주세요.

옵션

함수 (Cordova)

상수 (Cordova)

함수 (iOS)

함수 (Android)

SDK 설치 및 초기화

airbridge.json 의 키값이 변경되었습니다. 아래와 같이 키값을 변경해 주세요.

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"];
+     ...
+ }

안드로이드의 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.handleURLSchemeDeeplink , AirbridgeCO.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;
+ }

안드로이드의 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());
+ }

인앱 이벤트 및 유저 정보

주의하세요

기존 AirbridgeAttributes.TOTAL_VALUE 대신 AirbridgeAttribute.VALUE 에 값을 입력해 주세요.

AirbridgeAttributes.TOTAL_VALUE 를 사용하고 value 를 정의하면 AirbridgeAttributes.TOTAL_VALUEvalue 를 덮어 쓰는 로직은 Cordova-Ionic SDK v4부터 삭제되었습니다.

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 함수의 두 번째 파라미터에 해당하는 action , label , value , semanticAttributes 값은 Airbridge.trackEvent 함수의 두 번째 파라미터에 포함되어야 합니다.

Airbridge.event.trackEvent 함수의 두 번째 파라미터에 해당하는 customAttributes 값은 Airbridge.trackEvent 함수의 세 번째 파라미터에 포함되어야 합니다.

Airbridge.state.setUser , Airbridge.state.updateUser 함수가 Airbridge.setUser 관련 함수로 대체되었습니다. 유저 정보를 한 번에 설정하는 setUser , updateUser 함수는 지원하지 않습니다.

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.click , Airbridge.placement.impression 함수가 Airbridge.click , Airbridge.impression 함수로 대체되었습니다.

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

Airbridge.createWebInterface 함수가 Airbridge.createWebInterfaceScript , Airbridge.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 업데이트

코도바-아이오닉 SDK 각 버전의 주요 변경사항을 참고해 주세요.

v2.6.0

2023년 9월 4일 이후에 생성된 에어브릿지 앱의 경우, 딥링크 콜백에서 제공하는 딥링크 URL 이 에어브릿지 대시보드에 입력된 내용을 2번 디코딩하여 제공하는 문제가 v2.5.0 ~ v2.5.2 에 있었던 것이 해결되었습니다.

v2.5.0

2023년 9월 4일 이후에 생성된 에어브릿지 앱의 경우, 딥링크 콜백에서 제공하는 딥링크 URL 에 더이상 airbridge_referrer 가 추가되지 않게 됩니다.

ios app 업데이트 하시는 경우, 마지막으로 계산된 SKAdNetwork Conversion Value 로 확정되고, 추가적으로 계산하지 않습니다.

  • 2.5.0 미만 버전에서는 SKAdNetwork Conversion Value 를 최대 24시간 동안만 계산합니다.

  • 새로 설치하시는 유저에 대해서는 문제되지 않습니다.

deeplink.page 가 deprecated 되었습니다. 2.5.0 부터는 abr.ge 로 딥링크 도메인을 사용 하여 코드를 작성 하도록 권장 드립니다

  • deeplink.page 는 하위 호환을 위해 여전히 지원 및 동작은 되고 있습니다.

v2.4.0

trackingAuthorizeTimeout 의 기본값이 30초로 변경됩니다.