2017-04-07 6 views
1

Ich versuche, eine Admob-Belohnungsvideoanzeige zu meinem in Unity erstellten Android-Spiel hinzuzufügen. Die Anzeige ist in Ordnung, aber wenn ich die Anzeige schließe, wird die Belohnung niemals vergeben. Ich habe den Code in der Funktion getestet und das klappt einwandfrei also ich denke das Problem ist, dass nicht gettting aufgerufen wird. Kann mir jemand helfen?Unity: Admob Reward-Videoanzeige ruft keine Ereignisse auf

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

public class textEdit : MonoBehaviour 
{ 
    public Image lifeAdUI; 
    static Image lifeAdUIStat; 
    public Text adFailUI; 
    static Text adFailUIStat; 
    public Button lifeButton; 

    private static RewardBasedVideoAd videoAd; 
    static bool adTime = false; 
    static bool adPlaying = false; 
    static int pass = 0; 
    bool watched; 

    // Use this for initialisation 
    void Start() 
    { 
    Button btn = lifeButton.GetComponent<Button>(); 
    btn.onClick.AddListener(VideoAd); 

    videoAd = RewardBasedVideoAd.Instance; 

    videoAd.OnAdFailedToLoad += HandleOnAdFailedToLoad; 
    videoAd.OnAdOpening += HandleOnAdOpening; 
    videoAd.OnAdClosed += HandleOnAdClosed; 
    videoAd.OnAdRewarded += HandleOnAdReward; 
    videoAd.OnAdLeavingApplication += HandleOnAdLeavingApplication; 
    videoAd.OnAdLoaded += HandleOnAdLoaded; 
    videoAd.OnAdStarted += HandleOnAdStarted; 

    lifeAdUIStat = lifeAdUI; 
    adFailUIStat = adFailUI; 

    } 


public static void LoadVideoAd() 
{ 
#if UNITY_EDITOR 
    string adUnitID = "unused"; 
#elif UNITY_ANDROID 
    string adUnitID = "ca-app-pub-3025391748532285/9122766975"; 
#elif UNITY_IPHONE 
    string adUnitID = ""; 
#else 
    string adUnitID = "unexpected_platform"; 
#endif 


    videoAd.LoadAd(new AdRequest.Builder().Build(), adUnitID); 
    pass = pass + 1; 

} 

void VideoAd() 
{ 
    if (videoAd.IsLoaded()) 
    { 
     videoAd.Show(); 


    } 
    else 
    { 
     //ad not loaded 
    } 
} 

//Ad Events 
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) 
{ 
    if (pass < 2) 
    { 
     LoadVideoAd(); 
    } 
    else 
    { 
     StartCoroutine(adFailCoro()); 
    } 
} 

public void HandleOnAdOpening(object ssender, EventArgs args) 
{ 
    adPlaying = true; 
} 

public void HandleOnAdClosed(object sender, EventArgs args) 
{ 
    adPlaying = false; 
    watched = true; 

    if (watched == true) 
    { 
     control controlScript = GameObject.FindGameObjectWithTag("Control").GetComponent<control>(); 

     lifeAdUI.enabled = false; 
     StartCoroutine(controlScript.ExtraLife()); 
    } 
} 

public void HandleOnAdReward(object sender, EventArgs args) 
{ 
    watched = true; 
} 

public void HandleOnAdLeavingApplication(object sender, EventArgs args) 
{ 


} 

    public void HandleOnAdLoaded(object sender, EventArgs args) 
    { 

    } 

    public void HandleOnAdStarted(object sender, EventArgs args) 
    { 

    } 
} 

Antwort

0

Wenn Sie VideoAd genannt Ihre Video-Anzeige zu zeigen, aber aufgrund einiger unvorhergesehener Grund wird Ihr Video noch nicht geladen ist, oder Fehler beim Laden mit, so Anfrage erneut auf Ihre Anzeige zu laden.

Anforderung zum Laden neuer Videoanzeigen, wenn Ihre Anzeige vom Nutzer geschlossen wird.

public void HandleOnAdClosed(object sender, EventArgs args) 
{ 
    adPlaying = false; 
    watched = true; 

    if (watched == true) //what is the need of this condition, it always true 
    { 
     control controlScript = GameObject.FindGameObjectWithTag("Control").GetComponent<control>(); 

     lifeAdUI.enabled = false; 
     StartCoroutine(controlScript.ExtraLife()); 
     LoadVideoAd(); 
    } 
} 
+0

Die beobachtete Variable ist anfangs Null und wird nur in HandleOnAdRewar auf true gesetzt Wenn der Nutzer die Anzeige schließt, nachdem er sie gesehen hat, wird er mit einem anderen Leben belohnt. Aber das Problem ist, diese HandleOnAd .... Funktionen werden nicht aufgerufen. –

0

Init Admob Unity Plugin

using admob; 
    Admob.Instance().initAdmob("admob banner id", "admob interstitial id");//admob id with format ca-app-pub-279xxxxxxxx/xxxxxxxx 
    //Admob.Instance().initAdmob("ca-app-pub-3940256099942544/2934735716", "ca-app-pub-3940256099942544/4411468910"); 

Hier ist der minimale Code ein AdMob-Video zu erstellen.

Admob.Instance().loadRewardedVideo("ca-app-pub-3940256099942544/1712485313"); 

Video müssen explizit an einem geeigneten Haltepunkt in der App angezeigt werden, überprüfen Sie, dass das Video, bevor zeigt sie bereit ist:

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

Griff Belohnung

Admob.Instance().videoEventHandler += onVideoEvent; 
void onVideoEvent(string eventName, string msg) 
{ 
    Debug.Log("handler onAdmobEvent---" + eventName + " " + msg); 
    if (eventName == AdmobEvent.onRewarded) 
    { 
     //msg is the reward count.you can handle it now 
    } 
} 

ref admob plugin