繁体   English   中英

Unity3d Admob奖励视频广告

[英]Unity3d Admob rewarded video ads

我无法在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次……这是怎么回事?

提前致谢

我用一个按钮运行RequestRewardVideo()方法,但是什么也没有发生。

您必须在加载广告和显示广告之间保持一定的时间差,因为广告加载需要花费一些时间。 当您在加载rewardBasedVideo.IsLoaded()之后刚刚调用showAd时,返回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);
        }
}

当广告关闭并请求再次在此处加载广告时,也将广告作为监听器。 这样每次rewardBasedVideo.IsLoaded()返回true时。

编辑

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

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

如果您使用的是此插件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);
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM