노출 수준 광고 수익

노출이 발생하면 Google 모바일 광고 SDK가 연결된 수익 데이터와 함께 유료 이벤트 핸들러를 호출합니다. 이 핸들러를 구현하면 데이터를 이용해 사용자의 평생 가치를 계산하거나 데이터 다운스트림을 다른 관련 시스템으로 전달할 수 있습니다.

이 가이드에서는 iOS 앱에서 LTV 데이터 포착을 구현하는 방법을 설명합니다.

기본 요건

유료 이벤트 핸들러 구현

각 광고 형식에는 GADPaidEventHandler 유형의 paidEventHandler 속성이 있습니다. 광고 이벤트의 수명 주기 동안 Google 모바일 광고 SDK가 노출 이벤트를 모니터링하고 획득한 값으로 핸들러를 호출합니다.

Swift

class ViewController: UIViewController, GADFullScreenContentDelegate {
  var rewardedAd: GADRewardedAd?
  func requestRewardedAd() {
    GADRewardedAd.load(
      withAdUnitID: "AD_UNIT_ID", request: GADRequest()
    ) { (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
          let mediationGroupName = responseInfo?.extrasDictionary["mediation_group_name"]
          let mediationABTestName = responseInfo?.extrasDictionary["mediation_ab_test_name"]
          let mediationABTestVariant = responseInfo?.extrasDictionary["mediation_ab_test_variant"]
        }
      }
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end

@implementation ViewController
- (void)requestRewardedAd {
  __weak ViewController *weakSelf = self;

  GADRequest *request = [GADRequest 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;
      NSDictionary<NSString *, id> *extras = strongSelf.rewardedAd.responseInfo.extrasDictionary;
      NSString *mediationGroupName = extras["mediation_group_name"];
      NSString *mediationABTestName = extras["mediation_ab_test_name"];
      NSString *mediationABTestVariant = extras["mediation_ab_test_variant"];
    };
  ]};
}

낙찰된 광고 소스에 대한 자세한 내용은 광고 응답에 관한 정보 가져오기를 참고하세요.

앱 기여 분석 파트너 (AAP)와 통합

광고 수익 데이터를 분석 플랫폼으로 전달하는 방법에 대해 자세히 알아보려면 파트너 가이드를 읽어보세요.

파트너 SDK
Adjust
AppsFlyer
Singular
Tenjin

구현 권장사항

  • 광고 객체를 만들거나 광고 객체에 액세스할 수 있게 되면 즉시 핸들러를 설정하세요. 광고 게재 전에 설정해야 합니다. 이렇게 하면 유료 이벤트 콜백이 누락되지 않습니다.
  • paidEventHandler 메서드가 호출되는 시점에 유료 이벤트 정보를 원하는 분석 서버로 즉시 전송하세요. 이렇게 하면 의도치 않은 콜백 누락이 발생하지 않으며, 데이터 불일치를 방지할 수 있습니다.

GADAdValue

GADAdValue는 광고에서 획득한 금전적 가치를 나타내는 클래스입니다(예: 값의 통화 코드, 아래와 같이 인코딩된 정밀도 유형).

GADAdValuePrecision 설명
GADAdValuePrecisionUnknown 알 수 없는 광고 값입니다. LTV 핑백이 사용 설정되었지만 사용 가능한 데이터가 충분하지 않은 경우 반환됩니다.
GADAdValuePrecisionEstimated 합산 데이터에서 예상되는 광고 값입니다.
GADAdValuePrecisionPublisherProvided 미디에이션 그룹의 수동 CPM처럼 게시자가 제공한 광고 값입니다.
GADAdValuePrecisionPrecise 광고에 지불된 정확한 값입니다.

입찰 광고 소스의 노출수 테스트

테스트 요청을 통해 입찰 광고 소스에 노출 수준 광고 수익 이벤트가 발생하면 다음 값만 수신됩니다.

  • GADAdValuePrecisionUnknown: 정밀도 유형을 나타냅니다.
  • 0: 광고 가치를 나타냅니다.

이전에는 정밀도 유형이 GADAdValuePrecisionUnknown이 아닌 값으로 표시되고 광고 값이 0보다 클 수 있었습니다.

테스트 광고 요청을 보내는 방법에 관한 자세한 내용은 테스트 기기 사용 설정을 참고하세요.