您的位置:首页 > 其它

谷歌AdMob广告接入2——最白话,手把手教你做系列。

2017-12-15 19:04 393 查看
仍然直奔主题,接入谷歌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 =
4000
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修改成自己的即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: