AdMob SDKの続きです
✅ リワード広告とは?
ユーザーが動画広告を最後まで見ると報酬(ゲーム内コインなど)を与える形式の広告です。
✅ 導入ステップ(Objective-C)
① 必要なインポート
#import <GoogleMobileAds/GoogleMobileAds.h>
② プロパティの定義
@interface ViewController () <GADFullScreenContentDelegate> @property(nonatomic, strong) GADRewardedAd *rewardedAd; @end
③ 広告の読み込み
たとえば viewDidLoad
や任意の場所で呼び出す:
- (void)loadRewardedAd { GADRequest *request = [GADRequest request]; [GADRewardedAd loadWithAdUnitID:@"ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) { if (error) { NSLog(@"リワード広告の読み込み失敗: %@", error.localizedDescription); return; } self.rewardedAd = ad; self.rewardedAd.fullScreenContentDelegate = self; NSLog(@"リワード広告の読み込み成功"); }]; }
④ 広告の表示と報酬処理
ユーザーが「広告を見る」などのアクションをしたタイミングで:
- (void)showRewardedAd { if (self.rewardedAd) { [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^{ GADAdReward *reward = self.rewardedAd.adReward; NSLog(@"ユーザーに報酬を付与: %@ %lf", reward.type, reward.amount.doubleValue); [self giveUserReward]; // ユーザーに報酬を与える処理 }]; } else { NSLog(@"リワード広告が読み込まれていません"); [self loadRewardedAd]; } } - (void)giveUserReward { // 例: ポイント付与処理 NSLog(@"ユーザーに100コイン付与しました"); }
⑤ デリゲートメソッド(任意)
#pragma mark - GADFullScreenContentDelegate - (void)adDidDismissFullScreenContent:(id)ad { NSLog(@"リワード広告が閉じられました"); [self loadRewardedAd]; // 次の広告を準備 } - (void)ad:(id)ad didFailToPresentFullScreenContentWithError:(NSError *)error { NSLog(@"広告表示失敗: %@", error.localizedDescription); } - (void)adDidPresentFullScreenContent:(id)ad { NSLog(@"リワード広告が表示されました"); }
✅ テスト用広告ユニットID
種類 | テスト広告ユニットID |
---|---|
リワード広告 | ca-app-pub-3940256099942544/1712485313 |
⚠️ 注意点まとめ
項目 | 内容 |
---|---|
再読み込み必須 | 1回表示した広告は使い回せないため、閉じられたら再読み込み |
報酬処理 | userDidEarnRewardHandler ブロック内で実行する |
表示前チェック | if (self.rewardedAd) で準備完了を確認 |
テスト環境 | 本番広告ユニットIDは必ず動作確認後に使用。開発中はテスト用IDで |
ATT対応 | NSUserTrackingUsageDescription を Info.plist に記述し、IDFA利用時は許可を取る |