激励广告

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

广告创建

激励视频广告组件默认是隐藏的,因此可以提前创建,以提前初始化组件。开发者可以在小程序页面的 onLoad 事件回调中创建广告实例,并在该页面的生命周期内重复调用该广告实例。

  1. let rewardedVideoAd = null
  2. Page({
  3. methods: {
  4. onLoad() {
  5. let rewardedVideoAd = qh.createRewardedVideoAd({
  6. adUnitId: 'xxxxx'
  7. })
  8. rewardedVideoAd.onLoad(()=>{
  9. console.log('视频加载成功')
  10. })
  11. rewardedVideoAd.onError((err)=>{
  12. if (err) {
  13. console.error(err.errMsg)
  14. }
  15. })
  16. rewardedVideoAd.onClose((res)=>{
  17. console.log('视频关闭')
  18. if (res) {
  19. console.log('是否完整播放:' + res.isEnded)
  20. console.log('播放时间:' + res.currentTime)
  21. console.log('广告总时间:' + res.duration)
  22. }
  23. })
  24. }
  25. }
  26. });

为避免滥用广告资源,目前每个用户每天可观看激励式视频广告的次数有限,建议展示广告按钮前先判断广告是否拉取成功。 ## 显示/隐藏 激励视频广告组件默认是隐藏的,在用户主动触发广告后,开发者需要调用 RewardedVideoAd.show() 进行显示。

  1. rewardedVideoAd.show()

只有在用户点击激励视频广告组件上的 关闭 按钮时,广告才会关闭。开发者不可控制激励视频广告组件的隐藏。 ## 广告拉取成功与失败 激励视频广告组件是自动拉取广告并进行更新的。在组件创建后会拉取一次广告,用户点击 关闭广告 后会去拉取下一条广告。 如果拉取成功,通过 RewardedVideoAd.onLoad() 注册的回调函数会执行,RewardedVideoAd.show() 返回的 Promise 也会是一个 resolved Promise。两者的回调函数中都没有参数传递。

  1. rewardedVideoAd.onLoad(() => {
  2. console.log('激励视频 广告加载成功')
  3. })
  4. rewardedVideoAd.show()
  5. .then(() => console.log('激励视频 广告显示'))

如果拉取失败,通过 RewardedVideoAd.onError() 注册的回调函数会执行,回调函数的参数是一个包含错误信息的对象。

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

RewardedVideoAd.show() 返回的 Promise 也会是一个 rejected Promise。

  1. rewardedVideoAd.show()
  2. .catch(err => console.log(err))

拉取失败,重新拉取

如果组件的某次自动拉取失败,那么之后调用的 show() 将会被 reject。此时可以调用 RewardedVideoAd.load() 手动重新拉取广告。

  1. rewardedVideoAd.show()
  2. .catch(() => {
  3. rewardedVideoAd.load()
  4. .then(() => rewardedVideoAd.show())
  5. .catch(err => {
  6. console.log('激励视频 广告显示失败')
  7. })
  8. })

如果组件的自动拉取是成功的,那么调用 load() 方法会直接返回一个 resolved Promise,而不会去拉取广告。

  1. rewardedVideoAd.load()
  2. .then(() => rewardedVideoAd.show())

监听用户关闭广告

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

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

参数名类型说明
isEndedboolean视频是否是在用户完整观看的情况下被关闭的
currentTimenumber视频已播放时长
durationnumber视频总时长

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

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

注意事项

多次调用 RewardedVideoAd.onLoad()、RewardedVideoAd.onError()、RewardedVideoAd.onClose() 等方法监听广告事件会产生多次事件回调,建议在创建广告后监听一次即可,或者先取消原有的监听事件再重新监听。

qh.createRewardedVideoAd

解释: 创建激励视频广告组件。调用该方法创建的激励视频广告是一个单例,创建新单例时,将会自动销毁上一个单例。

方法参数: Object object

object参数说明

参数名类型必填默认值说明
adUnitIdString-广告单元 id

返回值:RewardedVideoAd

示例

  • 在 js 文件中
  1. Page({
  2. methods: {
  3. showAd() {
  4. let RewardedVideoAd = qh.createRewardedVideoAd({
  5. adUnitId: 'xxxxx'
  6. })
  7. RewardedVideoAd.onLoad(()=>{
  8. console.log('视频加载成功')
  9. })
  10. RewardedVideoAd.onError((err)=>{
  11. if (err) {
  12. console.error(err.errMsg)
  13. }
  14. })
  15. RewardedVideoAd.onClose((res)=>{
  16. console.log('视频关闭')
  17. if (res) {
  18. console.log('是否完整播放:' + res.isEnded)
  19. console.log('播放时间:' + res.currentTime)
  20. console.log('广告总时间:' + res.duration)
  21. }
  22. })
  23. RewardedVideoAd.show().then(()=>{
  24. }).catch(()=>{
  25. RewardedVideoAd.load()
  26. .then(() => {
  27. RewardedVideoAd.show()
  28. })
  29. .catch(err => {
  30. // 销毁
  31. RewardedVideoAd.destroy()
  32. })
  33. })
  34. }
  35. }
  36. });

RewardedVideoAd.destroy

解释: 销毁激励视频广告实例, 这是唯一可以销毁实例的方法,用户点击关闭按钮,并不会销毁实例。

Promise RewardedVideoAd.load

解释: 加载激励视频广告。

返回值:Promise

解释: 激励视频广告加载数据的结果。

RewardedVideoAd.offClose(function callback)

解释: 取消监听用户点击 关闭广告 按钮的事件。

方法参数: function callback

解释:用户点击 关闭广告 按钮的事件的回调函数。

RewardedVideoAd.offError(function callback)

解释: 取消监听激励视频错误事件

方法参数: function callback

解释:激励视频错误事件的回调函数。

RewardedVideoAd.offLoad(function callback)

解释: 取消监听激励视频广告加载事件。

方法参数: function callback

解释:激励视频广告加载事件的回调函数。

RewardedVideoAd.onClose(function callback)

解释: 监听用户点击 关闭广告 按钮的事件

方法参数: function callback

解释:监听用户点击 关闭广告 按钮的事件。

Object回调参数说明需要判断回调参数是否存在

参数名类型说明
isEndedboolean视频是否是在用户完整观看的情况下被关闭的
currentTimenumber视频已播放时长
durationnumber视频总时长

RewardedVideoAd.onError(function callback)

解释: 监听激励视频错误事件。

方法参数: function callback

解释:激励视频错误事件的回调函数。

Object回调参数说明

参数名类型说明备注
errMsgstring错误信息
errCodenumber错误码

RewardedVideoAd.onLoad(function callback)

解释: 监听激励视频广告加载事件。

方法参数: function callback

解释:激励视频广告加载事件的回调函数。

Promise RewardedVideoAd.show

解释: 显示激励视频广告。激励视频广告将从屏幕下方推入。

返回值:Promise

解释: 激励视频广告显示操作的结果。