目录

1.Admob SDK 下载地址

2.将下载好的unityPackage sdk导入到unity里

​编辑

3.解析依赖到项目中

4.设置admob app ID

5.android 测试Id

6.IOS 测试ID

7.测试 app ID

8. SDK初始化与使用示例代码

9.gradle 配置

10. gradle 下载地址


1.Admob SDK 下载地址

Admob SDK 下载地址

2.将下载好的unityPackage sdk导入到unity里

在 Unity 编辑器中打开您的项目,然后依次选择 Assets > Import Package > Custom Package,并找到您下载的 GoogleMobileAdsPlugin.unitypackage 文件。

3.解析依赖到项目中

在 Unity 编辑器中,依次选择 Assets > External Dependency Manager > Android Resolver > Resolve。Unity 外部依赖项管理器库会将声明的依赖项复制到 Unity 应用的 Assets/Plugins/Android 目录中。

4.设置admob app ID

在 Unity 编辑器中,从菜单中依次选择 Assets > Google Mobile Ads > Settings

5.android 测试Id

6.IOS 测试ID

7.测试 app ID

ca-app-pub-3940256099942544~3347511713

8. SDK初始化与使用示例代码

public class GoogleAdMobController : MonoBehaviour
{private readonly TimeSpan APPOPEN_TIMEOUT = TimeSpan.FromHours(4);private DateTime appOpenExpireTime;private AppOpenAd appOpenAd;private BannerView bannerView;private InterstitialAd interstitialAd;private RewardedAd rewardedAd;private RewardedInterstitialAd rewardedInterstitialAd;private float deltaTime;private bool isShowingAppOpenAd;public UnityEvent OnAdLoadedEvent;public UnityEvent OnAdFailedToLoadEvent;public UnityEvent OnAdOpeningEvent;public UnityEvent OnAdFailedToShowEvent;public UnityEvent OnUserEarnedRewardEvent;public UnityEvent OnAdClosedEvent;public bool showFpsMeter = true;public Text fpsMeter;public Text statusText;#region UNITY MONOBEHAVIOR METHODSpublic void Start(){MobileAds.SetiOSAppPauseOnBackground(true);List<String> deviceIds = new List<String>() { AdRequest.TestDeviceSimulator };#if UNITY_IPHONEdeviceIds.Add("96e23e80653bb28980d3f40beb58915c");
#elif UNITY_ANDROIDdeviceIds.Add("75EF8D155528C04DACBBA6F36F433035");
#endifRequestConfiguration requestConfiguration =new RequestConfiguration.Builder().SetTagForChildDirectedTreatment(TagForChildDirectedTreatment.Unspecified).SetTestDeviceIds(deviceIds).build();MobileAds.SetRequestConfiguration(requestConfiguration);MobileAds.Initialize(HandleInitCompleteAction);AppStateEventNotifier.AppStateChanged += OnAppStateChanged;}private void HandleInitCompleteAction(InitializationStatus initstatus){Debug.Log("Initialization complete.");MobileAdsEventExecutor.ExecuteInUpdate(() =>{statusText.text = "Initialization complete.";RequestBannerAd();});}private void Update(){if (showFpsMeter){fpsMeter.gameObject.SetActive(true);deltaTime += (Time.deltaTime - deltaTime) * 0.1f;float fps = 1.0f / deltaTime;fpsMeter.text = string.Format("{0:0.} fps", fps);}else{fpsMeter.gameObject.SetActive(false);}}#endregion#region HELPER METHODSprivate AdRequest CreateAdRequest(){return new AdRequest.Builder().AddKeyword("unity-admob-sample").Build();}#endregion#region BANNER ADSpublic void RequestBannerAd(){PrintStatus("Requesting Banner ad.");#if UNITY_EDITORstring adUnitId = "unused";
#elif UNITY_ANDROIDstring adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONEstring adUnitId = "ca-app-pub-3940256099942544/2934735716";
#elsestring adUnitId = "unexpected_platform";
#endifif (bannerView != null){bannerView.Destroy();}bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);bannerView.OnAdLoaded += (sender, args) =>{PrintStatus("Banner ad loaded.");OnAdLoadedEvent.Invoke();};bannerView.OnAdFailedToLoad += (sender, args) =>{PrintStatus("Banner ad failed to load with error: " + args.LoadAdError.GetMessage());OnAdFailedToLoadEvent.Invoke();};bannerView.OnAdOpening += (sender, args) =>{PrintStatus("Banner ad opening.");OnAdOpeningEvent.Invoke();};bannerView.OnAdClosed += (sender, args) =>{PrintStatus("Banner ad closed.");OnAdClosedEvent.Invoke();};bannerView.OnPaidEvent += (sender, args) =>{string msg = string.Format("{0} (currency: {1}, value: {2}","Banner ad received a paid event.",args.AdValue.CurrencyCode,args.AdValue.Value);PrintStatus(msg);};// Load a banner adbannerView.LoadAd(CreateAdRequest());}public void DestroyBannerAd(){if (bannerView != null){bannerView.Destroy();}}#endregion#region INTERSTITIAL ADSpublic void RequestAndLoadInterstitialAd(){PrintStatus("Requesting Interstitial ad.");#if UNITY_EDITORstring adUnitId = "unused";
#elif UNITY_ANDROIDstring adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONEstring adUnitId = "ca-app-pub-3940256099942544/4411468910";
#elsestring adUnitId = "unexpected_platform";
#endif// Clean up interstitial before using itif (interstitialAd != null){interstitialAd.Destroy();}interstitialAd = new InterstitialAd(adUnitId);// Add Event HandlersinterstitialAd.OnAdLoaded += (sender, args) =>{PrintStatus("Interstitial ad loaded.");OnAdLoadedEvent.Invoke();};interstitialAd.OnAdFailedToLoad += (sender, args) =>{PrintStatus("Interstitial ad failed to load with error: " + args.LoadAdError.GetMessage());OnAdFailedToLoadEvent.Invoke();};interstitialAd.OnAdOpening += (sender, args) =>{PrintStatus("Interstitial ad opening.");OnAdOpeningEvent.Invoke();};interstitialAd.OnAdClosed += (sender, args) =>{PrintStatus("Interstitial ad closed.");OnAdClosedEvent.Invoke();};interstitialAd.OnAdDidRecordImpression += (sender, args) =>{PrintStatus("Interstitial ad recorded an impression.");};interstitialAd.OnAdFailedToShow += (sender, args) =>{PrintStatus("Interstitial ad failed to show.");};interstitialAd.OnPaidEvent += (sender, args) =>{string msg = string.Format("{0} (currency: {1}, value: {2}","Interstitial ad received a paid event.",args.AdValue.CurrencyCode,args.AdValue.Value);PrintStatus(msg);};// Load an interstitial adinterstitialAd.LoadAd(CreateAdRequest());}public void ShowInterstitialAd(){if (interstitialAd != null && interstitialAd.IsLoaded()){interstitialAd.Show();}else{PrintStatus("Interstitial ad is not ready yet.");}}public void DestroyInterstitialAd(){if (interstitialAd != null){interstitialAd.Destroy();}}#endregion#region REWARDED ADSpublic void RequestAndLoadRewardedAd(){PrintStatus("Requesting Rewarded ad.");
#if UNITY_EDITORstring adUnitId = "unused";
#elif UNITY_ANDROIDstring adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONEstring adUnitId = "ca-app-pub-3940256099942544/1712485313";
#elsestring adUnitId = "unexpected_platform";
#endif// create new rewarded ad instancerewardedAd = new RewardedAd(adUnitId);// Add Event HandlersrewardedAd.OnAdLoaded += (sender, args) =>{PrintStatus("Reward ad loaded.");OnAdLoadedEvent.Invoke();};rewardedAd.OnAdFailedToLoad += (sender, args) =>{PrintStatus("Reward ad failed to load.");OnAdFailedToLoadEvent.Invoke();};rewardedAd.OnAdOpening += (sender, args) =>{PrintStatus("Reward ad opening.");OnAdOpeningEvent.Invoke();};rewardedAd.OnAdFailedToShow += (sender, args) =>{PrintStatus("Reward ad failed to show with error: " + args.AdError.GetMessage());OnAdFailedToShowEvent.Invoke();};rewardedAd.OnAdClosed += (sender, args) =>{PrintStatus("Reward ad closed.");OnAdClosedEvent.Invoke();};rewardedAd.OnUserEarnedReward += (sender, args) =>{PrintStatus("User earned Reward ad reward: " + args.Amount);OnUserEarnedRewardEvent.Invoke();};rewardedAd.OnAdDidRecordImpression += (sender, args) =>{PrintStatus("Reward ad recorded an impression.");};rewardedAd.OnPaidEvent += (sender, args) =>{string msg = string.Format("{0} (currency: {1}, value: {2}","Rewarded ad received a paid event.",args.AdValue.CurrencyCode,args.AdValue.Value);PrintStatus(msg);};// Create empty ad requestrewardedAd.LoadAd(CreateAdRequest());}public void ShowRewardedAd(){if (rewardedAd != null){rewardedAd.Show();}else{PrintStatus("Rewarded ad is not ready yet.");}}public void RequestAndLoadRewardedInterstitialAd(){PrintStatus("Requesting Rewarded Interstitial ad.");// These ad units are configured to always serve test ads.
#if UNITY_EDITORstring adUnitId = "unused";
#elif UNITY_ANDROIDstring adUnitId = "ca-app-pub-3940256099942544/5354046379";
#elif UNITY_IPHONEstring adUnitId = "ca-app-pub-3940256099942544/6978759866";
#elsestring adUnitId = "unexpected_platform";
#endif// Create an interstitial.RewardedInterstitialAd.LoadAd(adUnitId, CreateAdRequest(), (rewardedInterstitialAd, error) =>{if (error != null){PrintStatus("Rewarded Interstitial ad load failed with error: " + error);return;}this.rewardedInterstitialAd = rewardedInterstitialAd;PrintStatus("Rewarded Interstitial ad loaded.");// Register for ad events.this.rewardedInterstitialAd.OnAdDidPresentFullScreenContent += (sender, args) =>{PrintStatus("Rewarded Interstitial ad presented.");};this.rewardedInterstitialAd.OnAdDidDismissFullScreenContent += (sender, args) =>{PrintStatus("Rewarded Interstitial ad dismissed.");this.rewardedInterstitialAd = null;};this.rewardedInterstitialAd.OnAdFailedToPresentFullScreenContent += (sender, args) =>{PrintStatus("Rewarded Interstitial ad failed to present with error: " +args.AdError.GetMessage());this.rewardedInterstitialAd = null;};this.rewardedInterstitialAd.OnPaidEvent += (sender, args) =>{string msg = string.Format("{0} (currency: {1}, value: {2}","Rewarded Interstitial ad received a paid event.",args.AdValue.CurrencyCode,args.AdValue.Value);PrintStatus(msg);};this.rewardedInterstitialAd.OnAdDidRecordImpression += (sender, args) =>{PrintStatus("Rewarded Interstitial ad recorded an impression.");};});}public void ShowRewardedInterstitialAd(){if (rewardedInterstitialAd != null){rewardedInterstitialAd.Show((reward) =>{PrintStatus("Rewarded Interstitial ad Rewarded : " + reward.Amount);});}else{PrintStatus("Rewarded Interstitial ad is not ready yet.");}}#endregion#region APPOPEN ADSpublic bool IsAppOpenAdAvailable{get{return (!isShowingAppOpenAd&& appOpenAd != null&& DateTime.Now < appOpenExpireTime);}}public void OnAppStateChanged(AppState state){// Display the app open ad when the app is foregrounded.UnityEngine.Debug.Log("App State is " + state);// OnAppStateChanged is not guaranteed to execute on the Unity UI thread.MobileAdsEventExecutor.ExecuteInUpdate(() =>{if (state == AppState.Foreground){ShowAppOpenAd();}});}public void RequestAndLoadAppOpenAd(){PrintStatus("Requesting App Open ad.");
#if UNITY_EDITORstring adUnitId = "unused";
#elif UNITY_ANDROIDstring adUnitId = "ca-app-pub-3940256099942544/3419835294";
#elif UNITY_IPHONEstring adUnitId = "ca-app-pub-3940256099942544/5662855259";
#elsestring adUnitId = "unexpected_platform";
#endif// create new app open ad instanceAppOpenAd.LoadAd(adUnitId,ScreenOrientation.Portrait,CreateAdRequest(),OnAppOpenAdLoad);}private void OnAppOpenAdLoad(AppOpenAd ad, AdFailedToLoadEventArgs error){if (error != null){PrintStatus("App Open ad failed to load with error: " + error);return;}PrintStatus("App Open ad loaded. Please background the app and return.");this.appOpenAd = ad;this.appOpenExpireTime = DateTime.Now + APPOPEN_TIMEOUT;}public void ShowAppOpenAd(){if (!IsAppOpenAdAvailable){return;}// Register for ad events.this.appOpenAd.OnAdDidDismissFullScreenContent += (sender, args) =>{PrintStatus("App Open ad dismissed.");isShowingAppOpenAd = false;if (this.appOpenAd != null){this.appOpenAd.Destroy();this.appOpenAd = null;}};this.appOpenAd.OnAdFailedToPresentFullScreenContent += (sender, args) =>{PrintStatus("App Open ad failed to present with error: " + args.AdError.GetMessage());isShowingAppOpenAd = false;if (this.appOpenAd != null){this.appOpenAd.Destroy();this.appOpenAd = null;}};this.appOpenAd.OnAdDidPresentFullScreenContent += (sender, args) =>{PrintStatus("App Open ad opened.");};this.appOpenAd.OnAdDidRecordImpression += (sender, args) =>{PrintStatus("App Open ad recorded an impression.");};this.appOpenAd.OnPaidEvent += (sender, args) =>{string msg = string.Format("{0} (currency: {1}, value: {2}","App Open ad received a paid event.",args.AdValue.CurrencyCode,args.AdValue.Value);PrintStatus(msg);};isShowingAppOpenAd = true;appOpenAd.Show();}#endregion#region AD INSPECTORpublic void OpenAdInspector(){PrintStatus("Open ad Inspector.");MobileAds.OpenAdInspector((error) =>{if (error != null){PrintStatus("ad Inspector failed to open with error: " + error);}else{PrintStatus("Ad Inspector opened successfully.");}});}#endregion#region Utility///<summary>/// Log the message and update the status text on the main thread.///<summary>private void PrintStatus(string message){Debug.Log(message);MobileAdsEventExecutor.ExecuteInUpdate(() =>{statusText.text = message;});}#endregion
}

