在 application.js 中,为与 HbbTV 广播互动的 HbbTV 应用创建主类。此类与 broadcastAppManager 和 broadcastContainer 进行交互。如需查看类似类的示例,请参阅处理广播音频/视频对象。
修改此基本 HbbTV 应用以请求 IMA 直播,并响应广告插播事件。
初始化应用
按照教程处理广播 a/v 对象中的说明,在 application.js 中初始化应用类,设置 broadcastAppManager 和 broadcastContainer。之后,启动新的 VideoPlayer 和 AdManager 对象。
发出 IMA 流请求
在 HbbTVApp.onPlayStateChangeEvent() 方法中,发出流请求以响应应用切换到 PRESENTING_PLAYSTATE。此方法可让您的应用准备好在响应 AD_BREAK_EVENT_ANNOUNCE 事件时加载广告插播清单。
如果设备未正确发出广播容器 PlayStateChange 事件,请使用 setInterval() 函数检查播放状态变化:
setInterval(function() {
      if (!subscribedToStreamEvents &&
            this.broadcastContainer.playState == PRESENTING_PLAYSTATE) {
        subscribedToStreamEvents = true;
        this.broadcastContainer.addStreamEventListener(
            STREAM_EVENT_URL, 'eventItem', function(event) {
              this.onStreamEvent(event);
            }.bind(this));
        debugView.log('Subscribing to stream events');
        this.adManager.requestStream(NETWORK_CODE, CUSTOM_ASSET_KEY);
      }
      …
监听 HbbTV 流事件
创建 HbbTVApp.onStreamEvent() 方法以监听广告插播事件 adBreakAnnounce、adBreakStart 和 adBreakEnd:
处理 HbbTV 流事件
如需处理 HbbTV 流事件,请完成以下步骤:
如需加载广告插播清单以响应
adBreakAnnounce事件,请创建HbbTVApp.onAdBreakAnnounce()方法:如需在广告插播期间切换到广告流播放,请创建
HbbTVApp.onAdBreakStart()方法:如需返回内容广播,请创建
HbbTVApp.onAdBreakEnd()方法:
您现在可以在 HbbTV 应用中请求和展示 IMA SDK 广告插播时间。如需将您的应用与已完成的示例应用进行比较,请参阅 GitHub 上的 IMA HbbTV 示例。