Unity中接入原生广告(UnityAds)和 GoogleAdmob 和 Vungle

来源:互联网 发布:python决策树结构 编辑:程序博客网 时间:2024/06/06 18:41

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;   }}
具体实现还请看官方文档。







  

原创粉丝点击