发布ivi kids应用时,我们遇到了一个问题,就是我们内部的广告SDK不符合Google的要求并且该应用可能已从商店中删除。因此,我们关闭了所有广告,这使年轻用户感到非常高兴,但市场部长期对财务业绩感到不满意。
解决这种情况的最合乎逻辑的方法是播放Google自己使用Google Ad Manager服务分发的广告。并使用IMA SDK(也是Google产品)进行操作。
在本文中,我将讨论我们如何在ivi和ivi 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"
ivi和ivi 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。