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

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

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

에어브릿지 코도바-아이오닉 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"];
+     ...
+ }

안드로이드의 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초로 변경됩니다.

도움이 되었나요?

더 필요한 내용이 있나요?