【问题标题】:How do I implement admob rewarded ads into unity如何将 admob 奖励广告实施到统一中
【发布时间】:2017-07-15 14:06:36
【问题描述】:
using UnityEngine;
using System.Collections;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using UnityEngine.Advertisements;

public class GameAdvertising : MonoBehaviour {

    public RewardBasedVideoAd rewardBasedVideo;
    bool hasPlayed;

    void Start () {
        rewardBasedVideo = RewardBasedVideoAd.Instance;
    }

    public void playAd()
    {
        AdRequest rewardrequest = new AdRequest.Builder().Build(); 
        rewardBasedVideo.LoadAd(rewardrequest, "ca-app-pub-5920324855307233/4458481507");
        rewardBasedVideo.Show();
    }
}

在我上面的代码中,我已经尝试在我的游戏中实现了一个从 ui 按钮按下调用的方法中的 admob 奖励视频广告。调用该方法时,我的手机上没有出现广告(它适用于演示脚本和横幅等。我已成功导入所有 SDk 和其他文件)。我在这里做错了什么以及如何正确放入。另外,我如何检查广​​告何时完成以便奖励用户?

【问题讨论】:

    标签: android unity3d admob ads reward


    【解决方案1】:

    您需要使用RewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; 订阅 OnAdRewarded 广告事件。

    只需从Start 函数调用RequestRewardBasedVideo() 来测试它。下面这段代码来自here,我稍微修改了一下。

    private 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();
        }
    }
    

    //该函数在视频广告播放完毕后调用。您可以在此处使用金额变量奖励播放器。

    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        //Reawrd User here
        print("User rewarded with: " + amount.ToString() + " " + type);
    }
    

    【讨论】:

    • 还要确保将您的 ID ca-app-pub-5920324855307233/4458481507 放入 adUnitId
    • 当我尝试使用上面相同的代码时出现此错误:drive.google.com/open?id=0B6CFlS0aZDPiZUFnbG9paTZUVEU
    • @Siddharth 用你的非工作代码创建一个新问题,如果答案解决了你的问题,请确保接受你得到的答案。还要提供一个链接,指向您下载 admob 插件的位置。
    【解决方案2】:

    我使用这个插件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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      相关资源
      最近更新 更多