在Android应用程序中实现IMA SDK

假设有一天您决定为儿童创建一个应用程序并尝试从中赚钱。由于广告是最简单的获利方法之一,因此您有一个显而易见的想法,将一个广告SDK添加到应用程序中,然后仅计算收入。如果该应用程序是针对成人受众的,则可能是这种情况。如果打算供未成年人使用,则包括管理应用程序商店的各种立法机制。在Google Play上



发布ivi kids应用时,我们遇到了一个问题,就是我们内部的广告SDK不符合Google的要求并且该应用可能已从商店中删除。因此,我们关闭了所有广告,这使年轻用户感到非常高兴,但市场部长期对财务业绩感到不满意。



解决这种情况的最合乎逻辑的方法是播放Google自己使用Google Ad Manager服务分发的广告并使用IMA SDK(也是Google产品)进行操作。



在本文中,我将讨论我们如何在iviivi kids应用程序中实现IMA SDK以及遇到的限制。



芯片IMA SDK



我不会描述IMA SDK的所有功能和结构,因为无论如何,官方文档都可以对它们进行更多介绍



IMA SDK的主要功能是什么?为什么它适合我们? IMA SDK可以播放VAST视频广告。这种格式的一种可能性是创建嵌套的广告包装程序,并且包装程序的数量可以正式为无限。也就是说,要获得真实的视频,您需要遍历链中的所有包装器。







如果您仅使用setAdTagUrl(String url)方法将指向第一个VAST文件的链接插入其中,则IMA SDK可以单独运行此链



val adsRequest = ImaSdkFactory.getInstance().createAdsRequest()
adsRequest.adTagUrl = advUrl


通过使用此方法,大大简化了开发人员的任务。但是有时(包括我们在内)应用程序开发人员希望收集自己的广告统计信息,这些统计信息包含在VAST文件本身中。不能多次从广告服务器请求这些文件,因为广告服务器可以向同一请求发送两个不同的响应(这是正常现象,广告应不断变化)。在这种情况下,开发人员需要用笔收集所有VAST,从那里提取收集统计信息所需的数据,并在其基础上生成通用的VAST,可以使用setAdsResponce(字符串广大)方法将其输入IMA SDK



val adsResponce = “<VAST>..</VAST>” //xml,   VAST
adsRequest.adsResponse = adsResponce


IMA SDK的另一个有用功能是可以使用应用程序的内部播放器播放广告。为此,您可以实现VideoAdPlayer接口并在播放器中实现其方法:



public interface VideoAdPlayer extends AdProgressProvider, VolumeProvider {
   void loadAd(AdMediaInfo var1, AdPodInfo var2);

   void playAd(AdMediaInfo var1);

   void pauseAd(AdMediaInfo var1);

   void stopAd(AdMediaInfo var1);

   void release();

   void addCallback(VideoAdPlayer.VideoAdPlayerCallback var1);

   void removeCallback(VideoAdPlayer.VideoAdPlayerCallback var1);
}


但是,即使该应用程序没有自己的视频播放器或由于某种原因无法使用,IMA SDK也会基于ExoPlayer提供其自己的播放器



val adUiContainer: ViewGroup = view
val videoAdPlayer =  ImaSdkFactory.createSdkOwnedPlayer(context, adUiContainer)


IMA SDK限制



不幸的是,IMA SDK的用户界面令人遗憾。请做好广告播放器的外观准备:







不能从IMA SDK更改广告屏幕上的任何控件。您只能更改他们的语言:



val imaSdkSettings = ImaSdkFactory.getInstance().createImaSdkSettings()
imaSdkSettings.language = "ru"








iviivi kids存在并且在单个代码库中受支持 的事实使我们的情况更加恶化。这意味着,借助构建脚本,可以在必要的时候从一个代码开始,将具有不同特征(图标,行,代码段)的不同应用程序组合在一起。这种用于播放广告的统一代码库使用专有引擎,该引擎是为公司赚钱的行之有效的工具。使用IMA SDK实施后,由于应用程序使用了多种广告格式,而不仅仅是VAST,因此无法简单地丢弃此代码。ivi



广告界面看起来与IMA SDK界面完全不同,因此无法对其进行调整:







因此,最明显的决定是离开我们的广告引擎(NSD),同时实施IMA SDK,以便当包含指向Google服务器链接的广告到达时,它将使用IMA;对于所有其他广告,NSD也可以使用以下格式的广告VAST并贯穿整个包装器链,但不符合Google家庭政策的标准。





当前,来自Google的广告和来自ivi应用程序中其他来源的广告以不同的方式显示。在面向儿童的ivi儿童应用中,仅定位了来自Google的广告,因此仅使用IMA SDK展示了那里的视频。



结果



IMA SDK是用于展示视频广告的简单便捷的工具。如果您准备好不依赖广告播放器的用户界面这一事实,那么IMA SDK非常适合您。如果您需要为带有广告的儿童通过Android应用获利,那么最简单的方法是使用Google的本机工具-IMA SDK。






All Articles