動画リワード

主な機能

  • 動画リワード広告の表示
  • 動画リワード広告からのコールバック対応
  • 各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
  • iOS GNSRewardAdapter 3.1.1

関連SDKURL

Plugin導入手順

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

  1. GNSAdSDK-UnityPlugin-RewardのプラグインをUnityプロジェクトへインポート
  2. Plugin APIを使用し、動画リワード広告のイベントを登録
  3. 破棄処理を追加
  4. 動画リワード広告のロード
  5. 動画リワード広告の表示
  6. 広告の事前呼び出しについて
  7. Androidパッケージ名について

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

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

  2. https://github.com/googlesamples/unity-jar-resolverを参照し、PlayServicesResolverを導入します。

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

  4. reward側のGNSAdSDK-UnityPlugin-Reward-4.0.0.unitypackageファイルを選択します。

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

    • GNSAdSDK
      • Api
        • RewardVideoAd.cs
        • VideoRewardData.cs
        • VideoRewardFailedData.cs
      • Clients
        • MockClient.cs
        • RewardVideoAdClient.cs
      • Platforms
        • AdClientFactory.cs
        • Android
          • RewardVideoAdClientImpl.cs
          • Utils.cs
        • iOS
          • Externs.cs
          • RewardVideoAdClientImpl.cs
    • PlayServicesResolver
      • Editor
        • GNDependencies.xml
    • Plugins
      • Android
        • AndroidManifest.xml
        • GNSExtendsUnityPlayerActivity.jar
        • mainTemplate.gradle
      • iOS
        • GNSUInterface.m
        • GNSUObjectCache.h
        • GNSUObjectCache.m
        • GNSURewardVideoAd.h
        • GNSURewardVideoAd.m
        • GNSUTypes.h

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

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

using GNSAdSDK.Api;

...

static bool isRegistedRewardVideoEventHandler = false;

void RegistRewardVideoAdEventHandler()
{
    if (!isRegistedRewardVideoEventHandler)
    {
        RewardVideoAd rewardVideoAd = RewardVideoAd.Instance;

        rewardVideoAd.OnAdLoaded += (object sender, System.EventArgs args) => {
            // 動画リワード広告のロードが完了した際の処理
        };
        rewardVideoAd.OnAdStarted += (object sender, VideoRewardData args) => {
            // 動画リワード広告が再生された際の処理
            // ※ iOSに限り、args にはプロパティがすべて空のVideoRewardDataのインスタンスが渡されます。
        };
        rewardVideoAd.OnAdRewarded += (object sender, VideoRewardData args) => {
            // ユーザーにリワードが付与された際の処理
        };
        rewardVideoAd.OnAdClosed += (object sender, VideoRewardData args) => {
            // 動画リワード広告が閉じられた際の処理
            // ※ iOSに限り、args にはプロパティがすべて空のVideoRewardDataのインスタンスが渡されます。
        };
        rewardVideoAd.OnAdFailedToLoad += (object sender, VideoRewardFailedData args) => {
            // 動画リワード広告のロードが失敗した際の処理
        };
    }
    isRegistedRewardVideoEventHandler = true;
}
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
  • RewardVideoAdインスタンスは、動画リワード広告を操作するためのシングルトンオブジェクトとなります。
  • RewardVideoAdインスタンスがシングルトンオブジェクトのため、イベント重複を避けるためにイベント登録は1回だけにすることを推奨します。

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

public class VideoRewardData : EventArgs
{
    // 名前
    // ※ iOSの場合は、常にnullとなります。
    public string AdName { get; set; }
    // 金額
    public double Amount { get; set; }
    // 種類
    public string Type { get; set; }
}
1
2
3
4
5
6
7
8
9
10
11

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

public class VideoRewardFailedData : EventArgs
{
    // アドネットワーク名
    // ※ iOSの場合は、常にnullとなります。
    public string AdnetworkName { get; set; }
    // コード
    public int Code { get; set; }
    // メッセージ
    public string Message { get; set; }
}
1
2
3
4
5
6
7
8
9
10
11

3. 破棄処理を追加

Androidの場合OnDestroy時に破棄処理を行うため、下記のようにApplication.Quitのコールバックを設定してください。 ※ iOSのみ作成する場合は、必須ではありません。

using GNSAdSDK.Api;

...

void OnApplicationQuit()
{
    RewardVideoAd.Instance.DisposeAd();
}
1
2
3
4
5
6
7
8
9

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

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

using GNSAdSDK.Api;

...

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

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

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

using GNSAdSDK.Api;

...

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

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

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

報酬付与イベント(OnAdRewarded)内ではなく、広告クローズイベント(OnAdClosed)内へLoadAd(zoneId);を実装してください。

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

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

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