0 0 0

QQ微信小程序激励视频广告onClose多次回调解决方案

admin
2月前 153

在 QQ 和微信小程序中,激励视频广告的 onClose 回调可能会多次触发的问题,通常是由于广告加载、播放完成或用户关闭广告引起的。这种情况下,可以通过一些技巧和状态管理来避免多次回调的影响,例如:

解决方案一:使用标志位控制回调
通过设置一个标志位来控制只处理第一次回调,忽略后续的回调事件。

let rewardedVideoAd = qq.createRewardedVideoAd({ adUnitId: 'your-ad-unit-id' });
let rewardedAdClosed = false; // 添加一个标志位

rewardedVideoAd.onClose((res) => {
  if (!rewardedAdClosed) {
    rewardedAdClosed = true;
    // 处理广告关闭事件
    if (res && res.isEnded) {
      // 用户完成观看,发放奖励
    } else {
      // 用户未完整观看,不发放奖励
    }
  }
});

rewardedVideoAd.load().then(() => {
  rewardedVideoAd.show().catch((err) => {
    rewardedAdClosed = true; // 广告展示失败也标记为关闭
    console.error('激励视频广告展示失败', err);
  });
});

解决方案二:延迟处理
在 onClose 回调中增加一个延迟处理机制,确保只处理一次回调。

let rewardedVideoAd = qq.createRewardedVideoAd({ adUnitId: 'your-ad-unit-id' });
let timeoutId = null; // 增加一个延时处理的 ID

rewardedVideoAd.onClose((res) => {
  if (timeoutId) return; // 如果已经设置了延时处理,则直接返回

  timeoutId = setTimeout(() => {
    timeoutId = null; // 清除延时处理 ID
    // 处理广告关闭事件
    if (res && res.isEnded) {
      // 用户完成观看,发放奖励
    } else {
      // 用户未完整观看,不发放奖励
    }
  }, 1000); // 延迟一定时间处理,例如 1 秒
});

rewardedVideoAd.load().then(() => {
  rewardedVideoAd.show().catch((err) => {
    console.error('激励视频广告展示失败', err);
  });
});

解决方案三:状态管理
使用状态管理来记录广告是否已经完成或用户已关闭,以避免重复处理。

let rewardedVideoAd = qq.createRewardedVideoAd({ adUnitId: 'your-ad-unit-id' });
let adState = 'loading'; // loading, showing, closed

rewardedVideoAd.onClose((res) => {
  if (adState === 'closed') return; // 如果广告已经关闭,直接返回

  adState = 'closed';
  // 处理广告关闭事件
  if (res && res.isEnded) {
    // 用户完成观看,发放奖励
  } else {
    // 用户未完整观看,不发放奖励
  }
});

rewardedVideoAd.load().then(() => {
  adState = 'loaded';
  rewardedVideoAd.show().then(() => {
    adState = 'showing';
  }).catch((err) => {
    adState = 'closed';
    console.error('激励视频广告展示失败', err);
  });
});

注意事项
1、激励视频广告的 onClose 回调可能因平台实现不同而触发多次,需要根据具体平台和 SDK 版本适配处理。
2、根据实际情况选择合适的解决方案,确保在用户观看完毕后才发放奖励,避免重复发放或漏发奖励。

通过上述方案,你可以有效地解决 QQ 和微信小程序中激励视频广告 onClose 多次回调的问题,确保用户体验和奖励的正确发放。

最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!