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