GoogleMobileAds動画リワード

主な機能

  • GoogleMobileAds動画リワード広告からGeniee SDKの動画リワード広告をメディエーション表示
  • GoogleMobileAds動画リワード広告から表示したGeniee SDKの動画リワード広告のコールバック対応

システム動作環境

  • Android
    • Android SDK 4.1以降
  • iOS
    • iOS 9.0以降
    • 64bit のiOS対象

開発環境

  • Unity 2019.2.12f1
  • JDK 1.8以降
  • Android SDKのビルドターゲット 28

関連SDK

  • Android GNAdSDK 8.5.1
  • iOS GNAdSDK 8.2.1
  • Android GNSRewardAdapter 6.4.1
  • Android GNAdGoogleMediationAdapter 8.5.0.0
  • iOS GNSRewardAdapter 3.1.1
  • iOS GNAdGoogleMediationAdapter 8.2.1
  • GoogleMobileAds 5.4.0

関連SDKURL

Plugin導入手順

UnityへのGeniee 動画リワード と GoogleMobileAds広告 SDK Unity Plugin導入手順を説明します。

  1. Google Mobile Ads Unity pluginをUnityプロジェクトへインポート
  2. GNSAdSDK-UnityPlugin-Google-RewardのプラグインをUnityプロジェクトへインポート
  3. GoogleMobileAds のアプリIdを設定する
  4. GoogleMobileAds を使用し、動画リワード広告のイベントを登録
  5. 動画リワード広告のロード
  6. 動画リワード広告の表示
  7. 広告の事前呼び出しについて
  8. テストデバイスID設定方法
  9. Androidパッケージ名について

1. Google Mobile Ads Unity pluginをUnityプロジェクトへインポート

  1. https://developers.google.com/admob/unity/startから GoogleMobileAds-v5.4.0.unitypackage をダウンロードしてください。
  2. Pluginを組み込むUnityプロジェクトを開きます。
  3. メニューバーの Assets -> Import Package -> Custom Packageの順に選択します。
  4. ダウンロードしたGoogleMobileAds-v5.4.0.unitypackageファイルを選択します。
  5. すべてのファイルのチェックボックスがオンになっていることを確認して、Import をクリックします。

2. GNSAdSDK-UnityPlugin-Google-RewardのプラグインをUnityプロジェクトへインポート

  1. Pluginを組み込むUnityプロジェクトを開きます。

  2. メニューバーの Assets -> Import Package -> Custom Packageの順に選択します。

  3. reward_google側のGNSAdSDK-UnityPlugin-Google-Reward-5.0.0.unitypackageファイルを選択します。

  4. 以下ファイルのチェックボックスがオンになっていることを確認して、Import をクリックします。

    • PlayServicesResolver
      • Editor
        • GNDependencies.xml
    • Plugins
      • Android
        • AndroidManifest.xml
        • GNSExtendsGoogleMobileAdsUnityPlayerActivity.jar
        • mainTemplate.gradle

3. GoogleMobileAds のアプリIdを設定する

Assets/GoogleMobileAds/Settings..からアプリIdを設定ください。

  • AdMobを使用の場合はAdMobにチェックを入れてください。
  • AdManagerを使用している場合はAdManagerにチェックを入れてください。

詳しい実装手順については、以下のサイトを参考にしてください。 https://developers.google.com/admob/unity/start?hl=ja

4. GoogleMobileAds を使用し、動画リワード広告のイベントを登録

以下は、動画リワード広告を作成してイベントを登録するために必要なコードです。 イベントを登録する際は、動画のロードをする前に登録処理を完了させてください。

using GoogleMobileAds.Api;

...

