廣告曝光時,Google Mobile Ads SDK 會呼叫付費事件處理常式,並提供相關的收益資料。導入這個處理常式後,您可以利用資料計算使用者的生命週期價值,或將資料往下游轉送至其他相關系統。
本指南會協助您在 iOS 應用程式中導入 LTV 資料擷取功能。
前置作業
- 務必先在 Ad Manager UI 啟用曝光層級廣告收益功能。
- 匯入 Google Mobile Ads SDK 9.10.0 以上版本。
- 完整閱讀入門指南。
您至少需導入以下其中一種廣告格式,才能接收曝光層級廣告收益資料:
實作付費事件處理常式
每種廣告格式都有 GADPaidEventHandler
類型的 paidEventHandler
屬性。在廣告事件的生命週期,Google Mobile Ads SDK 會監控曝光事件,然後叫用處理常式並傳送收益值。
Swift
class ViewController: UIViewController, FullScreenContentDelegate {
var rewardedAd: RewardedAd?
func requestRewardedAd() {
RewardedAd.load(
with: "AD_UNIT_ID", request: AdManagerRequest()
) { (ad, error) in
if let error = error {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
return
}
if let ad = ad {
self.rewardedAd = ad
self.rewardedAd?.paidEventHandler = { adValue in
// TODO: Send the impression-level ad revenue information to your preferred analytics
// server directly within this callback.
// Extract the impression-level ad revenue data.
let value = adValue.value
let precision = adValue.precision
let currencyCode = adValue.currencyCode
// Get the ad unit ID.
let adUnitId = ad.adUnitID
let responseInfo = ad.responseInfo
let loadedAdNetworkResponseInfo = responseInfo?.loadedAdNetworkResponseInfo
let adSourceId = loadedAdNetworkResponseInfo?.adSourceID
let adSourceInstanceId = loadedAdNetworkResponseInfo?.adSourceInstanceID
let adSourceInstanceName = loadedAdNetworkResponseInfo?.adSourceInstanceName
let adSourceName = loadedAdNetworkResponseInfo?.adSourceName
}
}
}
}
}
Objective-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)requestRewardedAd {
__weak ViewController *weakSelf = self;
GAMRequest *request = [GAMRequest request];
[GADRewardedAd
loadWithAdUnitID:@"AD_UNIT_ID"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull value){
ViewController *strongSelf = weakSelf;
// TODO: Send the impression-level ad revenue information to your preferred analytics
// server directly within this callback.
// Extract the impression-level ad revenue data.
NSDecimalNumber *value; = value.value;
NSString *currencyCode = value.currencyCode;
GADAdValuePrecision precision = value.precision;
// Get the ad unit ID.
NSString *adUnitId = strongSelf.rewardedAd.adUnitID;
GADAdNetworkResponseInfo *loadedAdNetworkResponseInfo =
strongSelf.rewardedAd.responseInfo.loadedAdNetworkResponseInfo;
NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
NSString *adSourceID = loadedAdNetworkResponseInfo.adSourceID;
NSString *adSourceInstanceName = loadedAdNetworkResponseInfo.adSourceInstanceName;
NSString *adSourceInstanceID = loadedAdNetworkResponseInfo.adSourceInstanceID;
};
]};
}
辨識自訂事件的廣告來源名稱
對於自訂事件廣告來源,adSourceName
屬性會傳回廣告來源名稱 Custom event
。不過,若同時使用多個自訂事件,單靠這個名稱無法明確區分各個事件。如要找出特定自訂事件,請執行下列步驟:
- 取得
adNetworkClassName
屬性。 - 設定專屬的廣告來源名稱。
以下示範如何設定自訂事件專屬的廣告來源名稱:
Swift
func uniqueAdSourceName(for loadedAdNetworkResponseInfo: AdNetworkResponseInfo) -> String {
var adSourceName: String = loadedAdNetworkResponseInfo.adSourceName ?? ""
if adSourceName == "Custom Event" {
if loadedAdNetworkResponseInfo.adNetworkClassName
== "MediationExample.SampleCustomEventSwift"
{
adSourceName = "Sample Ad Network (Custom Event)"
}
}
return adSourceName
}
Objective-C
- (NSString *)uniqueAdSourceNameForAdNetworkResponseInfo:
(GADAdNetworkResponseInfo *)loadedAdNetworkResponseInfo {
NSString *adSourceName = loadedAdNetworkResponseInfo.adSourceName;
if ([adSourceName isEqualToString:@"Custom Event"]) {
if ([loadedAdNetworkResponseInfo.adNetworkClassName isEqualToString:@"SampleCustomEvent"]) {
adSourceName = @"Sample Ad Network (Custom Event)";
}
}
return adSourceName;
}
如要進一步瞭解勝出的廣告來源,請參閱「擷取廣告回應資訊」。
實作最佳做法
- 建立或取得廣告物件後,應立即設定處理常式,且務必在廣告顯示前完成,以免錯過任何付費事件回呼。
- 在
paidEventHandler
方法獲得呼叫時,立即將付費事件資訊傳送至所選的數據分析伺服器,避免意外錯過任何回呼,並確保資料一致。
GADAdValue
GADAdValue
類別代表廣告所賺取的金額價值,包含貨幣代碼和精確度類型,編碼方式如下。
GADAdValuePrecision | 說明 |
---|---|
GADAdValuePrecisionUnknown
|
廣告價值不明。啟用 LTV 自動參照通知,但資料不足時,系統會傳回此值。 |
GADAdValuePrecisionEstimated
|
從匯總資料估算出的廣告價值。 |
GADAdValuePrecisionPublisherProvided
|
發布商提供的廣告價值,例如中介服務群組中的手動千次曝光出價。 |
GADAdValuePrecisionPrecise
|
該廣告帶來的精確收益金額。 |
測試公開出價的曝光次數
透過測試請求,觸發公開出價廣告來源的曝光層級廣告收益事件時,您只會收到下列值:
GADAdValuePrecisionUnknown
:表示精確度類型。
0
:表示廣告價值。
過去,精確度類型可能會顯示為 GADAdValuePrecisionUnknown
以外的值,廣告價值也可能大於 0
。
如要瞭解如何傳送測試廣告請求,請參閱「啟用測試裝置」。