I am working to implement DAI ads in my app using IMA SDK. The problem is that not always i receive onAdEvent() events about: AD_BREAK_STARTED, AD_PERIOD_STARTED, AD_BREAK_ENDED, AD_PERIOD_ENDED
Just for the first 4-5 series of DAI ads. After that i receive just o few of them and after that none. My DAI ads ar showing correcly all the time : ads with the overlay over the player ( "more" and "Ad 1 of x..."
The problems :
- no more events about break start/end or period start/end after some series of ads
- the player does not know after those 4-5 series if to show or not the player controls because tapping the player does not trigger controls
- the overlay is somehow present over the player after the ad series end even if it is not visible. I tested by adding some padding left on the overlay viewgroup to be able to tap both the player screen and overlay
My code :
fun init() {
mPlayer.getInterface().setSampleVideoPlayerCallback(VideoStreamCallback(this))
val mSettings = mSdkFactory.createImaSdkSettings().apply {
playerType = mContext.getString(R.string.player_name)
language = "ro"
}
val mDisplayContainer = ImaSdkFactory.createStreamDisplayContainer(mPlayerAdUiContainer, DaiListener(mPlayer, this, mPlayerInterface))
mAdsLoader = mSdkFactory.createAdsLoader(mContext, mSettings, mDisplayContainer).apply {
addAdErrorListener(this@DaiManager)
addAdsLoadedListener(this@DaiManager)
requestStream(buildStreamRequest())
}
}
private fun buildStreamRequest(): StreamRequest? {
return mPlayerInput.let {
mSdkFactory.createLiveStreamRequest(it.mDaiData.mTag, null).apply {
format = it.mDaiData.mFormat
}
}?:run {
null
}
}
override fun onAdsManagerLoaded(event: AdsManagerLoadedEvent) {
mStreamManager = event.streamManager.apply {
addAdErrorListener(this@DaiManagerBase)
addAdEventListener(this@DaiManagerBase)
init()
}
}
override fun onAdEvent(event: AdEvent) {
if (event.type == AdEvent.AdEventType.AD_BREAK_ENDED || event.type ==
AdEvent.AdEventType.AD_PERIOD_ENDED || event.type == AdEvent.AdEventType.AD_BREAK_STARTED ||
event.type == AdEvent.AdEventType.AD_PERIOD_STARTED)
{
Log.d("onAdEventTest","event : "+event.type+"/"+System.currentTimeMillis())
}
}
override fun onAdBreakStarted() {
mInterface.disableControls()
}
override fun onAdBreakEnded() {
mInterface.enableControls()
}