挺久没更新了,今天给大家写一个uniapp简单封装的激励广告和插屏广告的教程,主要的解决的问题就是如果一个小程序页面多且需要调用的广告也比较多,这样会导致出现许多的重复代码,而且使得页面js文件看起来很繁琐,如果可以将其封装,那么只需要使用一行代码就可以实现调用了。
首先新建一个js文件,这里为演示方便取名为Utils.js,最好是在根目录新建一个文件夹然后将他放进去,方便之后的调用。
插屏广告由于没有其他的事件需要调用,相当可以独立运行,所以写起来很方便,所以在这个js文件中写起来其实和页面调用差不多,只是我们将广告id以一个参数的形式传进去,这样之后就可以直接调用了,代码如下:
var interstitialAd = null;
let interstitial = {
load(id) {
if (uni.createInterstitialAd) {
interstitialAd = uni.createInterstitialAd({
adUnitId: id
})
interstitialAd.onLoad(() => {
console.log('插屏广告加载中')
})
interstitialAd.onError((err) => {
console.log('加载错误', err)
})
interstitialAd.onClose((res) => {
console.log('插屏广告关闭', res)
})
}
},
show() {
if (interstitialAd) {
interstitialAd.show().catch((err) => {
console.error(err)
})
}
}
}
这里可以看出interstitial对象有两个函数,一个是加载函数,一个是显示函数,然后我们将他们导出就可以了,由于我们还需要将激励广告也封装进去,那么稍后我们再一起导出。
激励广告这里我们需要传递两个参数,一个是广告id,一个是激励广告完成后的奖励事件,代码如下:
let rewarded = {
load(id, e) {
if (uni.createRewardedVideoAd) {
videoAd = uni.createRewardedVideoAd({
adUnitId: id
})
videoAd.onError(err => {})
videoAd.onClose((status) => {
if (status && status.isEnded || status === undefined) {
e()
} else {}
})
}
},
show() {
if (videoAd) {
videoAd.show().catch(() => {
// 失败重试
videoAd.load()
.then(() => videoAd.show())
.catch(err => {
console.log('激励视频 广告显示失败')
})
})
}
}
}
其中e就是传入的奖励事件,如何使用待会给大家讲解,最后我们将这两个封装好的对象导出就可以了,代码如下:
module.exports = {
interstitial,
rewarded
};
这样Utils.js文件就已经完成了,如果你还需要封装其他的对象也可以按照上诉方法进行操作。
首先在你需要调用广告的页面导入这个js文件,代码如下:
import Utils from '../../utils/Utils.js';
注意文件的相对路径不要写错,不过你写错ide也会给你报错的。
插屏广告
在onLoad里面加载插屏广告,代码如下:
Utils.interstitial.load('你的广告id')
展示插屏广告,代码如下:
Utils.interstitial.show()
激励广告
在onLoad里面加载激励广告,代码如下:
Utils.rewarded.load('adunit-85e98527c651f48f', () => {
//这里写你的任意奖励事件
});
展示激励视频广告,代码如下:
Utils.rewarded.show();
以上就是本章的全部内容,更多优质内容请关注公众号:阳光艺创站。
原创文章,作者:小创果,如若转载,请注明出处:https://www.i4qq.com/jpjc/fzjlgghcpgg.html
请问一下这个如果小程序还没有开通流量主的话,怎么测试这些广告是否有效呀(就是开发的时候想预览效果)
@小懵
qq小程序开发工具可以演示,微信的好像不行。QQ小程序开发工具就是你不写id,只要把广告逻辑写上,都会进行展示,这样调试很方便,其他的我就没试过了。一般都是有广告后再接入的。
老哥,这个有演示文件下载吗?小白有点看不懂。。。
插屏广告闪退怎么解决? 我看到你这里也是一样。
@小阿水
代码正确应该不会出现这样的问题吧
不错
这个好 牛逼 最好来个案例Demo
字母