# 激励视频广告
激励视频广告是一种全屏视频广告,用户可以选择观看完整的广告以换取应用内奖励。这种广告形式在游戏中非常流行,通常用于给玩家提供额外生命、虚拟货币或其他游戏内奖励。
开发者可以调用 tap.createRewardedVideoAd 创建激励视频广告组件。
# 一、创建激励视频广告
激励视频广告组件默认是隐藏的,开发者需要调用 RewardedVideoAd.show() 进行显示。
let rewardedVideoAd = tap.createRewardedVideoAd({
adUnitId: 'xxxx'
})
rewardedVideoAd.show()
激励视频广告组件是一个单例组件,即整个小游戏生命周期内只会存在一个激励视频广告组件。通过多次调用 tap.createRewardedVideoAd 创建的激励视频广告组件会返回同一个实例。
# 二、显示/隐藏
激励视频广告组件需要调用 RewardedVideoAd.show() 进行显示。
rewardedVideoAd.show()
只有在用户点击关闭按钮或视频播放完毕时,广告才会关闭。开发者不能主动隐藏或关闭激励视频广告。
# 三、广告拉取成功与失败
激励视频广告组件在创建后会自动拉取广告素材,如果拉取成功,RewardedVideoAd.onLoad() 注册的回调函数会执行。
rewardedVideoAd.onLoad(() => {
console.log('激励视频广告加载成功')
})
如果拉取失败,通过 RewardedVideoAd.onError() 注册的回调函数会执行,回调函数的参数是一个包含错误信息的对象。
rewardedVideoAd.onError(err => {
console.log(err)
})
RewardedVideoAd.show() 返回一个 Promise,如果调用时广告素材尚未加载完成,则会返回 rejected Promise。建议在调用 show 之前先判断广告是否加载完成。
rewardedVideoAd.show()
.then(() => console.log('激励视频广告显示成功'))
.catch(err => {
console.log('激励视频广告显示失败', err)
// 可以尝试重新加载
rewardedVideoAd.load()
.then(() => rewardedVideoAd.show())
})
# 四、监听用户关闭广告
用户可以在视频播放途中或播放完毕后关闭激励视频广告。开发者需要通过 RewardedVideoAd.onClose() 来监听用户关闭广告的行为,并根据 isEnded 参数来判断用户是否完整观看了视频。
rewardedVideoAd.onClose(res => {
if (res && res.isEnded) {
// 用户完整观看了视频,可以发放奖励
console.log('用户完整观看了视频')
} else {
// 用户中途关闭了视频,不发放奖励
console.log('用户中途关闭了视频')
}
})
重要:只有当
isEnded为true时,才应该发放奖励给用户。
# 五、重新加载广告
在用户观看完或关闭广告后,广告素材会被清空,并自动加载下一份。
# 六、完整示例
// 创建激励视频广告实例
const rewardedVideoAd = tap.createRewardedVideoAd({
adUnitId: 'your-ad-unit-id'
})
// 监听广告加载成功
rewardedVideoAd.onLoad(() => {
console.log('激励视频广告加载成功,可以播放')
})
// 监听广告加载失败
rewardedVideoAd.onError(err => {
console.log('激励视频广告加载失败', err)
})
// 监听广告关闭
rewardedVideoAd.onClose(res => {
if (res && res.isEnded) {
// 用户完整观看视频,发放奖励
giveRewardToUser()
} else {
// 用户提前关闭,提示未获得奖励
tap.showToast({
title: '观看完整视频才能获得奖励哦',
icon: 'none'
})
}
})
// 播放激励视频广告的函数
function showRewardedVideoAd() {
rewardedVideoAd.show()
.catch(err => {
// 广告未加载完成,尝试加载后再播放
rewardedVideoAd.load()
.then(() => rewardedVideoAd.show())
.catch(err => {
tap.showToast({
title: '暂无广告,请稍后再试',
icon: 'none'
})
})
})
}
// 发放奖励的函数
function giveRewardToUser() {
// 这里实现发放奖励的逻辑
tap.showToast({
title: '恭喜获得奖励!',
icon: 'success'
})
}
