에어브릿지 안드로이드 SDK를 업데이트하는 과정에 필요한 내용을 확인할 수 있습니다. 현재 버전 이후부터 업데이트 이후 버전까지의 내용을 모두 확인하는 것을 권장합니다.
에어브릿지 안드로이드 SDK를 v4.0으로 업데이트하면 확인해 주세요. 아래에서 모든 변경사항을 확인할 수 있습니다.
Unit |
Initializes the SDK with the provided app and AirbridgeOption. |
Unit |
Enables the SDK. |
Unit |
Disables the SDK. |
Boolean |
Checks whether the SDK is currently enabled. |
Unit |
Start collecting and transferring events. |
Unit |
Sets the key, value pair to the device alias. |
Unit |
Removes the device alias with the given key. |
Unit |
Clears all device aliases. |
Unit |
Sets the user ID. |
Unit |
Sets the user email. |
Unit |
Sets the user phone number. |
Unit |
Sets the key, value pair to the user attribute. |
Unit |
Sets the key, value pair to the user attribute. |
Unit |
Sets the key, value pair to the user attribute. |
Unit |
Sets the key, value pair to the user attribute. |
Unit |
Sets the key, value pair to the user attribute. |
Unit |
Sets the key, value pair to the user attribute. |
Unit |
Removes the user attribute with the given key. |
Unit |
Clears all user attributes. |
Unit |
Sets the key, value pair to the user alias. |
Unit |
Removes the user alias with the given key. |
Unit |
Clears all user aliases. |
Unit |
Clears all user information. |
Unit |
Registers the FCM registration token to track app uninstalls. |
Boolean |
Silent notifications are sent without any data. However, the notification may be shown to the user depending on the onMessageReceived settings. determine whether it is an app deletion tracking push message. |
Unit |
track events. |
Boolean |
Handle Airbridge's deep link from the provided intent and invoke a callback based on the result. |
Boolean |
Handle deferred deep link and invoke a callback based on the result. |
Boolean |
Queries the tracking link to the server to get the deeplink information and then moves according to that information if a deeplink is set up. It also adds a click event for the tracking link. |
Boolean |
Adds an impression event for the tracking link. |
Unit |
Enables the Android SDK to automatically pull all events from the web SDK that is installed on the website of the WebView environment. |
Boolean |
Fetches the Device UUID using the provided callbacks for success and failure. |
Boolean |
fetch Google install referrer |
Boolean |
fetch Huawei install referrer |
Boolean |
fetch One store install referrer |
Boolean |
fetch Galaxy store install referrer |
Boolean |
fetch Meta install referrer |
Boolean |
fetch Google Advertising ID info |
Boolean |
fetch Huawei Advertising ID info |
Unit |
This method was deprecated in v4. use |
AirbridgeDeviceInfo |
This method was deprecated in v4. use |
AirbridgeUser |
This method was deprecated in v4. use |
Unit |
This method was deprecated in v4. use |
Unit |
This method was removed in v4. use |
Unit |
This method was deprecated in v4. use |
Unit |
This method was deprecated in v4. use |
Unit |
This method was deprecated in v4. use |
Unit |
This method was deprecated in v4. use |
Unit |
This method was deprecated in v4. use |
Unit |
This method was deprecated in v4. use |
Class name | Description |
---|---|
AirbridgeOption |
|
AirbridgeCategory |
|
AirbridgeAttributes |
|
OnSuccess | OnSuccess callback |
OnFailure | OnFailure callback |
AirbridgeLogLevel | Airbridge log level |
Class name | Description |
---|---|
Event | This class was hidden in v4. use |
Class name | Description |
---|---|
AirbridgeConfig | This class was removed in v4. use |
StandardEventCategory | This class was removed in v4. use |
SemanticAttributes | This class was removed in v4. use |
Product | This class was removed in v4. use |
AirbridgeCallback | This class was removed in v4. use |
OnDeferredDeeplinkReceiveListener | This class was removed in v4. use |
OnDeferredDeeplinkDetermineListener | This class was removed in v4. |
AirbridgeDeviceInfo | This method was removed in v4. use |
AirbridgeUser | This method was removed in v4. use |
Class name | Description |
---|---|
AdvertisingIdInfo | move |
ReferrerDetails | move |
AirbridgeConfig | AirbridgeOption | default value |
---|---|---|
|
| - |
|
| - |
|
|
|
|
| 300 |
|
| true |
|
| true |
|
| false |
|
| false |
|
| false |
|
| false |
|
| false |
|
| true |
|
| false |
|
| true |
|
| “” |
|
| “native” |
|
| Int.MAX_VALUE |
|
| Long.MAX_VALUE |
|
| 0 |
|
| emptyList() |
| remove | - |
| remove | - |
|
| null |
|
| null |
|
| null |
Airbridge.init(Application, AirbridgeConfig)
가Airbridge.initializeSDK(Application, AirbridgeOption)
으로 변경됐습니다.
AirbridgeConfig
가 AirbridgeOption
으로 변경됐습니다. AirbridgeConfig.Builder
가 AirbridgeOptionBuilder
로 변경됐습니다. AirbridgeOptionBuilder
에 있는 일부 함수 이름이 변경되거나 삭제됐습니다.
아래 예시를 참고해 주세요.
override fun onCreate() {
super.onCreate()
val option = AirbridgeOptionBuilder("YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
.build()
Airbridge.initializeSDK(this, option)
}
@Override
public void onCreate() {
super.onCreate();
AirbridgeOption option = new AirbridgeOptionBuilder("YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
.build();
Airbridge.initializeSDK(this, option);
}
함수 이름이 getDeeplink()
에서 handleDeeplink()
로 변경되었습니다. AirbridgeCallback
이 삭제 되고 OnSuccess
, OnFailure
listener가 추가되었습니다. return 값을 통해 해당 함수의 동작 여부를 확인할 수 있습니다.
val result = Airbridge.handleDeeplink(
intent = intent
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.handleDeeplink(
intent,
uri -> { },
throwable -> { }
);
listener
을 추가하는 기존 디퍼드 딥링크 코드 로직을 더 편하게 화면 이동을 구현할 수 있도록 개선했습니다. listener
을 추가하는 기존 방식은 삭제됐습니다. 대신 에어브릿지 인터페이스로 디퍼드 딥링크를 전달 받을 수 있습니다.
handleDeeplink
와 값을 activity 구성에서 호출할 수 있습니다.
result 값으로 디퍼드 딥링크를 처리할 수 있는 상태인지 확인할 수 있습니다.
디퍼드 딥링크는 앱 설치 이후에 1번만 획득하도록 설계됐습니다. 값을 이미 획득했거나 먼저 호출하면 result는 false입니다.
val result = Airbridge.handleDeferredDeeplink(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.handleDeferredDeeplink(
uri -> { },
throwable -> { }
);
아래 기존 API가 삭제되었습니다. 또한 StandardEventCategory, SemanticAttributes
, Product
가 삭제되었습니다.
trackEvent(category: StandardEventCategory, action: String? = null, label: String? = null, value: Number? = null, customAttributes: Map<String, Any?>? = null, semanticAttributes: Map<String, Any?>? = null)
trackEvent(category: String, action: String? = null, label: String? = null, value: Number? = null, customAttributes: Map<String, Any?>? = null, semanticAttributes: Map<String, Any?>? = null)
trackEvent(event: Event)
새로운 API 가 추가되었습니다.
trackEvent(category: String, semanticAttributes: Map<String, Any>? = null, customAttributes: Map<String, Any>? = null)
AirbridgeCategory
가 추가되었습니다. event category string은 미리 정의되어 있습니다.
기타 정보 전달을 위한 함수 override 와 객체(SemanticAttributes
, Product
)가 삭제됐습니다.
대신 map 을 통해 어트리뷰트(attribute)을 전달하도록 수정되었습니다. map의 키 값은 AirbridgeAttribute
에 string으로 미리 정의되어 있습니다. 커스텀 어트리뷰트는 string으로 직접하여 전달할 수 있습니다.
아래에서 AirbridgeCategory, AirbridgeAttribute 매핑과 trackEvent
함수를 참고해 주세요.
키 | 타입 | 값 |
---|---|---|
SIGN_UP | String | airbridge.user.signup |
SIGN_IN | String | airbridge.user.signin |
SIGN_OUT | String | airbridge.user.signout |
HOME_VIEWED | String | airbridge.ecommerce.home.viewed |
PRODUCT_LIST_VIEWED | String | airbridge.ecommerce.productList.viewed |
SEARCH_RESULTS_VIEWED | String | airbridge.ecommerce.searchResults.viewed |
PRODUCT_VIEWED | String | airbridge.ecommerce.product.viewed |
ADD_PAYMENT_INFO | String | airbridge.addPaymentInfo |
ADD_TO_WISHLIST | String | airbridge.addToWishlist |
ADDED_TO_CART | String | airbridge.ecommerce.product.addedToCart |
INITIATE_CHECKOUT | String | airbridge.initiateCheckout |
ORDER_COMPLETED | String | airbridge.ecommerce.order.completed |
ORDER_CANCELED | String | airbridge.ecommerce.order.canceled |
START_TRIAL | String | airbridge.startTrial |
SUBSCRIBE | String | airbridge.subscribe |
UNSUBSCRIBE | String | airbridge.unsubscribe |
AD_IMPRESSION | String | airbridge.adImpression |
AD_CLICK | String | airbridge.adClick |
COMPLETE_TUTORIAL | String | airbridge.completeTutorial |
ACHIEVE_LEVEL | String | airbridge.achieveLevel |
UNLOCK_ACHIEVEMENT | String | airbridge.unlockAchievement |
RATE | String | airbridge.rate |
SHARE | String | airbridge.share |
SCHEDULE | String | airbridge.schedule |
SPEND_CREDITS | String | airbridge.spendCredits |
키 | 타입 | 값 |
---|---|---|
ACTION | String | action |
LABEL | String | label |
VALUE | String | value |
CURRENCY | String | currency |
ORIGINAL_CURRENCY | String | originalCurrency |
PRODUCTS | String | products |
PRODUCT_ID | String | productID |
PRODUCT_NAME | String | name |
PRODUCT_PRICE | String | price |
PRODUCT_QUANTITY | String | quantity |
PRODUCT_CURRENCY | String | currency |
PRODUCT_POSITION | String | position |
PRODUCT_CATEGORY_ID | String | categoryID |
PRODUCT_CATEGORY_NAME | String | categoryName |
PRODUCT_BRAND_ID | String | brandID |
PRODUCT_BRAND_NAME | String | brandName |
PERIOD | String | period |
IS_RENEWAL | String | isRenewal |
RENEWAL_COUNT | String | renewalCount |
PRODUCT_LIST_ID | String | productListID |
CART_ID | String | cartID |
TRANSACTION_ID | String | transactionID |
TRANSACTION_TYPE | String | transactionType |
TRANSACTION_PAIRED_EVENT_CATEGORY | String | transactionPairedEventCategory |
TRANSACTION_PAIRED_EVENT_TIMESTAMP | String | transactionPairedEventTimestamp |
TOTAL_QUANTITY | String | totalQuantity |
QUERY | String | query |
IN_APP_PURCHASED | String | inAppPurchased |
CONTRIBUTION_MARGIN | String | contributionMargin |
ORIGINAL_CONTRIBUTION_MARGIN | String | originalContributionMargin |
LIST_ID | String | listID |
RATE_ID | String | rateID |
RATE | String | rate |
MAX_RATE | String | maxRate |
ACHIEVEMENT_ID | String | achievementID |
SHARED_CHANNEL | String | sharedChannel |
DATE_TIME | String | datetime |
DESCRIPTION | String | description |
IS_REVENUE | String | isRevenue |
PLACE | String | place |
SCHEDULE_ID | String | scheduleID |
TYPE | String | type |
LEVEL | String | level |
SCORE | String | score |
AD_PARTNERS | String | adPartners |
IS_FIRST_PER_USER | String | isFirstPerUser |
Airbridge.trackEvent(
AirbridgeCategory.ORDER_COMPLETED,
mapOf(
// action
AirbridgeAttribute.ACTION to "Tool",
// label
AirbridgeAttribute.LABEL to "Hammer",
// value
AirbridgeAttribute.VALUE to 10,
// semantic attribute (provided by sdk)
AirbridgeAttribute.CURRENCY to "USD",
AirbridgeAttribute.PRODUCTS to listOf(
mapOf(
// semantic attribute value (provided by sdk)
AirbridgeAttribute.PRODUCT_ID to "12345",
// semantic attribute value (not provided by sdk)
"name" to "PlasticHammer",
),
),
// semantic attribute (not provided by sdk)
"totalQuantity" to 1,
),
mapOf(
// custom attribute
"promotion" to "FirstPurchasePromotion",
)
)
Airbridge.trackEvent(
AirbridgeCategory.ORDER_COMPLETED,
new HashMap() {{
// action
put(AirbridgeAttribute.ACTION, "Tool");
// label
put(AirbridgeAttribute.LABEL, "Hammer");
// value
put(AirbridgeAttribute.VALUE, 10);
// semantic attribute (provided by sdk)
put(AirbridgeAttribute.CURRENCY, "USD");
put(AirbridgeAttribute.PRODUCTS, Arrays.asList(
new HashMap() {{
// semantic attribute value (provided by sdk)
put(AirbridgeAttribute.PRODUCT_ID, "12345");
// semantic attribute value (not provided by sdk)
put("name", "PlasticHammer");
}}
));
// semantic attribute (not provided by sdk)
put("totalQuantity", 1);
}},
new HashMap() {{
// custom attribute
put("promotion", "FirstPurchasePromotion");
}}
);
AirbridgeUser
가 삭제되었습니다. 에어브릿지 인터페이스로 AirbridgeUser
를 통해서 접근하는 인터페이스를 접근할 수 있습니다.
Airbridge.getUserInfo()
를 통해서 접근하는 코드 대신 아래 에어브릿지 인터페이스로 교체해 사용해야 합니다.
fun setUserID(id: String)
fun setUserEmail(email: String)
fun setUserPhone(phone: String)
fun setUserAttribute(key: String, value: Int)
fun setUserAttribute(key: String, value: Long)
fun setUserAttribute(key: String, value: Float)
fun setUserAttribute(key: String, value: Double)
fun setUserAttribute(key: String, value: Boolean)
fun setUserAttribute(key: String, value: String)
fun removeUserAttribute(key: String)
fun clearUserAttributes()
fun setUserAlias(key: String, value: String)
fun removeUserAlias(key: String)
fun clearUserAlias()
fun clearUser()
void setUserID(String id)
void setUserEmail(String email)
void setUserPhone(String phone)
void setUserAttribute(String key, int value)
void setUserAttribute(String key, long value)
void setUserAttribute(String key, float value)
void setUserAttribute(String key, double value)
void setUserAttribute(String key, boolean value)
void setUserAttribute(String key, String value)
void removeUserAttribute(String key)
void clearUserAttributes()
void setUserAlias(String key, String value)
void removeUserAlias(key: String)
void clearUserAlias()
void clearUser()
AirbridgeDeviceInfo
가 삭제되었습니다. AirbridgeDeviceInfo
를 통해서 접근하던 인터페이스는 에어브릿지 인터페이스로 접근할 수 있도록 수정되었습니다.
AirbridgeCallback
이 삭제되고 OnSuccess
, OnFailure
listener가 추가되었습니다. 해당 listener 를 통해 성공 여부를 전달 받을 수 있습니다.
Airbridge.getDeviceInfo()를 통해서 접근하는 코드 대신 아래 에어브릿지 인터페이스로 교체해서 사용해야 합니다.
val result = Airbridge.fetchDeviceUUID(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.fetchDeviceUUID(
uuid -> { },
throwable -> { }
);
val result = Airbridge.fetchGoogleInstallReferrerDetails(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.fetchGoogleInstallReferrerDetails(
referrerDetails -> { },
throwable -> { }
);
val result = Airbridge.fetchHuaweiInstallReferrerDetails(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.fetchHuaweiInstallReferrerDetails(
referrerDetails -> { },
throwable -> { }
);
val result = Airbridge.fetchGalaxyStoreInstallReferrerDetails(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.fetchGalaxyStoreInstallReferrerDetails(
referrerDetails -> { },
throwable -> { }
);
val result = Airbridge.fetchMetaInstallReferrerDetails(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.fetchMetaInstallReferrerDetails(
referrerDetails -> { },
throwable -> { }
);
val result = Airbridge.fetchGoogleAdvertisingIdInfo(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.fetchGoogleAdvertisingIdInfo(
advertisingIdInfo -> { },
throwable -> { }
);
val result = Airbridge.fetchHuaweiAdvertisingIdInfo(
onSuccess = { },
onFailure = { }
)
boolean result = Airbridge.fetchHuaweiAdvertisingIdInfo(
advertisingIdInfo -> { },
throwable -> { }
);
AirbridgeDeviceInfo
가 삭제되었습니다. 에어브릿지 인터페이스를 통해서 attribution result
를 전달 받는 함수는 제공되지 않습니다. 다만, AirbridgeOption
의 listener를 통해 전달 받을 수 있습니다. 기존에도 제공하는 방법입니다.
class App : Application() {
override fun onCreate() {
super.onCreate()
val option: AirbridgeOption = AirbridgeOptionBuilder("YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
.setOnAttributionReceived { result ->
// do something
}
.build()
Airbridge.initializeSDK(this, option)
}
}
class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Airbridge.initializeSDK(this,
new AirbridgeOptionBuilder("YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
.setOnAttributionReceived(result -> {
// do something
})
.build()
);
}
}
AirbridgeCallback
이 삭제되고 OnSuccess
, OnFailure
listener가 추가되었습니다. return 값을 통해 해당 함수의 동작 여부를 확인할 수 있습니다.
fun click(
trackingLink: String,
onSuccess: OnSuccess<Unit>? = null,
onFailure: OnFailure? = null
): Boolean
boolean click(
@NonNull String trackingLink,
@Nullable OnSuccess<Unit> onSuccess,
@Nullable OnFailure onFailure
)
fun impression(
trackingLink: String,
onSuccess: OnSuccess<Unit>? = null,
onFailure: OnFailure? = null
): Boolean
boolean impression(
@NonNull String trackingLink,
@Nullable OnSuccess<Unit> onSuccess,
@Nullable OnFailure onFailure
)
함수 이름이 setJavascriptInterface()
에서 setWebInterface()
로 변경되었습니다.
Airbridge.setWebInterface(webview, "YOUR_WEB_TOKEN")
Airbridge.setWebInterface(webview, "YOUR_WEB_TOKEN")
Android SDK 각 버전의 주요 변경사항을 참고해 주세요.
2023년 9월 4일 이후 생성된 에어브릿지 앱은 딥링크 콜백에서 제공되는 딥링크 URL이 에어브릿지 대시보드에 입력된 내용을 2번 디코딩해 제공하는 문제를 해결했습니다.
해당 문제는 안드로이드 SDK v2.22.0 ~ v2.23.0에서 발생했습니다.
앱이 background 상태에서 이벤트 전송을 중지하는 초기화 옵션이 추가되었습니다.
AirbridgeConfig#setTransmitEventOnBackgroundEnabled
함수로 앱이 background 상태에서 이벤트 중지를 설정할 수 있습니다.
기본 값은 true입니다. true는 background 상태에서도 남은 이벤트를 전송합니다.
deeplink.page
를 지원하지 않습니다. 2.21.1 부터는 abr.ge
로 딥링크 도메인을 사용 하여 코드를 작성 권장 드립니다.
deeplink.page
는 하위 호환을 위해 여전히 지원 및 동작은 되고 있습니다.
세션 타임 이내에 발생된 ORGANIC_REOPEN
, FOREGROUND
이벤트는 기본적으로 수집을 하지 않는 구조로 변경되었습니다.
2.19.1 이전 버전을 사용 중 ORGANIC_REOPEN
, FOREGROUND
이벤트를 수집하고 있다면 AirbridgeConfig#setTrackInSessionLifeCycleEventEnabled 을 통해 계속 해서 해당 이벤트를 수집할 수 있습니다.
default 값은 false 로 ORGANIC_REOPEN
, FOREGROUND
이벤트를 수집을 하지 않습니다.
BACKGROUND
이벤트가 제거되었습니다.
딥링크 페이지뷰 이벤트가 Airbridge.click 호출의 경우에만 수집될 수 있도록 변경되었습니다.
도움이 되었나요?