# 原生模板广告
原生模板广告是一种更灵活的广告形式,开发者可以选择不同的模板样式,使广告更好地融入游戏界面。与 Banner 广告相比,原生模板广告提供了更多的定制化选项和更丰富的展示形式。
开发者可以调用 tap.createCustomAd 创建原生模板广告组件。
# 一、创建原生模板广告
let customAd = tap.createCustomAd({
adUnitId: 'xxxx',
style: {
left: 10,
top: 76,
width: 300
}
})
原生模板广告组件在创建后会自动拉取广告数据并进行渲染。
# 二、显示/隐藏
原生模板广告组件默认是隐藏的,需要调用 CustomAd.show() 进行显示。
customAd.show()
当切换到没有广告的场景或页面时,调用 CustomAd.hide() 隐藏广告组件。
customAd.hide()
# 三、广告拉取成功与失败
原生模板广告组件在创建后会自动拉取广告数据。如果拉取成功,CustomAd.onLoad() 注册的回调函数会执行。
customAd.onLoad(() => {
console.log('原生模板广告加载成功')
})
如果拉取失败,通过 CustomAd.onError() 注册的回调函数会执行,回调函数的参数是一个包含错误信息的对象。
customAd.onError(err => {
console.log('原生模板广告加载失败', err)
})
CustomAd.show() 返回一个 Promise。
customAd.show()
.then(() => console.log('原生模板广告显示成功'))
.catch(err => console.log('原生模板广告显示失败', err))
# 四、广告尺寸
原生模板广告的尺寸由模板决定。开发者可以设置广告组件的位置和宽度,高度会根据模板自动计算。
let customAd = tap.createCustomAd({
adUnitId: 'xxxx',
style: {
left: 10,
top: 76,
width: 300 // 设置宽度,高度自动计算
}
})
当广告尺寸变化时,可以通过 CustomAd.onResize() 监听。
customAd.onResize(res => {
console.log('广告尺寸变化', res.width, res.height)
})
# 五、广告定时刷新
开发者可以在创建原生模板广告时传入 adIntervals 参数实现广告的定时刷新,adIntervals 参数为数字类型,单位为秒。
注意:自动刷新的间隔不能低于 30 秒,因此
adIntervals的参数值必须大于或等于 30。
let customAd = tap.createCustomAd({
adUnitId: 'xxxx',
adIntervals: 30, // 自动刷新频率不能小于30秒
style: {
left: 10,
top: 76,
width: 300
}
})
# 六、销毁广告
如果不再需要使用某个原生模板广告实例,可以调用 destroy() 方法销毁它,以释放资源。
customAd.destroy()
如果不对废弃的广告实例进行销毁,则会导致其上的事件监听器无法释放。当没有释放的广告实例积累过多时,将会产生性能问题。
# 七、完整示例
// 创建原生模板广告实例
const customAd = tap.createCustomAd({
adUnitId: 'your-ad-unit-id',
adIntervals: 60, // 每60秒刷新一次
style: {
left: 10,
top: 100,
width: 300
}
})
// 监听广告加载成功
customAd.onLoad(() => {
console.log('原生模板广告加载成功')
// 加载成功后显示广告
customAd.show()
})
// 监听广告加载失败
customAd.onError(err => {
console.log('原生模板广告加载失败', err)
})
// 监听广告尺寸变化
customAd.onResize(res => {
console.log('广告尺寸:', res.width, 'x', res.height)
})
// 在场景切换时隐藏广告
function onSceneChange() {
customAd.hide()
}
// 在返回主界面时显示广告
function onBackToMain() {
customAd.show()
}
// 在游戏结束时销毁广告
function onGameEnd() {
customAd.destroy()
}
