動画リワード広告では、ユーザーは、フルスクリーンの広告動画を最後まで視聴することと引き換えにアプリ内で報酬を獲得できます。
このガイドでは、AdMob の動画リワード広告を iOS アプリに組み込む方法を説明します。
前提条件
- Google Mobile Ads SDK を単独または Firebase の一部としてインポートします。
動画リワード広告をリクエストする
GADRewardBasedVideoAd は Singleton デザインなので、次の例は共有インスタンスに対して行っている広告の読み込みリクエストを示しています。
Swift
GADRewardBasedVideoAd.sharedInstance().load(GADRequest(), withAdUnitID: "ca-app-pub-3940256099942544/1712485313")
Objective-C
[[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request] withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
動画をプリロードできるようにするため、読み込みリクエストの呼び出しはできるだけ早く(アプリ デリゲートの application:didFinishLaunchingWithOptions:
メソッド内などで)行うことをおすすめします。
常にテスト広告でテストする
アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告を使用すると、アカウントの停止につながる可能性があります。
テスト広告を読み込むには、次に示す iOS 動画リワード向けのテスト専用広告ユニット ID を使う方法が便利です。
ca-app-pub-3940256099942544/1712485313
この ID は、すべてのリクエストに対してテスト広告を返す特別な ID で、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、テスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
イベント通知を設定する
イベント通知を設定するには、以下に太字で示した行を読み込みリクエストを呼び出す前に挿入します。
Swift
GADRewardBasedVideoAd.sharedInstance().delegate = self GADRewardBasedVideoAd.sharedInstance().load(GADRequest(), withAdUnitID: "ca-app-pub-3940256099942544/1712485313")
Objective-C
[GADRewardBasedVideoAd sharedInstance].delegate = self; [[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request] withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
GADRewardBasedVideoAdDelegate
により、動画リワード広告のライフサイクル イベントが通知されます。このデリゲートは広告を読み込む前に設定する必要があります。このデリゲートで最も重要なイベント rewardBasedVideoAd:didRewardUserWithReward:
は、動画を視聴したユーザーに特典を与える必要がある場合に呼び出されます。このデリゲートには他のメソッドも実装できます。
次のサンプルは、GADRewardBasedVideoAdDelegate:
で使用可能な各イベントのログを記録する方法を示しています。
Swift
func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didRewardUserWith reward: GADAdReward) { print("Reward received with currency: \(reward.type), amount \(reward.amount).") } func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd:GADRewardBasedVideoAd) { print("Reward based video ad is received.") } func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { print("Opened reward based video ad.") } func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { print("Reward based video ad started playing.") } func rewardBasedVideoAdDidCompletePlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { print("Reward based video ad has completed.") } func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { print("Reward based video ad is closed.") } func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { print("Reward based video ad will leave application.") } func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didFailToLoadWithError error: Error) { print("Reward based video ad failed to load.") }
Objective-C
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didRewardUserWithReward:(GADAdReward *)reward { NSString *rewardMessage = [NSString stringWithFormat:@"Reward received with currency %@ , amount %lf", reward.type, [reward.amount doubleValue]]; NSLog(rewardMessage); } - (void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd { NSLog(@"Reward based video ad is received."); } - (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd { NSLog(@"Opened reward based video ad."); } - (void)rewardBasedVideoAdDidStartPlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd { NSLog(@"Reward based video ad started playing."); } - (void)rewardBasedVideoAdDidCompletePlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd { NSLog(@"Reward based video ad has completed."); } - (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd { NSLog(@"Reward based video ad is closed."); } - (void)rewardBasedVideoAdWillLeaveApplication:(GADRewardBasedVideoAd *)rewardBasedVideoAd { NSLog(@"Reward based video ad will leave application."); } - (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didFailToLoadWithError:(NSError *)error { NSLog(@"Reward based video ad failed to load."); }
動画リワード広告を表示する
動画リワード広告の表示を開始する前に、読み込みが完了していることを確認することをおすすめします。動画リワード広告のリクエストに返された広告が読み込まれたかどうかは、isReady
メソッドで確認できます。
Swift
if GADRewardBasedVideoAd.sharedInstance().isReady == true { GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self) }
Objective-C
if ([[GADRewardBasedVideoAd sharedInstance] isReady]) { [[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:self]; }
動画リワード広告を再読み込みする
動画リワード広告を表示した後に新しい動画リワード広告を読み込むには、rewardBasedVideoAdDidClose:
を使うと便利です。
Swift
func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { GADRewardBasedVideoAd.sharedInstance().load(GADRequest(), withAdUnitID: "ca-app-pub-3940256099942544/1712485313") }
Objective-C
- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd { [[GADRewardBasedVideoAd sharedInstance] loadRequest:[GADRequest request] withAdUnitID:@"ca-app-pub-3940256099942544/1712485313"]; }
その他のリソース
動画リワード広告のサンプル(GitHub 上):
チュートリアル動画シリーズ「Mobile Ads Garage」
Codelab
次のステップ
- AdMob 管理画面で独自の動画リワード広告ユニットを作成します。
- Unity ゲームに動画リワード広告を表示する方法を確認します。
- 次のような別の広告フォーマットを試します。