2

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 :

  1. no more events about break start/end or period start/end after some series of ads
  2. 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
  3. 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()
}
BejanCorneliu
  • 65
  • 3
  • 13

0 Answers0