9.gradle 配置

allprojects {repositories {maven { url 'https://dl.google.com/dl/android/maven2/' }google()maven { url "https://jitpack.io" }maven { url 'https://maven.aliyun.com/repository/jcenter' }jcenter()flatDir {dirs 'libs'}mavenLocal()maven {url "https://maven.aliyun.com/nexus/content/repositories/releases"}}
}

10. gradle 下载地址

unity 升级gradle版本

unity---接入Admob相关推荐

  1. unity google admob ios 接入 聚合激励广告适配器

    下面说下躺坑 主要是接入google admob 聚合激励广告适配器 ,开启facebook ,unity,admob 广告 使用sdk框架接入 sdk下载地址:https://developers. ...

  2. Unity接入激励视频广告,Admob+UnityAds+FacebookAudienceNetwork+Pangle。

    前段时间用了两周时间接广告,后来又改用其他方式接入了. 记一下接入过程,算是没白辛苦吧. 2021/2/22 --------------------------------- NRatel割 --- ...

  3. Unity接入苹果内购(IAP)

    Unity接入苹果内购(IAP) 前言 苹果支付流程 配置App 配置商品 协议.税务和银行业务 沙盒测试账号 Unity(IAP) 测试 前言 第一次发帖,有点激动嘿嘿!话不多说直接奔主题,项目中需 ...

  4. Unity接入Google登录

    Unity接入Google登录 接入FireBaseSdk和GoogleSignIn插件 FireBase接入文档 GoogleSignIn 编写登录代码 可能出现的问题 运行时弹出Google登录界 ...

  5. Unity接入ChatGPT基于Python.Runtime的实现

    目录 前言 编译Python.Runtime.dll Unity接入ChatGPT 1.第一步 准备环境 2.第二步 python代码的书写 3.第三步 C#调用python代码 前言: 相信各位游戏 ...

  6. unity接入百度人体识别

    unity接入百度人体识别 1.去百度下载SDK 复制AipSdk.dll到工程 复制Newtonsoft.Json.dll到工程 自己按照unity版本,选择2.0,3.5,还是4.0的dll 2. ...

  7. 真正手把手教你用unity接入苹果内购(IAP)

    原帖:真正手把手教你用unity接入苹果内购(IAP) http://www.manew.com/thread-100403-1-1.html (出处: -[游戏蛮牛]-ar增强现实,虚拟现实,uni ...

  8. Unity 接入 Android ShareSDK

    Unity 接入 Android ShareSDK 网上已经很多关于Unity 接入 ShareSDK 的例子,大多使用的是 ShareSDK For Unity3d 直接导入到Unity 中使用,下 ...

  9. Unity接入微信SDK——iOS(接入微信SDK)

    Unity接入微信SDK--iOS(一 接入微信SDK) 下载微信SDK 下载地址:微信开放平台 导出Unity Xcode项目 导出Unity Xcode项目,并打开 微信SDK导入Xcode项目 ...

  10. Unity接入穿山甲广告(使用Unity3D插件)

      最近要接入穿山甲广告,我把穿山甲广告相关的接入流程记录一下,说说最近踩过的坑,和怎么解决的问题.注意我们需求是只发安卓包没有iOS的需求,本篇只介绍Unity接入安卓相关的处理(帖子是2019年底 ...

最新文章

  1. SQL盲注工具BBQSQL
  2. 为UINavigationBar添加自定义背景
  3. Proteus仿真STM32F103R6微控制器的GPIO(按键控制LED开关)
  4. 用VS Express 2010开发第一个应用程序
  5. 【Tools】常用的Markdown编辑器汇总
  6. 布鲁克大学计算机科学,布鲁克大学计算机科学本科.pdf
  7. 为什么BAT这些大企业都喜欢用LoRa技术?
  8. AWS 人工智能黑客马拉松正式开启!用实力演绎科技向善!
  9. SQL2008 SQLserver(express)服务不能启动
  10. 【今年年会,你中奖了吗?】在线抽奖活动中如何实现中奖概率的自适应调整...
  11. 计算机二级关于ppt背景音乐,计算机二级考试真题-PPT-校摄影社团优秀作品展
  12. 面向对象编程思想详解汇总
  13. R的农场 chebnear
  14. android如何虚标内存,答疑 | 手机运存明明是6GB,但实际可用才3.5GB?是虚标还是什么?...
  15. 三度盈利,51Talk稳了吗?
  16. 智能化酒糟池测温技术方案
  17. 美团和滴滴,跨领域的竞争
  18. 元宇宙007 | 沉浸式家庭治疗,让治疗像演情景剧一样!
  19. 大量的数据mysql查询最新的记录慢问题
  20. HashMap-链表与红黑树转换触发条件

热门文章

  1. 一周总结——2020.7.5
  2. 拯救者R9000p加装固态后画面卡顿问题
  3. 【linux】查看本机的网关地址
  4. linux查看网关gateway
  5. html 绘制气球,html – 圈子div气球
  6. 利用openoffice转成image
  7. cv-2.opencv示例stitching——图像拼接
  8. 最容易理解的Android6.0动态权限申请教程
  9. matlab模拟公式,MATLAB模拟衍射利用基尔霍夫衍射公式
  10. Vue 生成二维码,转换成图片,下载到本地