Admobの動画広告に関して少し踏み込んだ設定です。
全般的なAdmobの広告設定に関しては以下にまとめています。
this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
// Load失敗時に実行する関数の登録
this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
// 表示時に実行する関数の登録
this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
// 表示失敗時に実行する関数の登録
//this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
// 広告を閉じる時に実行する関数の登録
this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;
個人的に使っているのは、Load失敗時の関数と広告を閉じる時の関数です。
広告の取得を失敗したときにお知らせするのと、
再度押したときに表示できるようにする用途で使っています。
private void RequestReward() //動画
{
adUnitId = "ca-app-pub-3940256099942544/5224354917"; //テスト
this.rewardedAd = new RewardedAd(adUnitId);
//動画の視聴完了後の関数の登録
this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
// Load失敗時に実行する関数の登録
this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
// 広告を閉じる時に実行する関数の登録
this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;
AdRequest request = new AdRequest.Builder().Build();
this.rewardedAd.LoadAd(request);
}
//広告を閉じる
public void HandleRewardedAdClosed(object sender, EventArgs args)
{
RequestReward();
}
int failedToLoadCount = 0; //ロード失敗回数
protected float[] delayedCallTimeTable = new float[] {
30.0f,80.0f,300.0f,
};
~~~~~~~略~~~~~~~~
//ロード失敗
public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args)
{
StartCoroutine(_waitConnectReward
(delayedCallTimeTable[failedToLoadCount]));
if(failedToLoadCount < delayedCallTimeTable.Length)
{
failedToLoadCount++;
}
}
// ロード失敗した時、指定秒待ってから再ロード
private System.Collections.IEnumerator _waitConnectReward(float time)
{
yield return new WaitForSeconds(time);
// 通信ができない場合は、リロードしない
if (Application.internetReachability != NetworkReachability.NotReachable)
{
RequestReward();
//break;
}
}
public void ShowReawrd() //動画広告の表示
{
if (this.rewardedAd.IsLoaded())
{
failedToLoadCount = 0; //失敗回数初期化
this.rewardedAd.Show();
}
else //取得失敗時
{
//失敗時の処理
}
}
0 件のコメント:
コメントを投稿