激励广告

激励广告

此章节将演示如何请求在APICloud环境下请求与展示激励广告

激励广告是用户通过观看短视频,获取应用内奖励(游戏的复活,任务奖励,游戏金币)等,具体场景由开发者定义。

请求并展示

pages/ad/reward_video.stml
/* 请求并自动播放激励广告(推荐) */
loadRewardVideo() {
	isRewardVideoAdAvaliable = false
	// 防止用户的重复点击导致广告多次加载播放
	api.showProgress({
		modal: true
	})
	var zjSdk = api.require("zjSdk")
	// String posId -> 广告位ID | String uid -> 用户ID | String extra -> 透传信息(默认不需要设置)
	// boolean volumeOn -> 是否开启视频声音,默认开启
	var params = { posId: ZJSdkPosId.rewardVideo, uid: ZJSdkPosId.uid, volumeOn: true }
	zjSdk.loadRewardVideo(params, function (ret) {
		api.hideProgress()
		switch (ret.event) {
			case ZJSdkEvent.EVENT_AD_ERROR: {
				api.toast({
					msg: "激励广告出错:" + ret.msg,
				})
				console.log(ZJSdkEvent.EVENT_AD_ERROR + ": " + ret.code + " | " + ret.msg)
				break
			}
			case ZJSdkEvent.EVENT_SHOW: {
				console.log("激励广告展示成功")
				break
			}
			case ZJSdkEvent.EVENT_CLICK: {
				console.log("激励广告点击")
				break
			}
			case ZJSdkEvent.EVENT_REWARD: {
				console.log("激励广告获取奖励")
				break
			}
			case ZJSdkEvent.EVENT_CLOSE: {
				console.log("激励广告关闭")
				break
			}
		}
	})
}

激励广告预加载

激励广告预加载可以提前加载激励广告,当用户点击的时候,可以快速展示激励广告,提升用户体验。

pages/ad/reward_video.stml
/* 激励广告预加载,需要配合 #showRewardVideo 方法播放 */
preloadRewardVideo() {
	api.showProgress({
		modal: true
	})
	var zjSdk = api.require("zjSdk")
	// String posId -> 广告位ID | String uid -> 用户ID | String extra -> 透传信息(默认不需要设置)
	// boolean volumeOn -> 是否开启视频声音,默认开启 | boolean isPreLoad -> 是否为预加载
	var params = { posId: ZJSdkPosId.rewardVideo, uid: ZJSdkEvent.uid, volumeOn: false, isPreLoad: true }
	zjSdk.loadRewardVideo(params, function (ret) {
		api.hideProgress()
		if (ret.event == ZJSdkEvent.EVENT_AD_ERROR) {
			api.toast({
				msg: "激励广告预加载失败:" + ret.msg,
			})
			console.log(ZJSdkEvent.EVENT_AD_ERROR + ": " + ret.code + " | " + ret.msg)
		} else if (ret.event == ZJSdkEvent.EVENT_LOAD_SUCCESS) {
			// 仅指定 isPreload==true 预加载请求时回调加载成功
			console.log("激励广告预加载成功")
			isRewardVideoAdAvaliable = true;
		}
	})
},
// 展示激励广告,预加载请求回调 zkSdkEvent.EVENT_LOAD_SUCCESS 后调用,否则返回错误
// 非预加载请求不需要调用,SDK会自动播放
showRewardVideo() {
	if (isRewardVideoAdAvaliable) {
		isRewardVideoAdAvaliable = false
		var zjSdk = api.require("zjSdk")
		zjSdk.showRewardVideo({}, function (ret) {
			switch (ret.event) {
				case ZJSdkEvent.EVENT_AD_ERROR: {
					api.toast({
						msg: "激励广告展示出错:" + ret.msg,
					})
					console.log(ZJSdkEvent.EVENT_AD_ERROR + ": " + ret.code + " | " + ret.msg)
					break
				}
				case ZJSdkEvent.EVENT_SHOW: {
					console.log("激励广告展示成功")
					break
				}
				case ZJSdkEvent.EVENT_CLICK: {
					console.log("激励广告点击")
					break
				}
				case ZJSdkEvent.EVENT_REWARD: {
					console.log("激励广告获取奖励")
					break
				}
				case ZJSdkEvent.EVENT_CLOSE: {
					console.log("激励广告关闭")
					break
				}
			}
		})
	} else {
		api.toast({
			msg: '请先预加载广告'
		})
	}
}