# 插屏广告
插屏广告是一种在游戏自然间隙或过渡点展示的全屏或半屏广告。与激励视频广告不同,插屏广告不需要用户主动选择观看,通常在关卡切换、游戏暂停等场景出现。
开发者可以调用 tap.createInterstitialAd 创建插屏广告组件。
# 一、创建插屏广告
let interstitialAd = tap.createInterstitialAd({
adUnitId: 'xxxx'
})
插屏广告组件在创建后会自动拉取广告素材。
# 二、显示/隐藏
插屏广告组件默认是隐藏的,需要调用 InterstitialAd.show() 进行显示。
interstitialAd.show()
用户可以主动关闭插屏广告。开发者不能主动隐藏插屏广告。
# 三、广告拉取成功与失败
插屏广告组件在创建后会自动拉取广告素材。如果拉取成功,InterstitialAd.onLoad() 注册的回调函数会执行。
interstitialAd.onLoad(() => {
console.log('插屏广告加载成功')
})
如果拉取失败,通过 InterstitialAd.onError() 注册的回调函数会执行,回调函数的参数是一个包含错误信息的对象。
interstitialAd.onError(err => {
console.log('插屏广告加载失败', err)
})
InterstitialAd.show() 返回一个 Promise,如果调用时广告素材尚未加载完成或加载失败,则会返回 rejected Promise。
interstitialAd.show()
.then(() => console.log('插屏广告显示成功'))
.catch(err => console.log('插屏广告显示失败', err))
# 四、监听用户关闭广告
用户关闭插屏广告后,开发者可以通过 InterstitialAd.onClose() 来监听这个事件。
interstitialAd.onClose(() => {
console.log('用户关闭了插屏广告')
// 继续游戏流程
})
# 五、重新加载广告
在用户关闭广告后,广告素材会被清空。并自动加载下一次的广告素材。
# 六、销毁广告
如果不再需要使用某个插屏广告实例,可以调用 destroy() 方法销毁它,以释放资源。
interstitialAd.destroy()
# 七、最佳实践
# 选择合适的展示时机
插屏广告应在自然的游戏间隙展示,避免打断用户的游戏体验:
- ✅ 关卡结束时
- ✅ 游戏暂停/恢复时
- ✅ 页面/场景切换时
- ❌ 游戏进行中突然弹出
- ❌ 用户正在操作时
# 控制展示频率
过于频繁的插屏广告会影响用户体验,建议:
- 设置展示间隔(如每 3 分钟最多展示 1 次)
- 限制单次游戏会话中的最大展示次数
# 完整示例
// 创建插屏广告实例
const interstitialAd = tap.createInterstitialAd({
adUnitId: 'your-ad-unit-id'
})
// 记录上次展示时间
let lastShowTime = 0
const MIN_INTERVAL = 180000 // 3分钟
// 监听广告加载成功
interstitialAd.onLoad(() => {
console.log('插屏广告加载成功')
})
// 监听广告加载失败
interstitialAd.onError(err => {
console.log('插屏广告加载失败', err)
})
// 监听广告关闭
interstitialAd.onClose(() => {
console.log('用户关闭了插屏广告')
// 继续游戏
resumeGame()
})
// 展示插屏广告的函数(带频率控制)
function showInterstitialAd() {
const now = Date.now()
// 检查是否满足展示间隔
if (now - lastShowTime < MIN_INTERVAL) {
console.log('展示间隔未到,跳过本次广告')
return
}
interstitialAd.show()
.then(() => {
lastShowTime = now
console.log('插屏广告展示成功')
})
.catch(err => {
console.log('插屏广告展示失败', err)
// 展示失败,继续游戏流程
resumeGame()
})
}
// 在关卡结束时展示插屏广告
function onLevelComplete() {
// 先暂停游戏
pauseGame()
// 展示插屏广告
showInterstitialAd()
}
function pauseGame() {
// 暂停游戏逻辑
}
function resumeGame() {
// 恢复游戏逻辑
}
