跳到主要内容

激励视频广告

激励视频广告组件是由客户端原生的图片、文本、视频控件组成的,层级最高,会覆盖在上屏 Canvas 上。

开发者可以调用 mgtv.createRewardedVideoAd 创建激励视频广告组件, 激励视频广告组件默认是隐藏的,因此可以提前创建,初始化组件。

const rewardedVideoAd = mgtv.createRewardedVideoAd({ adUnitId: 'xxxx' })

为避免滥用广告资源,目前每个用户每天可观看激励式视频广告的次数有限。

广告预加载

激励视频广告组件支持预加载广告,开发者可以调用 rewardedVideoAd.preload() 预加载广告,具体兼容请查阅rewardedVideoAd.preload()

rewardedVideoAd.preload()

广告加载

激励视频广告组件目前不支持自动加载广告,需要手动rewardedVideoAd.load(),成功回调 onLoad,失败回调 onError。

如果加载成功,在onLoad回调函数里调用 rewardedVideoAd.show() 展示广告。

rewardedVideoAd.onLoad(() => {
console.log('激励视频 广告加载成功')
rewardedVideoAd.show()
})

如果加载失败,在onError回调函数返回一个包含错误信息的对象。

rewardedVideoAd.onError(err => {
console.log(err)
})

显示/隐藏

激励视频广告组件默认是隐藏的,只有在加载成功以后,调用 rewardedVideoAd.show() 才能进行显示。

rewardedVideoAd.show()

只有在用户点击激励视频广告组件上的 关闭广告 按钮时,广告才会关闭。开发者不可控制激励视频广告组件的隐藏。

监听用户关闭广告

只有在用户点击激励视频广告组件上的 关闭广告 按钮时,广告才会关闭。这个事件可以通过 rewardedVideoAd.onClose() 监听。

rewardedVideoAd.onClose() 的回调函数会传入一个参数 resres.isEnded 描述广告被关闭时的状态。

属性类型说明
isEndedboolean视频是否是在用户完整观看的情况下被关闭的,true 表示用户是在视频播放完以后关闭的视频,false 表示用户在视频播放过程中关闭了视频

开发者需要根据 res.isEnded 判断视频是否播放结束、可以向用户下发奖励。

rewardedVideoAd.onClose(res => {
// 用户点击了【关闭广告】按钮
if (res && res.isEnded) {
// 正常播放结束,可以下发游戏奖励
} else {
// 播放中途退出,不下发游戏奖励
}
})

销毁激励视频广告

需要调用 rewardedVideoAd.destroy()销毁激励视频广告组件。 创建新的激励视频广告组件之前,需要先调用 rewardedVideoAd.destroy()销毁之前创建的激励视频广告组件,否则会出现广告加载失败的情况。

rewardedVideoAd.destroy()

添加广告加载提示

为了提升用户体验,防止用户频繁点击播放视频按钮,导致激励视频偶尔出现异常显示的现象,需要开发者在点击播放视频按钮时,做好频次限制,及添加"正在加载激励视频中..."或者其它形式的提示,在广告显示出来以后或者广告加载失败时进行隐藏,且做好3s的超时处理,例如:

乘风回响

示例代码参照

    //创建激励视频广告
createVideoAd() {
if (!this.videoAdUnitId) {
console.log('视频广告参数没有配置');
return;
}
try {
console.log("创建MGTV激励视频广告");
this.videoAd = window['mgtv'].createRewardedVideoAd({
adUnitId: this.videoAdUnitId
});
this.videoAd.load();
this.videoAd.onLoad(() => {
this.videoAd.show();
});
this.videoAd.onError(err => {
console.log('onError:' + JSON.stringify(err));
this.showToast('暂时没有广告了');
this.videoAdCallBack && this.videoAdCallBack(1);
});
this.videoAd.onClose((res) => {
// 用户点击了【关闭广告】按钮
console.log('==> mgtvRewardVideoAd onClose', res);
if ( res && res.isEnded) {
//看完广告,给奖励
this.videoAdCallBack && this.videoAdCallBack(0);
this.videoAdCallBack = null;
} else {
// 没看完,不给奖励
this.videoAdCallBack && this.videoAdCallBack(1);
this.videoAdCallBack = null;
console.log('广告没看完');
}
});
} catch (error) {
this.videoAdCallBack && this.videoAdCallBack(1);
console.log('mgtvRewardVideoAd error', error);
}
}

//显示激励视频广告
showVideoAd(callback: Function) {
this.videoAdCallBack = callback;
if (this.videoAd != null) {
this.videoAd.load();
} else {
console.log('创建激励视频广告');
this.createVideoAd();
}
}