仍然直奔主题,接入谷歌AdMob广告。申请广告ID不做赘述。这篇讲AdMob广告第二种接入方法。
首先,需求2个要素。
一,接入SDK
这次用的是谷歌原本的广告SDK下载地址
注意点击releases跳转的位置可以选择自己需要的SDK版本(PS:因为我其实一开始看到这种文档也是懵逼的,后来看的多了才知道在哪找自己需要的文件。)
下载完插件,把插件里包含的GoogleMobileAds.unitypackage的文件导入你的项目。
导入项目后你的project里面会出现以下文件。
第一步完成
二:代码部分
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds;
using System;
public class AdmobAds : MonoBehaviour {
//单例模式,方便你在其他脚本直接引用
public static AdmobAds instance;
//激励视频广告
public RewardBasedVideoAd rewardBasedVideo;
//插屏广告
public InterstitialAd interstitial;
private void Awake()
{
if (instance == null) instance = this;
else if (instance != this) Destroy(gameObject);
}
public void Start()
{
// Get singleton reward based video ad reference.
this.rewardBasedVideo = RewardBasedVideoAd.Instance;
//以下为添加视频广告需要的事件
// Called when an ad request has successfully loaded.
rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
// Called when an ad request failed to load.
rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
// Called when an ad is shown.
rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened;
// Called when the ad starts to play.
rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted;
// Called when the user should be rewarded for watching a video.
rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
// Called when the ad is closed.
rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
// Called when the ad click caused the user to leave the application.
rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;
this.RequestRewardedVideo();
RequestInterstitial();
}
private void RequestRewardedVideo()
{
//视频广告的请求方法,adUnitId填写对应平台的广告ID,下面插屏广告同理
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-7816725853485153/5965764209";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-6491984961722312/6431399451";
#else
string adUnitId = "unexpected_platform";
#endif
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the rewarded video ad with the request.
this.rewardBasedVideo.LoadAd(request, adUnitId);
}
//以下为 我们Start中添加的事件对应的执行方法
public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
}
public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print(
"HandleRewardBasedVideoFailedToLoad event received with message: "
+ args.Message);
}
public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
}
public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
}
public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
{
RequestRewardedVideo();
MonoBehaviour.print("HandleRewardBasedVideoClosed event received");
}
public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
//视频广告奖励逻辑位置。此处可添加视频奖励的对应逻辑。
}
public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
{
MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
}
//请求插屏广告
private void RequestInterstitial()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-7816725853485153/7041018637";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-7816725853485153/7041018637";
#else
string adUnitId = "unexpected_platform";
#endif
// Initialize an InterstitialAd.
interstitial = new InterstitialAd(adUnitId);
// Called when an ad request has successfully loaded.
interstitial.OnAdLoaded += HandleOnAdLoaded;
// Called when an ad request failed to load.
interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
// Called when the ad is closed.
interstitial.OnAdClosed += HandleOnAdClosed;
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the interstitial with the request.
interstitial.LoadAd(request);
}
//插屏广告对应事件
public void HandleOnAdLoaded(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdLoaded event received");
}
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
+ args.Message);
}
public void HandleOnAdClosed(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdClosed event received");
}
//显示视频广告的方法,在需要显示的地方调用即可
public void ShowReciveAds()
{
if (rewardBasedVideo.IsLoaded())
{
rewardBasedVideo.Show();
}
else
{
RequestRewardedVideo();
}
}
//显示插屏广告的方法
public void ShowInterstitial()
{
if (interstitial.IsLoaded())
{
interstitial.Show();
}
else
{
RequestInterstitial();
}
}
}
插屏广告平时不怎么用。但模式是一样的。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds;
using System;
public class AdmobBannerAds : MonoBehaviour {
private BannerView bannerView;
public void Start()
{
this.RequestBanner();
}
private void RequestBanner()
{
//填写对应平台ID
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/2934735716";
#else
string adUnitId = "unexpected_platform";
#endif
bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
// Called when an ad request has successfully loaded.
bannerView.OnAdLoaded += HandleOnAdLoaded;
// Called when an ad request failed to load.
bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
// Called when an ad is clicked.
bannerView.OnAdOpening += HandleOnAdOpened;
// Called when the user returned from the app after an ad click.
bannerView.OnAdClosed += HandleOnAdClosed;
// Called when the ad click caused the user to leave the application.
bannerView.OnAdLeavingApplication += HandleOnAdLeavingApplication;
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the banner with the request.
bannerView.LoadAd(request);
}
public void HandleOnAdLoaded(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdLoaded event received");
}
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
+ args.Message);
}
public void HandleOnAdOpened(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdOpened event received");
}
public void HandleOnAdClosed(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdClosed event received");
}
public void HandleOnAdLeftApplication(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdLeftApplication event received");
}
}
//显示Banner广告的方法,在需要显示的地方调用即可
public void ShowBanner()
{
if (bannerView.IsLoaded())
{
bannerView.Show();
}
else
{
RequestBanner();
}
}
以上代码新手可直接覆用,只需要将对应的广告ID修改成自己的即可。