可供选择的第三方广告商
- 腾讯优量汇
- 字节跳动穿山甲
- 快手广告(无上架要求,但需提供软著)
- 360广告联盟
- Sigmob广告
- uni-ad广告联盟
如果选择开通安卓平台,除了快手、Sigmob广告,其他广告平台均要求在主流的应用商店上线。大部分应用商店会要求著作权证书。以下应用市场暂无软著要求:
酷安市场:没有著作权要求,审核较慢。(只能用于渠道SDK广告中优量汇审核)
Google Play:不要求著作权,开发者账号收费25美元 (2020年7月2日以后穿山甲平台已不再支持该应用市场。只能用于渠道SDK广告优量汇审核。如果是强依赖聚合激励视频的网赚类应用,离不开穿山甲,所以不适合这种方式)。
豌豆荚(阿里应用分发平台):不要求著作权,但应用不涉及金融、贷款、医疗等特殊行业内容,可以暂时使用开发者声明代替。
安智:不需要著作权,但打包了推广的上架服务,费用为5000元(某些特定行业分类无法上架,需沟通)。
vivo 应用商店:需根据app类型来确定审核所需要的资质。不在表内的app可尝试无著作权提交。
1、开通广告
- 操作平台后台:首先需要在广告平台的后台进行开通操作。对于App平台、H5平台及微信小程序平台,需要在这些平台的管理后台进行相应的操作。
- 其他小程序平台:在其他小程序平台上,例如支付宝小程序、百度小程序等,则需要在各自的小程序管理后台操作。
2、编写代码
-
广告编写示例:在页面的合适位置编写代码,放置广告组件,并配上广告位id
<template>
<view class="content">
<view class="ad-view">
<ad adpid="1111111111" @load="onload" @close="onclose" @error="onerror"></ad>
</view>
</view>
</template>
-
错误处理示例:在脚本部分添加事件处理函数,例如
onload
、onclose
和onerror
,以便处理广告的加载、关闭和错误事件
onload(e) {
console.log("onload");
},
onclose(e) {
console.log("onclose: " + e.detail);
},
onerror(e) {
console.log("onerror: " + e.detail.errCode + " message:: " + e.detail.errMsg);
}
3、封装广告功能
- 创建Utils.js文件:为了减少重复代码,可以将插屏广告和激励广告的功能封装到一个独立的JS文件中,例如命名为
Utils.js
。在该文件中定义两个对象interstitial
和rewarded
,分别用于处理插屏广告和激励广告的逻辑 - 插屏广告封装:
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);
});
}
}
};
- 激励广告封装:
var videoAd = null;
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('激励视频 广告显示失败');
});
});
}
}
};
- 导出封装对象:将封装好的对象导出,以供其他页面调用:
module.exports = {
interstitial,
rewarded
};
4、导入并使用封装的广告功能
- 导入Utils.js:在需要调用广告的页面导入之前封装好的
Utils.js
文件,注意文件的相对路径不要写错
import Utils from '../../utils/Utils.js';
- 加载并展示广告:在页面的生命周期函数或适当的时机调用封装好的广告方法。例如在
onLoad
方法中加载插屏广告和激励广告,并在需要显示的时候调用show
方法
onLoad() {
// 加载插屏广告
Utils.interstitial.load('你的广告id');
// 加载激励广告
Utils.rewarded.load('adunit-85e98527c651f48f', () => {
// 这里写你的任意奖励事件
});
},
someFunctionToShowAds() {
// 展示插屏广告
Utils.interstitial.show();
// 展示激励广告
Utils.rewarded.show();
}