LoginSignup
1
1

More than 5 years have passed since last update.

Unity Ads と Ad Colonyの動画SDKをUnity(C#)で一元管理したメモ(SDKだらけ〜〜w

Posted at

1つのアプリで動画SDKを2ついれて、動画視聴の初期化やコールバックなどが大変なので、
ある程度一元化できて、簡単に実装したまとめのメモ。

環境

  • Unity5.3x
  • xcode7.2
  • OS X 10.10.5

参考にさせて頂いたサイトさま

http://yun.cup.com/wordpress/?p=72
http://qiita.com/hiroyuki7/items/ac607e3df11101b0c90a
ありがとうございます!m(_ _ *)m

Unity Ads を入れる

1. Unity Ads を Asset storeからDL

https://www.assetstore.unity3d.com/jp/#!/home
その後unityにインポートする。

2. UnityAdsの動画SDKを管理するようのsingletonスクリプトを用意

これはスクリプトをアタッチせずに自動で呼ばれるソース。


using UnityEngine;
using System.Collections;
using System.Collections.Generic;

// unity ads
using UnityEngine.Advertisements;

public class GameSceneSingleton {

    private static GameSceneSingleton mInstance;

    private GameSceneSingleton () { // Private Constructor
    }

    public static GameSceneSingleton Instance {
        get {
            if( mInstance == null ) mInstance = new GameSceneSingleton();
            return mInstance;
        }
    }

    // unity ads 初期化
    public void initUnityAds()
    {
        //プラットフォームが対応しているか判定
        if (Advertisement.isSupported)
        {
            Advertisement.allowPrecache = true;

            // ここにwifiかどうかや、1日何回まで再生等、通信トラフィックの制御をいれた方がいいかも(初期化時に通信発生

#if UNITY_IOS
            Advertisement.Initialize(Constant.SDK_UNITY_ADS_IOS_GAME_ID);
#elif UNITY_ANDROID
            Advertisement.Initialize (Constant.SDK_UNITY_ADS_IOS_GAME_ID);
#endif
        }
        else
        {
            Debug.Log("プラットフォームに対応していません。");
        }
    }

    // unity adsが視聴可能か
    public bool UnityAdsCanPlay()
    {
        //プラットフォームが対応しているかつ準備が完了している時だけtrueを返す
        return Advertisement.isSupported && Advertisement.isReady();
    }

    // 
    public void UnityAdsPlay()
    {

        if (Advertisement.isReady())
        {
            // 準備OK

            //callback用にクラスを定義
            ShowOptions showoptions = new ShowOptions();
            showoptions.pause = true;   
            showoptions.resultCallback = resAds;    //コールバック先メソッド

            //広告呼び出し
            Advertisement.Show(null, showoptions);
        }
        else
        {
            // 準備失敗
        }

    }

    // unity adsコールバック受け取り用メソッド
    public void Ads(ShowResult res)
    {
        if (res == ShowResult.Failed)
        {
            // 再生失敗
        }
        else if (res == ShowResult.Skipped)
        {
            // スキップした場合
        }
        else if (res == ShowResult.Finished)
        {
           // 再生完了

            if (gameSceneControlls)
            {
                // 指定のコールバックメソッド呼び出し。
                gameSceneControlls.unityadsVideoFinishedCallBack();
            }


        }
    }

    // unity ads のcallback用イベントリスナー (僕の場合はad colonySDKと兼用
    public GameManager gameSceneControlls;
    public void setVideoSdkCallbackListener(GameManager controller)
    {
        gameSceneControlls = controller;
    }

}

3 動画再生や、再生完了のイベントを受け取りたいソースはこんな風に。


// 〜〜〜省略

// Unity Ads 初期化
        GameSceneSingleton.Instance.initUnityAds();

// 〜〜〜省略

//再生できるか確認し、再生!
                if(GameSceneSingleton.Instance.UnityAdsCanPlay()){
                    //Sound.StopBgm(); //BGM止めるなど
                    GameSceneSingleton.Instance.UnityAdsPlay();
                }        

// 〜〜〜省略

 // unityads用callbackで呼ばれるメソッド 
    public void unityadsVideoFinishedCallBack(){

        // Sound.PlayBgm ("bgm_status"); //BGM再開等

    } 

// 〜〜〜省略



※adcolonyも同様に設定するだけですが、、追って記述追加します!
参考になれば幸いです!!!!!!!!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1