Unity Android接入MoPub聚合广告SDK-ESG跨境

Unity Android接入MoPub聚合广告SDK

来源网络
来源网络
2022-07-05
点赞icon 0
查看icon 738

Unity Android接入MoPub聚合广告SDKUnity Android接入MoPub聚合广告SDK这里只总结前端接入流程和注意事项,后台配置请参考官方详细文档mopub广告有以下类型Bananer(横幅)Interstitial(插屏)Rewarded Video(激励视频)Rewarded Playable......

Unity Android接入MoPub聚合广告SDK




Unity Android接入MoPub聚合广告SDK

这里只总结前端接入流程和注意事项,后台配置请参考官方详细文档

mopub广告有以下类型

Bananer(横幅)

Interstitial(插屏)

Rewarded Video(激励视频)

Rewarded Playable(互动式激励MRAID)

Native(原生)

1:下载mopubunitysdk

这里下载最新的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 UNITYIOS

    bannerAdUnits = new string[] { iOSBannerID };

    interstitialAdUnits = new string[] { iOSInterstitialID };

    rewardedVideoAdUnits = new string[] { iOSVideoID };

#elif UNITYANDROID

    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 UNITYIOS

    MoPub.RequestInterstitialAd (iOSInterstitialID);

    MoPub.RequestRewardedVideo (iOSVideoID);

#elif UNITYANDROID

    //MoPub.RequestInterstitialAd(AndroidInterstitialID);

    Debug.LogError(Prefetch 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.RewardVideoShowFail);

    rewardSuccess = false;

    var act = onRewardError;

    onRewardError = null;

    if (act != null)

    {

      act();

    }

  }

  public void OnRewardedVideoAdShowed(string adUnitId)

  {

    Debug.LogError(激励视频广告播放完);

    AnalyticsManager.LogEvent(AnalyticsEventID.RewardVideoShowSuccess);

    rewardSuccess = true;

  }

  public void OnRewardedVideoAdShowFailed(string adUnitId, string errorMsg)

  {

    Debug.LogError(激励视频播放失败 : + adUnitId + , msg: + errorMsg);

    AnalyticsManager.LogEvent(AnalyticsEventID.RewardVideoShowFail);

    rewardSuccess = false;

    var act = onRewardError;

    onRewardError = null;

    if (act != null)

    {

      act();

    }

  }

  public void OnRewardedVideoAdClicked(string scene)

  {

    AnalyticsManager.LogEvent(AnalyticsEventID.RewardVideoClick);

  }

  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 Dictionarystring, string(){

            { sdkkey,xxxxxxxxx},

          },

        },

        //IronSource

        new MoPub.SupportedNetwork.IronSource

        {

          NetworkConfiguration=new Dictionarystring, string()

          {

            { appKey,xxxxxxxxx},

          }

        }

        },

至于在unity中上述sdkkey和appKey这些字符串是哪里来的,可以通过各个广告平台在Unity这边的XXXXNetworkConfig.cs脚本中获得。比如AppLovinNetworkConfig.cs的内容为:

在这里插入图片描述

可以很快定位关键字为:sdkkey

事实上Applovin的这个配置就是AndroidManifest中的(有些聚合SDK是把参数配置到AndroidManifest.xml中):

metadata 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


文章推荐
TikTok+独立站 新玩法抢占红利,tiktok怎么挂独立站
Whatsapp无法更新怎么办,whatsapp messenger 无法更新
深圳国际快递代理公司敏感货电池货庄家
Wego使用Google Play Instant将购买转化率提高了27%,google play services官网


特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。

搜索 放大镜
韩国平台交流群
加入
韩国平台交流群
扫码进群
欧洲多平台交流群
加入
欧洲多平台交流群
扫码进群
官网询盘
加入
官网询盘
扫码进群
美国卖家交流群
加入
美国卖家交流群
扫码进群
ESG跨境专属福利分享群
加入
ESG跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
《TikTok综合运营手册》
《TikTok短视频运营手册》
《TikTok直播运营手册》
《TikTok全球趋势报告》
《韩国节日营销指南》
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠

立即登记,定期获得更多资讯

订阅
联系顾问

平台顾问

平台顾问 平台顾问

微信扫一扫
马上联系在线顾问

icon icon

小程序

微信小程序

ESG跨境小程序
手机入驻更便捷

icon icon

返回顶部