GoogleMobileAdsの動画リワードメディエーション(Legacy)

動画リワード広告とは、アプリ内で使用可能なアイテムやポイントをユーザーに付与する代わりに、約15秒〜30秒程度の動画広告を表示する広告フォーマットです。
本機能を使用する事により、Google Ad Managerの動画リワードで、Genieeのメディエーション機能により各アドネットワークの動画のリワード広告を表示します。

実装準備

GoogleMobileAds の追加

Podfileに以下の行を記述します。

pod 'Google-Mobile-Ads-SDK'
1
GoogleMobileAds導入の注意点 GoogleMobileAdsを導入する場合、Info.plistにadmobかGoogle Ad ManagerのアプリIDの情報を記載しなければ、アプリがクラッシュします。
  • アプリIDの情報
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-################~##########</string>
<key>SKAdNetworkItems</key>
  <array>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>cstr6suwn9.skadnetwork</string>
    </dict>
  </array>
1
2
3
4
5
6
7
8
9

GNAdGoogleMediationAdapterの追加

Cocoapodsで導入する(推奨)

Podfileに以下を記述します。

pod 'Geniee-Google-Mediation-Adapter'
1

手動で導入する

手動導入手順はこちら

GNAdGoogleMediationAdapter をダウンロードします。

GNAdGoogleMediationAdapter

GNAdGoogleMediationAdapter.xcframework をドラッグアンドドロップでプロジェクトにコピーして追加してください。

ナビゲータエリアよりプロジェクトを選択し、"TARGET" -> "General" を選択する。

"Linked Framework and Libraries" へ "GNAdGoogleMediationAdapter.xcframework" を追加する。

GNAdGoogleMediationAdapter 5.1.5以下のバージョンの場合、以下の手順を実行する。

"Embedded Binaries" へ "GNAdGoogleMediationAdapter.framework" を追加する。

共通対応

GNAdGoogleMediationAdapter 5.1.6以上のバージョンの場合、以下の手順は不要です。

GNAdGoogleMediationAdapter 5.1.5以下のバージョンの場合、以下の手順を実行する。
  • ナビゲータエリアより"Pods/***.xcconfig" を選択する。
    "OTHER_LDFLAGS" から -framework "GoogleMobileAds" を削除する。
  • ナビゲータエリアよりプロジェクトを選択し、"TARGETS" -> "Build Settings" を選択する。
    "Other Linker Flags" から "GoogleMobileAds" を削除する。

Geniee SDK の追加

Geniee SDK のインストールは、下記スタートガイドから行ってください。

スタートガイド

各アドネットワーク用SDK、アダプターの追加

動画リワードでは、配信で使用するアドネットワーク毎のSDKとアダプターの設定が必要です。 以下よりアドネットワークのリンクから導入方法を参照して下さい。

アドネットワーク 検証済みバージョン
maio 1.4.0
AppLovin 5.1.1
Unity Ads 2.3.0
AdColony 3.3.5
CAReward 2.3.1
Tapjoy 12.0.0
Vungle 6.2.0
Nend 5.0.2
AMoAd playable1.0.0
TikTok 2.4.6.7

動画リワード広告の実装

  1. AdManager

管理画面でメディエーション設定したUnitIDを指定することで、メディエーションを行い動画リワード広告を表示できます。
GoogleAdManagerの動画リワード実装方法については、以下のサイトを参考にしてください。
GoogleAdManagerの動画リワード実装方法

  1. AdMob

管理画面でメディエーション設定したUnitIDを指定することで、メディエーションを行い動画リワード広告を表示できます。
AdMobの動画リワード実装方法については、以下のサイトを参考にしてください。
AdMobの動画リワード実装方法

Google Ad Managerの動画リワードがLoad失敗になった場合に、Geniee SDKを呼び出すことで、広告の空き枠を防ぐことができます。実装手順は以下の通りです。

GNAdSDK I/Fの使用準備

Geniee SDKの GNSVideoReward をインポートします。

  • ObjectiveC
    ヘッダーファイルをimportし、Delegateを追加します。

例:ViewController.h

#import <GNAdSDK/GNSRequest.h>
#import <GNAdSDK/GNSRewardVideoAdDelegate.h>
@interface ViewController <GADRewardBasedVideoAdDelegate, GNSRewardVideoAdDelegate>
1
2
3
  • Swift
    以下の内容のヘッダーファイルを追加します。
#import <GNAdSDK/GNSRequest.h>
#import <GNAdSDK/GNSRewardVideoAdDelegate.h>
1
2

ナビゲータエリアよりプロジェクトを選択し、"TARGET" -> "Build Settings" を選択する。
"Objective-C Bridging Header" へ 上記で作成したヘッダーファイルのパスを追加する。

Delegateメソッドを実装する

GNSRewardVideoAdDelegateを実装します。

  • ObjectiveC Delegate実装手順はこちら Delegateを指定します。
[GNSRewardVideoAd sharedInstance].delegate = self;
1

SDKから通知を受け取る為の、GNSRewardVideoAdDelegateのメソッドを実装します。

// ロード失敗を通知するデリゲート.
- (void)rewardVideoAd:(GNSRewardVideoAd *)rewardVideoAd didFailToLoadWithError:(NSError *)error {
}

// リワード動画広告が受信された事を通知するデリゲート.
- (void)rewardVideoAdDidReceiveAd:(GNSRewardVideoAd *)rewardVideoAd
{
}

// リワード動画広告の再生開始を通知するデリゲート.
- (void)rewardVideoAdDidStartPlaying:(GNSRewardVideoAd *)rewardVideoAd {
}

