您可以查看更新 Airbridge Android SDK 过程中需要注意的内容。建议查看当前版本至目标更新版本之间的所有更新详情。
如果您将 Airbridge Android 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 |
Starts 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 and value pair to the user attribute. |
Unit |
Sets the key and value pair to the user attribute. |
Unit |
Sets the key and value pair to the user attribute. |
Unit |
Sets the key and value pair to the user attribute. |
Unit |
Sets the key and value pair to the user attribute. |
Unit |
Sets the key and value pair to the user attribute. |
Unit |
Removes the user attribute with the given key. |
Unit |
Clears all user attributes. |
Unit |
Sets the key and 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. This determines whether it is a push notification to track uninstalls. |
Unit |
Tracks events. |
Boolean |
Handles Airbridge's deep links from the provided intent and invokes a callback based on the result. |
Boolean |
Handles deferred deep links and invokes a callback based on the result. |
Boolean |
Queries the tracking link to the server to get the deep link information and then moves according to that information if a deep link 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 |
Fetches the Google Install Referrer. |
Boolean |
Fetched the Huawei Install Referrer. |
Boolean |
Fetchs the Onestore Install Referrer. |
Boolean |
Fetches the Galaxy Store Install Referrer. |
Boolean |
Fetches the Meta Install Referrer. |
Boolean |
Fetches the Google Advertising ID info. |
Boolean |
Fetches the 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 | Key of Standard Event used on |
AirbridgeAttributes | Key of Semantic Attribute used on |
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 | Moved to |
ReferrerDetails | Moved |
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 添加方式已被删除,现在可以通过 Airbridge 接口接收延迟深度链接。
可以在 activity 组件中调用 handleDeeplink
并获取其值。
通过 result 值,可以检查是否处于可处理延迟深度链接的状态。
延迟深度链接设计为仅在 App 安装后获取一次。如果已获取 result 值或提前调用,则 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 预定义。Custom Attribute 可直接以 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
已被删除。可以通过 Airbridge 接口访问原先通过 AirbridgeUser
访问的接口。
请使用以下 Airbridge 接口替换原先通过 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
访问的接口已更改为通过 Airbridge 接口访问。
AirbridgeCallback
已被删除,并新增 OnSuccess
和 OnFailure
listener。您可以通过 listener 接收操作的成功与否。
请使用以下 Airbridge 接口替换原先通过 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
已被删除,且不提供通过 Airbridge 接口接收 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 版本的主要变更内容。
修复了 Android SDK v.2.22.0~v.2.23.0 中出现的,2023-09-04 及以后创建的 Airbridge App 在深度链接回调中提供的深度链接 URL 被解码两次的问题。
新增初始化选项,可在 App 处于后台(background)状态时停止事件发送。
可通过 AirbridgeConfig#setTransmitEventOnBackgroundEnabled
函数进行设置。
默认值为 true,意味 App 在后台状态下仍会发送未发送的事件。
deeplink.page
已被弃用。从 v2.21.1 起,请使用 abr.ge
作为深度链接域名进行代码编写。
为了保持向后兼容性,deeplink.page
仍然受支持并可正常运行。
更改为默认不收集在会话中发生的 ORGANIC_REOPEN
和 FOREGROUND
事件。
如果正在使用低于 v2.19.1 的版本并收集 ORGANIC_REOPEN
和 FOREGROUND
事件,可以通过设置 AirbridgeConfig#setTrackInSessionLifeCycleEventEnabled
继续收集这些事件。
默认值为 false,意味不收集 ORGANIC_REOPEN
和 FOREGROUND
事件。
删除了 BACKGROUND
事件。
更改为只有在调用 Airbridge.click
时收集深度链接页面浏览(Deeplink Pageview)事件。
Was this page helpful?
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)
}
}
val result = Airbridge.fetchMetaInstallReferrerDetails(
onSuccess = { },
onFailure = { }
)
val result = Airbridge.handleDeeplink(
intent = intent
onSuccess = { },
onFailure = { }
)
fun impression(
trackingLink: String,
onSuccess: OnSuccess<Unit>? = null,
onFailure: OnFailure? = null
): Boolean
boolean result = Airbridge.fetchDeviceUUID(
uuid -> { },
throwable -> { }
);
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()
boolean result = Airbridge.fetchGoogleInstallReferrerDetails(
referrerDetails -> { },
throwable -> { }
);
boolean result = Airbridge.fetchMetaInstallReferrerDetails(
referrerDetails -> { },
throwable -> { }
);
boolean click(
@NonNull String trackingLink,
@Nullable OnSuccess<Unit> onSuccess,
@Nullable OnFailure onFailure
)
fun click(
trackingLink: String,
onSuccess: OnSuccess<Unit>? = null,
onFailure: OnFailure? = null
): Boolean
val result = Airbridge.fetchDeviceUUID(
onSuccess = { },
onFailure = { }
)
val result = Airbridge.handleDeferredDeeplink(
onSuccess = { },
onFailure = { }
)
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",
)
)
val result = Airbridge.fetchGoogleAdvertisingIdInfo(
onSuccess = { },
onFailure = { }
)