보상형 전면 광고

보상형 전면 광고는 자연스러운 앱 전환 중에 자동으로 게재되는 광고에 대해 보상을 제공하는 인센티브형 광고 형식입니다. 보상형 광고와 달리 사용자는 수신 동의하지 않고도 보상형 전면 광고를 볼 수 있습니다.

기본 요건

  • Google 모바일 광고 SDK 7.60.0 이상
  • 시작하기 가이드에 따라 Google 모바일 광고 SDK를 가져옵니다.
  • 계정 관리자에게 연락하여 보상형 전면 광고에 대한 액세스 권한을 얻습니다.

구현

보상형 전면 광고를 통합하는 기본 단계는 아래와 같습니다.

  1. 광고를 로드합니다.
  2. 콜백을 등록합니다.
  3. 광고를 표시하고 보상 이벤트를 처리합니다.

광고 로드

광고는 GADRewardedInterstitialAd 클래스의 정적 loadWithAdUnitID:request:completionHandler: 메서드를 사용하여 로드됩니다. 로드 메서드에는 광고 단위 ID, GADRequest 객체, 광고 로드에 성공하거나 실패할 때 호출되는 완료 핸들러가 필요합니다. 로드된 GADRewardedInterstitialAd 객체는 완료 핸들러의 매개변수로 제공됩니다. 아래는 ViewController 클래스의 GADRewardedInterstitialAd를 로드하는 방법의 예입니다.

#import "ViewController.h"

@interface ViewController ()
@property(nonatomic, strong) GADRewardedInterstitialAd* rewardedInterstitialAd;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [GADRewardedInterstitialAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/6978759866"
                request:[GADRequest request]
      completionHandler:^(
          GADRewardedInterstitialAd* _Nullable rewardedInterstitialAd,
          NSError* _Nullable error) {
        if (!error) {
          self.rewardedInterstitialAd = rewardedInterstitialAd;
        }
      }
  ];
}

콜백 등록

표시 이벤트 알림을 받으려면 GADFullScreenContentDelegate 프로토콜을 구현하고 이를 반환된 광고의 fullScreenContentDelegate 속성에 할당해야 합니다. GADFullScreenContentDelegate 프로토콜은 광고 표시에 성공 또는 실패했을 때와 광고가 닫혔을 때의 콜백을 처리합니다. 다음은 프로토콜을 구현하고 이를 광고에 할당하는 방법을 나타내는 코드입니다.

@interface ViewController ()<GADFullScreenContentDelegate>
@property(nonatomic, strong) GADRewardedInterstitialAd *rewardedInterstitialAd;
@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.

  [GADRewardedInterstitialAd
       loadWithAdUnitID:@"ca-app-pub-3940256099942544/6978759866"
                request:[GADRequest request]
      completionHandler:^(
          GADRewardedInterstitialAd *_Nullable rewardedInterstitialAd,
          NSError *_Nullable error) {
        if (!error) {
          self.rewardedInterstitialAd = rewardedInterstitialAd;
          self.rewardedInterstitialAd.fullScreenContentDelegate = self;
        }
      }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad presented full screen content.
- (void)adDidPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {

    NSLog(@"Ad did present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
   NSLog(@"Ad did dismiss full screen content.");
}

광고 표시 및 보상 이벤트 처리

광고를 표시할 때 사용자의 보상을 처리할 GADUserDidEarnRewardHandler 객체를 제공해야 합니다.

다음 코드는 보상형 전면 광고를 게재하기 위한 최적의 메서드를 나타냅니다.

- (void)show {
  [_rewardedInterstitialAd presentFromRootViewController:self
                                userDidEarnRewardHandler:^{

                                  GADAdReward *reward =
                                      self.rewardedInterstitialAd.adReward;
                                  // TODO: Reward the user!
                                }];
}