如有曝光,GMA Next Gen SDK 將提供與該曝光相關的廣告收益資料。您可以運用這項資料,計算使用者的生命週期價值,或將資料往下游轉送至其他相關系統。
本指南說明如何在 Android 應用程式中,導入曝光層級廣告收益的資料擷取功能。
必要條件
- 務必先在 AdMob UI 啟用曝光層級廣告收益功能。
付費事件處理常式
每種廣告格式都有 onAdPaid 事件回呼。
在廣告事件的生命週期內,GMA Next Gen SDK 會監控曝光事件,以及叫用處理常式來處理收益值。
以下範例會處理獎勵廣告的付費事件:
Kotlin
ad.adEventCallback =
object : RewardedAdEventCallback {
override fun onAdPaid(adValue: AdValue) {
// Send the impression-level ad revenue information to your
// preferred analytics server directly within this callback.
// Extract the impression-level ad revenue data.
val valueMicros = adValue.valueMicros
val currencyCode = adValue.currencyCode
val precisionType = adValue.precisionType
val loadedAdSourceResponseInfo = ad.getResponseInfo().loadedAdSourceResponseInfo
val adSourceName = loadedAdSourceResponseInfo?.name
val adSourceId = loadedAdSourceResponseInfo?.id
val adSourceInstanceName = loadedAdSourceResponseInfo?.instanceName
val adSourceInstanceId = loadedAdSourceResponseInfo?.instanceId
val extras = ad.getResponseInfo().responseExtras
val mediationGroupName = extras.getString("mediation_group_name")
val mediationABTestName = extras.getString("mediation_ab_test_name")
val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
}
}
Java
ad.setAdEventCallback(
new RewardedAdEventCallback() {
@Override
public void onAdPaid(@NonNull AdValue value) {
// Send the impression-level ad revenue information to your preferred
// analytics server directly within this callback.
// Extract the impression-level ad revenue data.
long valueMicros = value.getValueMicros();
String currencyCode = value.getCurrencyCode();
PrecisionType precisionType = value.getPrecisionType();
AdSourceResponseInfo loadedAdSourceResponseInfo =
ad.getResponseInfo().getLoadedAdSourceResponseInfo();
String adSourceName = loadedAdSourceResponseInfo.getName();
String adSourceId = loadedAdSourceResponseInfo.getId();
String adSourceInstanceName = loadedAdSourceResponseInfo.getInstanceName();
String adSourceInstanceId = loadedAdSourceResponseInfo.getInstanceId();
Bundle extras = ad.getResponseInfo().getResponseExtras();
String mediationGroupName = extras.getString("mediation_group_name");
String mediationABTestName = extras.getString("mediation_ab_test_name");
String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
}
});
找出自訂事件廣告來源名稱
針對自訂事件廣告來源,AdSourceResponseInfo.name 屬性會傳回廣告來源名稱 Custom event。如果有多個自訂事件,將無法只憑廣告來源名稱細分事件。因此請按照下列步驟操作,找出特定自訂事件:
- 取得
AdSourceResponseInfo.name屬性。 - 設定專屬的廣告來源名稱。
以下範例會為自訂事件設定專屬的廣告來源名稱:
Kotlin
private fun getUniqueAdSourceName(loadedAdapterResponseInfo: AdSourceResponseInfo): String {
var adSourceName = loadedAdapterResponseInfo.name
if (adSourceName == "Custom Event") {
if (
loadedAdapterResponseInfo.adapterClassName ==
"com.google.ads.mediation.sample.customevent.SampleCustomEvent"
) {
adSourceName = "Sample Ad Network (Custom Event)"
}
}
return adSourceName
}Java
private String getUniqueAdSourceName(@NonNull AdSourceResponseInfo loadedAdapterResponseInfo) {
String adSourceName = loadedAdapterResponseInfo.getName();
if (adSourceName.equals("Custom Event")) {
if (loadedAdapterResponseInfo
.getAdapterClassName()
.equals("com.google.ads.mediation.sample.customevent.SampleCustomEvent")) {
adSourceName = "Sample Ad Network (Custom Event)";
}
}
return adSourceName;
}
請參閱「擷取廣告回應的相關資訊」,進一步瞭解勝出的廣告來源。
整合應用程式歸因合作夥伴 (AAP)
若想詳盡全面地瞭解如何將廣告收益資料轉送至數據分析平台,請參閱合作夥伴指南:
| 合作夥伴 SDK |
|---|
| 調整 |
| AppsFlyer |
| Singular |
| Tenjin |
導入最佳做法
- 建立或取得廣告物件後,立即設定事件監聽器,且務必在顯示廣告前完成,以免錯過任何付費事件回呼。
- 系統一呼叫付費事件回呼,便立即將曝光層級廣告收益資訊傳送至偏好的數據分析伺服器,以免不小心錯過任何回呼,並避開資料不一致的問題。
AdValue
AdValue 類別代表廣告賺取的金額價值,包含貨幣代碼和精確度型別,編碼方式如下。
| PrecisionType | 說明 |
|---|---|
UNKNOWN |
廣告價值不明。如已啟用生命週期價值 (LTV) 自動參照通知,但資料不足,則系統會傳回此值。 |
ESTIMATED |
根據匯總資料預估的廣告價值。 |
PUBLISHER_PROVIDED |
發布商提供的廣告價值,例如中介服務群組中的手動千次曝光出價。 |
PRECISE |
為此廣告支付的精確價值。 |
如果是 AdMob 中介服務,AdMob 會嘗試針對已調整至最佳狀態的廣告來源提供 ESTIMATED 值。如果廣告來源未調整至最佳狀態,或是匯總資料不足,無法回報有意義的預估值,系統將傳回 PUBLISHER_PROVIDED 值。
測試出價廣告來源的曝光
送出測試請求,觸發出價廣告來源的曝光層級廣告收益事件之後,您只會收到下列值:
UNKNOWN:表示精確度類型。
0:表示廣告價值。
您先前可能看過不是 UNKNOWN 的精確度類型值,且廣告價值大於 0。
請參閱「啟用測試裝置」,進一步瞭解如何傳送測試廣告請求。