Unity 3D:接入原生广告(UnityAds)和 GoogleAdmob 和 Vungle

Unity3d中接入三种广告的实现:原生的UnityAds、谷歌的GoogleAdmob

一、UnityAds的实现

  工程版本:Unity5.4.3(5.1以下需要下载插件)

  在Window-Services中将Ads开启,Unity将自动生成ios与android的广告id(在Advanced中),没有就去官网找,百度搜UnityAds;

  在settings中可选择 测试模式Test mode(方便development中测试广告),真正使用时要取消测试模式,否则一直都会是测试广告;

  在code samples中可参考代码;

  在想要显示广告的地方添加脚本调用就可以了;

code demo:
    using UnityEngine;
    using System.Collections;
    using UnityEngine.Advertisements;//引入命名空间
    public class UnityAds : MonoBehaviour
      {
        public string iosid = "";
        public string adandroidid = "";
        public static UnityAds instance;

        void Awake()
          {
            instance = this;
          }

        void Start()  //初始化
          {
            Advertisement.Initialize(iosid或者adandroidid);//初始化
            Debug.Log("初始化");
          }

        public void OnClick()
          {
            if (Advertisement.IsReady())//如果广告加载完毕(加载广告也需要时间)
              {
                UnityAdsRewardAd("rewardedVideo");//播放广告,参数填你在官网上的广告订单中的标志语(网太卡进不去官网,记不得叫什么了,反正就是你申请个广告,他会给你个订单一样的东西,里面可以设置广告的类型,ios和android的id也在里面)
              }
            else
              {
                Debug.Log("failed");//这时可以选择弹出一个UI提醒用户无网络连接或者其他导致播放失败
              }
          }

        public void UnityAdsRewardAd(string zone)  //原生奖励广告
          {
            ShowOptions options = new ShowOptions();
            if (Advertisement.IsReady())
            {
              Advertisement.Show(zone, options);//给zone(广告类型)添加回调
              Debug.Log("UnityAdsShowSuccess");
            }
            else
              {
                Debug.Log("UnityAdsFailed");
              }
            options.resultCallback = HandleShowResult;//回调函数
          }


    	public void HandleShowResult(ShowResult result)  //原生奖励广告回调函数
    	  {
            switch (result)//广告播放的结果,导致接下来的事件
              {
                case ShowResult.Finished://播放完成
                  Debug.Log("The ad was successfully shown.");
                  这里写你的奖励代码,比如看完广告加点钱,下同;
                  break;
                case ShowResult.Skipped://广告中途关闭
                  Debug.Log("The ad was skipped before reaching the end.");
                  //可以添加UI提示用户没有完成观看,无法得到奖励,下同
                  break;
                case ShowResult.Failed://广告播放失败
                  Debug.Log("The ad failed to be shown.");
                  break;
             }
	  }
具体实现还请看官方文档。

二、GoogleAdmob的实现

  注册Google账号以注册广告单元得到广告ID,需翻墙;

code demo:
using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;//引入命名空间

public class GoogleAd : MonoBehaviour
{
    private BannerView bannerView;  //横幅广告
    private InterstitialAd ad;  //插屏广告

    public static GoogleAd instance;  //单例模式
    void Awake()
    {
        instance = this;
    }
    void Start()  //初始化
    {
        InitBannerAd();  //横幅广告初始化函数调用
        InitializeGoogleAd();  //插屏广告初始化函数调用
        Debug.Log("初始化");
    }
    public void OnClick()
    {
        GoogleAdsShow();  //播放广告
    }

    public void InitBannerAd()  //谷歌横幅初始化函数
    {
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";  //横幅广告ID
        bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Top);  //横幅广告实例化(三个参数为:ID、大小、位置) 
        AdRequest request = new AdRequest.Builder().Build();  
        bannerView.LoadAd(request);  //横幅广告比较特殊,不用Show()方法,加载完成直接播放(流氓广告)
    }

    void InitializeGoogleAd()  //谷歌全屏初始化函数
    {
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";  //全屏广告ID
        ad = new InterstitialAd(adUnitId);  //实例化
        AdRequest request = new AdRequest.Builder().Build();
        ad.LoadAd(request);  //加载
    }

    public void GoogleAdsShow()  //谷歌广告播放函数
    {
        if (ad.IsLoaded())  //判断广告是否加载完毕
        {
            ad.Show();  //播放广告
            Debug.Log("googleadsSuccess");
        }
        else
        {
            Debug.Log("failed.");
        }
    }

}
具体实现还请看官方文档。

三、Vungle广告的实现

  去官网找Unity的广告插件,下载并导入Unity工程

code demo:
using UnityEngine;
using System.Collections;

public class VungleAd : MonoBehaviour
{
    public static VungleAd instance;
    void Awake()
    {
        instance = this;
    }
    void Start()  //初始化
    {
        Vungle.init("Test_Android", "Test_iOS", "vungleTest");  //参数请看官方文档
        Debug.Log("初始化");
    }
    public void OnClick()
    {
        if (Vungle.isAdvertAvailable())  //如果广告加载完毕
        {
            VungleShow();  //播放广告函数调用
        }
        else
        {
            Debug.Log("failed");
        }
    }

    public void VungleShow()  
    {
        Vungle.playAd();  //播放广告
    }
    void OnApplicationPause(bool pauseStatus)  //有需要可以设置暂停操作
    {
        if (pauseStatus)
        {
            Vungle.onPause();
        }
        else
        {
            Vungle.onResume();
        }
    }
    void onAdFinishedEvent(AdFinishedEventArgs arg)
    {
        Debug.Log("onAdFinishedEvent. watched: " + arg.TimeWatched + ", length: " + arg.TotalDuration + ", isCompletedView: " + arg.IsCompletedView);
        这里写奖励回调,回调在OnEnable里触发,用完要及时OnDisable,否则会重叠触发
    }
    void OnEnable()  //回调
   {
      Vungle.onAdFinishedEvent += onAdFinishedEvent;
   }
   void OnDisable()  // 结束回调,必需,否则会重复回调
   {
      Vungle.onAdFinishedEvent -= onAdFinishedEvent;
   }
}
具体实现还请看官方文档。

  

发布了16 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/yuecangjiao5151/article/details/74502544