时间:2021-07-15 | 标签: | 作者:Q8 | 来源:iningwei网络
小提示:您能找到这篇{Unity Android接入MoPub聚合广告SDK}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Unity Android接入MoPub聚合广告SDK内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
这里只总结前端接入流程和注意事项,后台配置请参考官方详细文档 mopub广告有以下类型 Bananer(横幅) Interstitial(插屏) Rewarded Video(激励视频) Rewarded Playable(互动式激励MRAID) Native(原生) 1:下载mopub-unity-sdk 这里下载最新的unity package 2:设置支持的广告平台 推荐使用插件提供的MoPub SDK Manager来管理 在这里插入图片描述 需要注意的是,每次升级或者安装或者删除(删除一般只需要在Assets/MoPub/Mediation目录下删除对应目录即可)某个广告平台后,建议用External Dependency Manager工具重新设置一下jar和aar依赖。 另外在网络不好的情况下,使用External Dependency Manager会存在所需依赖拉不下来的情况,那么就需要手动把需要的依赖放到Plugins/Android目录下 这部分集成可以参考官方文档:Integrate the MoPub SDK for Unity 3:SDK接入 3.1初始化 首先根据集成的广告类型,从后台获得对应的广告id 插件中提供了Prefab来进行初始化,同时我们也可以选择使用底层代码进行初始化。笔者使用了后者。 3.1.1预定义一些参数 //ios端旗帜式广告 public string iOSBannerID; //ios插页式广告 public string iOSInterstitialID; //ios激励视频广告 public string iOSVideoID; //安卓旗帜式广告 public string AndroidBannerID; //安卓插页式广告 public string AndroidInterstitialID; //安卓激励视频广告 public string AndroidVideoID; //请求广告的函数的参数是string数组,用来装上面的广告ID private string[] _bannerAdUnits; private string[] _interstitialAdUnits; private string[] _rewardedVideoAdUnits; MPRewardedVideoListener mpRewardedVideoListener = null; DateTime lastAdTime = new DateTime(2020, 1, 1); 3.1.2初始化 #if UNITY_IOS _bannerAdUnits = new string[] { iOSBannerID }; _interstitialAdUnits = new string[] { iOSInterstitialID }; _rewardedVideoAdUnits = new string[] { iOSVideoID }; #elif UNITY_ANDROID _bannerAdUnits = new外贸展会 string[] { AndroidBannerID }; _interstitialAdUnits = new string[] { AndroidInterstitialID }; _rewardedVideoAdUnits = new string[] { AndroidVideoID }; #endif var anyAdUnitId = _rewardedVideoAdUnits[0]; MoPub.InitializeSdk(new MoPub.SdkConfiguration 网上推广营销公司 { //设置一个任意有效的广告Id AdUnitId = anyAdUnitId, LogLevel = MoPub.LogLevel.Debug, MediatedNetworks = new MoPub.MediatedNetwork[] { }, }); 3.1.3设置广告插件 根据项目中需要集成的广告类型,设置对应的广告插件 //加载激励视频的插件 MoPub.LoadRewardedVideoPluginsForAdUnits(_rewardedVideoAdUnits); //初始化各种广告,现在还没有使用好几个id的需求,所以每个广告类型先都用一个id,所以都取[0]。 //按着官方用例,如果有多种id的话可以写一个for循环直接遍历创造就好 其它类型api MoPub.LoadBannerPluginsForAdUnits(_bannerAdUnits); MoPub.LoadInterstitialPluginsForAdUnits(_interstitialAdUnits); MoPub.LoadRewardedVideoPluginsForAdUnits(_rewardedVideoAdUnits); MoPub.LoadRewardedVideoPluginsForAdUnits(_rewardedRichMediaAdUnits); 3.1.4根据广告类型具体集成 官网提供了Banner,Interstitial,Rewarded Video三种类型广告的集成教程,笔者这边只集成了激励视频,故后文以激励视频为例继续展开(需要注意的是激励视频教程中提到的后台要设置Callback Server)。 step1:在SDK初始化成功的回调中,先预加载激励视频。 step2:播放激励视频前先调用MoPub.HasRewardedVideo(adUnitId);检测视频是否准备好 step3:调用MoPub.ShowRewardedVideo(adUnitId);播放视频 step4:处理各种回调 mpRewardedVideoListener = new MPRewardedVideoListener(); // 绑定初始化回调 MoPubManager.OnSdkInitializedEvent += OnSdkInitializedEvent; //激励视频广告回调 //激励视频预加载成功 MoPubManager.OnRewardedVideoLoadedEvent += mpRewardedVideoListener.OnRewardedVideoLoadedEvent; //激励视频预加载失败 MoPubManager.OnRewardedVideoFailedEvent += mpRewardedVideoListener.OnRewardedVideoFailedEvent; //激励视频加载Expired MoPubManager.OnRewardedVideoExpiredEvent += mpRewardedVideoListener.OnRewardedVideoExpiredEvent; //激励视频广告播放完(在播放完,用户点了关闭按钮后触发) MoPubManager.OnRewardedVideoShownEvent += mpRewardedVideoListener.OnRewardedVideoAdShowed; //激励视频播放失败 MoPubManager.OnRewardedVideoFailedToPlayEvent += mpRewardedVideoListener.OnRewardedVideoAdShowFailed; ; //激励视频播放关闭 MoPubManager.OnRewardedVideoClosedEvent += mpRewardedVideoListener.OnRewardedVideoAdClosed; private void OnSdkInitializedEvent(string adUnitId) { Debug.LogError("mopub SDK初始化成功, adUnitId:" + adUnitId); #if UNITY_IOS MoPub.RequestInterstitialAd (iOSInterstitialID); MoPub.RequestRewardedVideo (iOSVideoID); #elif UNITY_ANDROID //MoPub.RequestInterstitialAd(AndroidInterstitialID); Debug.LogError("Pre-fetch the rewarded video ad"); MoPub.RequestRewardedVideo(AndroidVideoID);//请求预加载 #endif } class MPRewardedVideoListener { public Action onReward = null; public Action onRewardClose = null; public Action onRewardError = null; bool rewardSuccess = false; public void OnRewardedVideoLoadedEvent(string adUnitId) { Debug.LogError("激励视频预加载成功 :" + adUnitId); } public void OnRewardedVideoFailedEvent(string adUnitId, string errorMsg) { Debug.LogError("激励视频预加载失败:" + adUnitId + ", msg:" + errorMsg); } public void OnRewardedVideoExpiredEvent(string adUnitId) { Debug.LogError("激励视频加载Expired:" + adUnitId); AnalyticsManager.LogEvent(AnalyticsEventID.RewardVideo_ShowFail); rewardSuccess = false; var act = onRewardError; onRewardError = null; if (act != null) { act(); } } public void OnRewardedVideoAdShowed(string adUnitId) { Debug.LogError("激励视频广告播放完"); AnalyticsManager.LogEvent(AnalyticsEventID.RewardVideo_ShowSuccess); rewardSuccess = true; } public void OnRewardedVideoAdShowFailed(string adUnitId, string errorMsg) { Debug.LogError("激励视频播放失败 :" + adUnitId + ", msg:" + errorMsg); AnalyticsManager.LogEvent(AnalyticsEventID.RewardVideo_ShowFail); rewardSuccess = false; var act = onRewardError; 危机公关属于公关吗 onRewardError = null; if (act != null) { act(); } } public void OnRewardedVideoAdClicked(string scene) { AnalyticsManager.LogEvent(AnalyticsEventID.RewardVideo_Click); } public void OnRewardedVideoAdClosed(string adUnitId) { Debug.LogError("激励视频播放关闭 :" + adUnitId); if (rewardSuccess) { var act = onReward; var act1 = onRewardClose; onRewardClose = null; onRewardError = null; onReward = null; if (act != null) { act(); } if (act1 != null) { act1(); } } else { var act = onRewardError; var act1 = onRewardClose; onRewardClose = null; onRewardError = null; onReward = null; if (act != null) { act(); } if (act1 != null) { act1(); } } rewardSuccess = false; } } 4:测试 官方Test文档中有提供100%填充的广告id,可以先用这些id来测试流程。没问题后再切换到正式id。同时也可以根据这个来很快定位是后台配置还是前端的问题。 另外最好挂V.P.N来测试广告~ 5:注意事项 5.1广告填充率低下的问题 笔者使用聚合平台集成了MoPub、Applovin、IronSource、UnityAds。通过后台控制只开启某个广告平台,发现MoPub和Applovin的填充率很低,Applovin是展示几个后就再也拉不到了,MoPub是自始至终一次都没有填充。另两个没有问题。目前还没有找到原因 5.2各广告平台额外的配置项 上文中写到了这段代码: MediatedNetworks = new MoPub.MediatedNetwork[] { }, 这里即按照广告平台来具体设置一些信息,但是各个广告平台需要设置哪些信息呢。可以参考AppLovin,IronSource(在这些页面左侧可以很方便导航到其它广告平台)。根据文档可以看到还需要配置一些信息,最终代码如下: MediatedNetworks = new MoPub.MediatedNetwork[] { //AppLovin new MoPub.SupportedNetwork.AppLovin{ NetworkConfiguration=new Dictionary<string, string>(){ { "sdk_key","xxxxxxxxx"}, }, }, //IronSource new MoPub.SupportedNetwork.IronSource { NetworkConfiguration=new Dictionary<string, string>() { { "appKey","xxxxxxxxx"}, } } }, 至于在unity中上述sdk_key和appKey这些字符串是哪里来的,可以通过各个广告平台在Unity这边的XXXXNetworkConfig.cs脚本中获得。比如AppLovinNetworkConfig.cs的内容为: 在这里插入图片描述 可以很快定位关键字为:sdk_key 事实上Applovin的这个配置就是AndroidManifest中的(有些聚合SDK是把参数配置到AndroidManifest.xml中): <meta-data android:name="applovin.sdk.key" android:value="xxxxxx" /> 5.3激励视频预加载 不知道从哪里看过一眼,说MoPub的激励视频是自己处理了预加载的。但是笔者项目中发现第一次预加载成功,顺利播放视频后。后续调用MoPub.HasRewardedVideo(adUnitId)总是返回false 无奈只有自己处理,主要做了以下工作: 定义bool flag来指定当前是否正在预加载视频,来规避重复的预加载。即只能在flag==false的情况下调用MoPub.RequestRewardedVideo(adUnitId);进行视频预加载,且在调用的同时,设置flag=true 用户在成功播放视频的onclose回调中,再次预加载视频 预加载成功或者失败的回调中,设置flag为false |
上一篇:如何在腾讯云容器服务中获取客户端真实源IP?
下一篇:Google 访谈录——移动营销最佳实践:如何起步
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“Unity Android接入MoPub聚合广告SDK”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Unity Android接入MoPub聚合广告SDK的相关事宜。
关键词:Unity,Android接入MoPub聚合广