2017-05-10 11 views
0

Unity3dのadmobプラグインから報酬を与えられたビデオ広告が表示されています。このすべての 最初に私のスクリプトです:Unity3d Admobがビデオ広告を賞賛しました

using GoogleMobileAds.Api; 
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using System; 

public class AdManager : MonoBehaviour { 
    private RewardBasedVideoAd rewardBasedVideo; 

    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 

    } 

    public void RequestRewardBasedVideo() 
    { 
#if UNITY_EDITOR 
     string adUnitId = "unused"; 
#elif UNITY_ANDROID 
     string adUnitId = "INSERT_AD_UNIT_HERE"; 
#elif UNITY_IPHONE 
     string adUnitId = "INSERT_AD_UNIT_HERE"; 
#else 
     string adUnitId = "unexpected_platform"; 
#endif 

     RewardBasedVideoAd rewardBasedVideo = RewardBasedVideoAd.Instance; 

     AdRequest request = new AdRequest.Builder().Build(); 
     rewardBasedVideo.LoadAd(request, adUnitId); 

     //Show Ad 
     showAdd(rewardBasedVideo); 
    } 

    private void showAdd(RewardBasedVideoAd rewardBasedVideo) 
    { 
     if (rewardBasedVideo.IsLoaded()) 
     { 
      //Subscribe to Ad event 
      rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; 
      rewardBasedVideo.Show(); 
     } 
    } 

    private void HandleRewardBasedVideoRewarded(object sender, Reward e) 
    { 
     Debug.Log("30 monedas ;)"); 
     Debug.Log(e); 
    } 
} 

私はボタンでRequestRewardVideo()メソッドを実行しますが、何も起こりません。私はstart()showAdd()ボタンでrequestrewardvideo()メソッドを実行しようとしましたが、ビデオは1/3回だけ表示されます...これは何が間違っていますか?事前に

おかげ

答えて

0

は、私はボタンでRequestRewardVideo()メソッドを実行しますが、何も起こりません。

広告の読み込みに時間がかかるため、読み込みと表示の時間差を維持する必要があります。 showAdを呼び出した直後にロード後rewardBasedVideo.IsLoaded() falseを返します。

requestrewardvideo()start()から呼び出し、ボタンshowAdd()を呼び出します。

private void showAdd(RewardBasedVideoAd rewardBasedVideo) { 
     if (rewardBasedVideo.IsLoaded()) 
     { 
      //Subscribe to Ad event 
      rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; 
      rewardBasedVideo.Show(); 
     }else { 
      AdRequest request = new AdRequest.Builder().Build(); 
      rewardBasedVideo.LoadAd(request, adUnitId); 
     } 
} 

また、広告リスナー広告を閉じると、再度広告をloadAdする必要があります。だから毎回rewardBasedVideo.IsLoaded()が真を返すように。

EDIT

rewardBasedVideo.OnAdClosed += HandleOnAdClosed; //Ad listener to your rewardBasedVideo 

public void HandleOnAdClosed(object sender, EventArgs args) 
{ 
    // Load it here 
} 
+0

「も広告リスナーとき広告を閉じてloadAdを再度リクエストしてください。rewardBasedVideo.IsLoaded()がtrueを返すたびにそれが手掛かりです。どのようにリスナーを追加できますか?ありがとう;) –

+0

pleas check updatedアンサー – Aryan

+1

あなたは素晴らしいですありがとうございました!私は今、論理を理解する! ;) –

0

あなたがこのプラグインを使用している場合は、https://github.com/unity-plugins/Unity-Admob 、コードはこれを好きになるでしょう。

負荷ビデオ

ゲームオーバーに示し
Admob.Instance().loadRewardedVideo("ca-app-pub-3940256099942544/1712485313"); 

、ビデオはそれを示す前に準備ができていることを確認します

if (Admob.Instance().isRewardedVideoReady()) { 
    Admob.Instance().showRewardedVideo(); 
    } 

ハンドル広告イベント

Admob.Instance().videoEventHandler += onInterstitialEvent; 
    void onInterstitialEvent(string eventName, string msg) 
    { 
    Debug.Log("handler onAdmobEvent---" + eventName + " " + msg); 
    if (eventName == AdmobEvent.onAdLoaded) 
    { 
     Admob.Instance().showRewardedVideo(); 
    } 
    if(eventName==AdmobEvent.onAdFail){ 
    Debug.log(msg); 
    } 

} 
関連する問題