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も同様に設定するだけですが、、追って記述追加します!
参考になれば幸いです!!!!!!!!