// リワード動画広告が終了した事を通知するデリゲート.
- (void)rewardVideoAdDidClose:(GNSRewardVideoAd *)rewardVideoAd {
}

// ユーザーに報酬を付与した事を通知するデリゲート.
- (void)rewardVideoAd:(GNSRewardVideoAd *)rewardVideoAd didRewardUserWithReward:(GNSAdReward *)reward {
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  • Swift Delegate実装手順はこちら Delegateを指定します。
GNSRewardVideoAd.sharedInstance().delegate = self
1

SDKから通知を受け取る為の、GNSRewardVideoAdDelegateのメソッドを実装します。

extension ViewController : GNSRewardVideoAdDelegate {

    // リワード動画広告が受信された事を通知するデリゲート.
    func rewardVideoAdDidReceive(_ rewardVideoAd: GNSRewardVideoAd!) {
    }
    
    // ユーザーに報酬を付与した事を通知するデリゲート.
    func rewardVideoAd(_ rewardVideoAd: GNSRewardVideoAd!, didRewardUserWith reward: GNSAdReward!) {
    }
    
    // ロード失敗を通知するデリゲート.
    func rewardVideoAd(_ rewardVideoAd: GNSRewardVideoAd!, didFailToLoadWithError error: Error!) {
    }
    
    // リワード動画広告の再生開始を通知するデリゲート.
    func rewardVideoAdDidStartPlaying(_ rewardVideoAd: GNSRewardVideoAd!) {
    }
    
    // リワード動画広告が終了した事を通知するデリゲート.
    func rewardVideoAdDidClose(_ rewardVideoAd: GNSRewardVideoAd!) {
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

動画リワード広告のロード

Google Ad Manager / AdMobのLoadのコールバックで失敗した場合にGeniee SDK動画リワードのloadメソッドを実装します。
ロードリクエストにZoneIDを指定します。
1つの動画の再生完了後に別の動画を見せる場合、再びロードリクエストを行う必要があります。

  • ObjectiveC
GAMRequest *request = [GAMRequest request];
[GADRewardedAd loadWithAdUnitID:@"YOUR_UNIT_ID" request:request completionHandler:^(GADRewardedAd *ad, NSError *error) {
    self.buttonLoad.enabled = YES;
    if (error) {
        GNSRequest *request = [GNSRequest request];
        [[GNSRewardVideoAd sharedInstance] loadRequest:request withZoneID:@"YOUR_ZONE_ID"];
        return;
    }
    self.rewardedAd = ad;
    self.rewardedAd.fullScreenContentDelegate = self;
}];
1
2
3
4
5
6
7
8
9
10
11
  • Swift
let request = GAMRequest()
GADRewardedAd.load(withAdUnitID: "YOUR_UNIT_ID", request: request, completionHandler: { (ad, error) in
    if let error = error {
        let request = GNSRequest()
        GNSRewardVideoAd.sharedInstance().load(request, withZoneID: "YOUR_ZONE_ID")
        return
    }
    self.rewardedAd = ad
    self.rewardedAd?.fullScreenContentDelegate = self
})
1
2
3
4
5
6
7
8
9
10

動画リワード広告表示

Google Ad Manager → Geniee SDKの順で、loadが完了しているかを確認し、showメソッドで動画を表示します。
showは必ずGoogle Ad Manager / AdMobのLoad実行後に実施するようにして下さい。

  • ObjectiveC
if (self.rewardedAd) {
    [self.rewardedAd presentFromRootViewController:self userDidEarnRewardHandler:^ {
        GADAdReward *reward = self.rewardedAd.adReward;
        NSLog(@"ViewController: rewardedAd:userDidEarnRewardHandler type = %@, amount = %lf", reward.type, [reward.amount doubleValue]);
    }];
} else if ([[GNSRewardVideoAd sharedInstance] canShow]) {
    [[GNSRewardVideoAd sharedInstance] show:self];
}
1
2
3
4
5
6
7
8
  • Swift
if let ad = rewardedAd {
    ad.present(fromRootViewController: self, userDidEarnRewardHandler: {
        let reward = ad.adReward
        print("ViewController: rewardedAd:userDidEarnRewardHandler type = \(reward.type), amount = \(reward.amount).")
    })
} else if GNSRewardVideoAd.sharedInstance().canShow() {
    GNSRewardVideoAd.sharedInstance().show(self)
}
1
2
3
4
5
6
7
8

ユーザに報酬を付与

動画広告で収益を最大化するには、動画広告視聴者に報酬を与えることが重要です。 GNSAdRewardには以下の項目が含まれます。

  • reward.type:SSPの通貨タイプ設定
  • reward.amount:SSPの通貨額設定

動画広告視聴者に報酬を与えるには、didRewardUserWithRewardコールバックメソッドを使用します。

  • ObjectiveC
- (void)rewardVideoAd:(GNSRewardVideoAd *)rewardVideoAd didRewardUserWithReward:(GNSAdReward *)reward {
    NSLog(@"ViewController: Reward received type=%@, amount=%lf"
          ,reward.type
          ,[reward.amount doubleValue]);
}
1
2
3
4
5
  • Swift
func rewardVideoAd(_ rewardVideoAd: GNSRewardVideoAd!, didRewardUserWith reward: GNSAdReward!) {
    print("ViewController: Reward received type=" + reward.type + " , amount=\(reward.amount.doubleValue)")
}
1
2
3
Last Updated: 2021/3/18 16:14:05