static bool isRegistedRewardVideoEventHandler = false;
void RegistRewardVideoAdEventHandler()
{
    if (!isRegistedRewardVideoEventHandler)
    {
        // Get singleton reward based video ad reference.
        RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance;
        // Called when an ad request has successfully loaded.
        rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
        // Called when an ad request failed to load.
        rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
        // Called when an ad is shown.
        rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened;
        // Called when the ad starts to play.
        rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted;
        // Called when the user should be rewarded for watching a video.
        rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        // Called when the ad is closed.
        rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
        // Called when the ad click caused the user to leave the application.
        rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;
    }
    isRegistedRewardVideoEventHandler = true;
}
public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
}
public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    MonoBehaviour.print(
        "HandleRewardBasedVideoFailedToLoad event received with message: "
                         + args.Message);
}
public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
}
public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
}
public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardBasedVideoClosed event received");
}
public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
    RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance;
    MonoBehaviour.print(
        "HandleRewardBasedVideoRewarded event received for "
        + amount.ToString() + " " + type + " " + rewardBasedVideo.MediationAdapterClassName());
}
public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  • RewardBasedVideoAdインスタンスは、動画リワード広告を操作するためのシングルトンオブジェクトとなります。
  • RewardBasedVideoAdインスタンスがシングルトンオブジェクトのため、イベント重複を避けるためにイベント登録は1回だけにすることを推奨します。

Reward は下記プロパティを所持しています。

public class Reward : EventArgs
{
    // 金額
    public double Amount { get; set; }
    // 種類
    public string Type { get; set; }
}
1
2
3
4
5
6
7
8

AdFailedToLoadEventArgs は下記プロパティを所持しています。

public class AdFailedToLoadEventArgs : EventArgs
{
    // メッセージ
    public string Message { get; set; }
}
1
2
3
4
5
6

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

以下は、動画リワード広告のロードに必要なコードです。

using GNSAdSDK.Api;

...

void LoadRewardVideoAd()
{
    string defaultUnitId = "";
#if UNITY_ANDROID
        defaultUnitId = "ここにUnitIdを入れてください";
#elif UNITY_IPHONE
        defaultUnitId = "ここにUnitIdを入れてください";
#endif
    RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance;
    AdRequest request = new AdRequest.Builder()
                               // .AddTestDevice("YOUR_TEST_DEVICE_ID")
                               .Build();
    rewardBasedVideo.LoadAd(request, defaultUnitId);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  • RewardBasedVideoAdインスタンスは、動画リワード広告を操作するためのシングルトンオブジェクトとなります。
  • ロードには数秒以上かかることがあるので、早い段階で動画広告をロードしてください。
  • 1つの動画の再生完了後に別の動画を見せる場合、再びロードを行う必要があります。

6. 動画リワード広告の表示

以下は、動画リワード広告の表示に必要なコードです。動画のロードが完了されるとShowAd()の呼び出しが可能となります。

using GNSAdSDK.Api;

...

void ShowRewardVideoAd()
{
    RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance;
    // 動画が表示出来るか確認
    if (rewardBasedVideo.IsLoaded())
    {
        // 動画の表示
        rewardBasedVideo.Show();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

7. 広告の事前呼び出しについて

広告表示後、事前に次の広告をロードしたい場合の注意点

報酬付与イベントHandleRewardBasedVideoRewarded内ではなく、広告クローズイベントHandleRewardBasedVideoClosed内へrewardBasedVideo.LoadAd(request, adUnitId);を実装してください。

8. テストデバイスID設定方法

  • 開発中にテスト広告を有効にすることができます。
  • テストモードにすることなく、多くの広告をクリックした場合は、アカウントが無効となる危険性があります。
  • 本番リリース時にはこの設定を必ず削除してください。
  1. 設定するにはまずこのようなメッセージがコンソールまたはlogcat出力を確認します。
OS 出力例
Android I/Ads: Use AdRequest.Builder.addTestDevice("YOUR_TEST_DEVICE_ID")
iOS request.testDevices = @[ "YOUR_TEST_DEVICE_ID" ];
  1. AddTestDeviceメソッドをRequestに追加します。
AdRequest request = new AdRequest.Builder()
                           .AddTestDevice("YOUR_TEST_DEVICE_ID")
                           .Build();
rewardBasedVideo.LoadAd(request, defaultUnitId);
1
2
3
4
5

9. Androidパッケージ名について

Assets/Plugins/Android/AndroidManifest.xml内のpackage名は適宜修正ください。

package="jp.co.geniee.GNSUnitySampleGoogleRewardVideo"
1
2
Last Updated: 2020/7/21 14:47:08