【抖音小程序】抖音小程序避免onClose重复回调 解决广告重复回调

603 阅读1分钟

在小程序开发中,如果一个页面有多个激励视频,这个时候如果多次展示的时候会遇到多次重复回调,怎么解决呢?

废话不多说,上代码

 

以下为全局脚本中:

onLaunch: function() {
	if (this.globalData.videoAd) {
		// onClose只监听一次
		this.globalData.videoAd.onClose(res => {
			if (res.isEnded) {
				// 实现子子页面的closeAdFunction与cancelAdFunction方法
				this.globalData.currentPage.closeAdFunction()
			} else {
				this.globalData.currentPage.cancelAdFunction()
			}
		})
	}
},
playAd: function() {
	let videoAd = this.globalData.videoAd
	// 照抄的官方例子
	videoAd
		.show()
		.then(() => {
			console.log("广告显示成功");
		})
		.catch((err) => {
			console.log("广告组件出现问题", err);
			// 可以手动加载一次
			videoAd.load().then(() => {
				console.log("手动加载成功");
				// 加载成功后需要再显示广告
				return videoAd.show();
			});
		});
},
globalData: {
	videoAd: tt.createRewardedVideoAd({
		adUnitId: '广告ID'
	}),
	currentPage: Object,
}

页面中的脚本

 
onLoad(){//定义页面
    app.globalData.currentPage = this
}
 
 
//显示广告
app.playAd()
 
 
//广告监听
closeAdFunction() {
	console.log('播放结束')
},
cancelAdFunction() {
	console.log('用户取消')
},