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

Unity Android接入MoPub聚合广告SDK

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

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跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
《韩国站内推广指南》
《韩国热销品预测》
《开店大全-日韩篇》
《开店大全-拉美篇》
《开店大全-欧洲篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠
联系顾问

平台顾问

平台顾问 平台顾问

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

icon icon

小程序

微信小程序

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

icon icon

返回顶部

Baidu
map