快应用广告开发、各大手机平台测试id、错误码汇总
快应用广告植入
入门参考:https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=3678
郑重声明:快应用调试器预览版不提供广告展示
方法:可以在合适的手机快应用调试器上去找不是预览版的版本进行广告调试
一、广告的分类
1.1 分类:
- banner广告
- 插屏广告
- 原生广告(部分厂家支持原生渲染2.0,版本兼容问题看版本兼容)
- 激励视频广告
1.2 版本兼容
厂商 | 最低支持引擎版本 | 说明 |
---|---|---|
vivo | 1052+ |
激励视频广告1061+ vivo 流量联盟平台
|
OPPO | 1044+ |
激励视频广告1060+ OPPO 营销平台
|
华为 | 1075+ | 华为广告接入服务 |
小米 | 1062+ | 暂不支持原生广告 小米移动广告联盟 |
友情提醒:看到的不一定是真的~(小米其实是可以支持原生广告)
二、各种广告的使用方法
基础方法参考各大官网以及快应用平台官网,下文主要阐述的是细节!细节
2.1 banner广告
话不多说我们直接上例子,例子都来自官网
2.1.1 完整代码
代码实例
<template><div class="wrap"><text class="btn" οnclick="showAd">点击显示广告</div></div>
</template>
<script>import device from "@system.device";export default {data() {return {adUnitId: "",ad: null};},onInit() {this.switchAdUnitIdByBrand();},async switchAdUnitIdByBrand() {// 这个方法的作用是适配不同厂商的adUnitIdconst res = await device.getInfo();const brand = res.data.brand;switch (brand) {case "vivo":this.adUnitId = "278eae7418b04abbb5926847ed42271e"; // 这个id是vivo的com.quickapp.center创建的,需要修改manifest的package才能预览出效果break;case "oppo":this.adUnitId = "oppo-adUnitId";break;case "xiaomi":this.adUnitId = "xiaomi-adUnitId";break;case "huawei":this.adUnitId = "huawei-adUnitId";break;default:console.warn("此设备不支持广告组件!");}},initAd() {try {this.ad = require('@service.ad').createBannerAd({ // 使用require方式避免在不支持的广告接口的厂商运行是报错adUnitId: this.adUnitId,style:{left: 0,top: 800,width: 1080}})} catch (e) {console.log(e)}},showAd() {if(this.ad) {this.ad.show();} else {this.initAd();}}};
</script>
<style lang="less">.wrap {background-color: #cccccc;flex-direction: column;.btn {height: 50px;width: 200px;border-radius: 25px;color: #FFFFFF;background-color: #456fff;text-align: center;}}
</style>
这里不谈样式,原生广告可能会细讲。
2.1.2 方法详解
data
data() {return {adUnitId: "",ad: null};
},
为什么要说道data这个方法,因为里面有两个非常重要的属性,也是广告植入的关键!
adUnitId
:必须要有都是靠他接入广告的,他不对就没广告
**获取方式:**可以从各大平台去申请。部分平台可能没有测试id,需要先进行app
发布验证才能拿到(如果需要的人多,我可以再写一篇如何申请各大id的正式id的文章)
ad
:通过adUnitId
来生成的广告对象。
switchAdUnitIdByBrand()
async switchAdUnitIdByBrand() {// 这个方法的作用是适配不同厂商的adUnitIdconst res = await device.getInfo();const brand = res.data.brand;switch (brand) {case "vivo":this.adUnitId = "278eae7418b04abbb5926847ed42271e"; // 这个id是vivo的com.quickapp.center创建的,需要修改manifest的package才能预览出效果break;case "oppo":this.adUnitId = "oppo-adUnitId";break;case "xiaomi":this.adUnitId = "xiaomi-adUnitId";break;case "huawei":this.adUnitId = "huawei-adUnitId";break;default:console.warn("此设备不支持广告组件!");}
}
这个方法主要就是针对不同机器的adUnitId
适配性操作,很通俗的switch语句。
device.getInfo();
通过这个方法去拿到设备信息
const brand = res.data.brand;
通过设备信息去锁定设备的品牌从而去下面找到你设置的adUnitId
device
需要提前导入import device from "@system.device";
initAd()
通过内部给出的代码去创建banner广告
require('@service.ad').createBannerAd
:具体代码看完整代码(里面填写id和banner的广告的样式即可)
2.1.3 其它方法
参考:https://quickapp.vivo.com.cn/quickapp-ad-api-gide/#toc-7
bannerAd 对象
方法 | 参数 | 描述 |
---|---|---|
bannerAd.show() | - | 加载展示banner广告,出错的时候回调 onError,分为加载和展示两个阶段,加载成功回调onLoad |
bannerAd.hide() | - | 隐藏 banner 广告 |
bannerAd.onError() | function callback | 监听 banner 广告错误事件 |
bannerAd.offError() | function callback | 移除 banner 广告错误监听 |
bannerAd.onLoad() | function callback | 监听 banner 广告加载事件,多个素材,每次加载新素材,都会进入这个回调 |
bannerAd.offLoad() | function callback | 移除 banner 广告展示监听 |
bannerAd.onClose() | function callback | 监听 banner 广告关闭事件 |
bannerAd.offClose() | function callback | 移除 banner 广告关闭事件 |
bannerAd.onResize() | function callback | 监听 banner 广告尺寸变化事件 |
bannerAd.offResize() | function callback | 取消监听 banner 广告尺寸变化事件 |
bannerAd.destroy() | - | 销毁 banner 广告 |
2.2 插屏广告
因为形式类似,所以这里不多赘述,直接看demo
2.2.1 完整代码
<script>import device from "@system.device";export default {data() {return {adUnitId: "fc7c15870c7740da94d88c650c939be4", // 这个id是vivo的com.quickapp.center创建的,需要修改manifest的package才能预览出效果ad: null};},onInit() {this.initAd();},initAd() {try {this.ad = require('@service.ad').createBannerAd({ // 使用require方式避免在不支持的广告接口的厂商运行是报错adUnitId: this.adUnitId,})this.ad.onLoad(() => {this.ad.show();})} catch (e) {console.log(e)}}};
</script>
2.2.2 其它方法
interstitialAd对象
方法 | 参数 | 描述 |
---|---|---|
interstitialAd.show() | - | 插屏广告组件默认是隐藏的,调用 show 方法展示广告。 |
interstitialAd.hide() | - | 隐藏插屏广告 |
interstitialAd.onError() | function callback | 监听插屏广告出错事件 |
interstitialAd.offError() | function callback | 移除插屏广告出错监听 |
interstitialAd.onLoad() | function callback | 监听插屏广告加载成功事件 |
interstitialAd.offLoad() | function callback | 移除插屏广告加载成功监听 |
interstitialAd.onClose() | function callback | 监听插屏广告隐藏事件 |
interstitialAd.offClose() | function callback | 移除插屏广告隐藏监听 |
interstitialAd.destroy() | - | 销毁插屏广告 |
2.3 激励视频
2.3.1 完整代码
同理一样调用
讲一些细节问题:
1.demo的激励视频中show方法是通过OnLoad方法去调用的。
2.每次运行时都会调用一次load方法,不需要写出来也会自动执行一次。
<script>import device from "@system.device";export default {data() {return {adUnitId: "236d05c1e2564e85bf289f63c1e42c29", // 这个id是vivo的com.quickapp.center创建的,需要修改manifest的package才能预览出效果ad: null};},onInit() {this.initAd();},initAd() {try {this.ad = require('@service.ad').createRewardedVideoAd({ // 使用require方式避免在不支持的广告接口的厂商运行是报错adUnitId: this.adUnitId,})this.ad.onLoad(() => {this.ad.show();})this.ad.onClose((res) => {if (res && res.isEnded) {console.log("正常播放结束,可以下发奖励");} else {console.log("播放中途退出,不下发奖励");}})this.ad.load();} catch (e) {console.log(e)}}};
</script>
2.3.2 其它方法
rewardedVideoAd对象
方法 | 参数 | 描述 |
---|---|---|
rewardedVideoAd.show() | - | 激励视频广告组件默认是隐藏的,调用 show 方法展示广告,失败回调 onError |
rewardedVideoAd.load() | - | 手动拉取广告,用于刷新广告,成功回调 resolved Promise,失败回调 onError |
rewardedVideoAd.onError() | function callback | 监听激励视频广告出错事件 |
rewardedVideoAd.offError() | function callback | 移除激励视频广告出错监听 |
rewardedVideoAd.onLoad() | function callback | 监听激励视频广告加载成功事件 |
rewardedVideoAd.offLoad() | function callback | 移除激励视频广告加载监听 |
rewardedVideoAd.onClose() | function callback | 监听激励视频广告关闭事件。只有在用户主动关闭激励视频广告时,广告才会关闭。 |
rewardedVideoAd.offClose() | function callback | 移除激励视频广告关闭监听 |
rewardedVideoAd.destroy() | - | 销毁激励视频广告组件 |
2.4 原生广告
这块最为复杂,首先你要知道虽然快应用可以在多个平台发布,但是每个平台对广告的兼容性却是不一样的。
所以原生广告被折腾成了1.0和2.0。
2.4.1 个人开发经验
2.0 最为兼容vivo平台(oppo中也可以使用)
1.0 兼容三大平台(oppo、华为、小米)
2.4.2 原生广告1.0
<script>import device from "@system.device";export default {data() {return {adUnitId: "9d66217c88614253bd68a291c273f8d5", // 这个id是vivo的com.quickapp.center创建的,需要修改manifest的package才能预览出效果ad: null};},onInit() {this.initAd();},initAd() {try {this.ad = require('@service.ad').createNativeAd({ // 使用require方式避免在不支持的广告接口的厂商运行是报错adUnitId: this.adUnitId,})this.ad.onLoad((data) => {console.log('Native ad resources!', data); // 广告加载成功,返回原生广告资源,根据但是资源自行渲染展现})this.ad.load();} catch (e) {console.log(e);}}};
</script>
这里他没有前端,前端需要你去自己写。具体得到的参数可以查看onLoad
中的data
2.4.3 原生广告2.0
https://dev.vivo.com.cn/documentCenter/doc/499#w2-48198661
官方的介绍,其实并没有告诉你具体的写法
这里推荐去查看Apex-UI中关于ad2.0的案例
https://vivoquickapp.github.io/apex-ui-docs/guide/ad2.html
最好的下载从里面的代码去理解
三、错误码大全
3.1基础错误码
通用
代码 | 异常情况 |
---|---|
1000 | 后端错误,调用失败 |
1001 | 参数错误 |
1002 | 广告单元无效 |
1003 | 内部错误 |
1004 | 无合适的广告 |
1005 | 广告组件审核中 |
1006 | 广告组件被驳回 |
1007 | 广告能力被封禁 |
1008 | 广告位的广告能力已关闭 |
1009 | 广告加载超时 |
1100 | 过于频繁调用相关的API |
1101 | 广告在加载后,长时间没有展示,广告信息已过期 |
1102 | 调用了不支持的方法 |
1103 | 环境监测失败,如应用无权限等 |
1104 | 网络错误 |
1105 | 广告未加载成功 |
1106 | 广告展示失败 |
2000 | 未知错误 |
小米
code | 含义 | 备注 |
---|---|---|
300001 | 广告位不存在 | 请确认广告位是否是开启状态 |
300002 | 广告位在米盟SSP被暂停 | 开发者关闭了广告位 |
300003 | upId不存在 | |
300004 | 广告位被加入黑名单 | 通常是因为有作弊嫌疑,请联系米盟解决 |
300005 | 应用在米盟SSP被暂停 | 开发者暂停了应用下所有广告位 |
300006 | 应用被加入黑名单 | 通常是因为有作弊嫌疑,请联系米盟解决 |
300007 | 应用不存在 | 确认广告位的应用信息是否正确 |
300009 | 应用未上架 | |
100401 | 被联盟投放限制过滤 | 根据开发者在SSP后台设置的屏蔽策略屏蔽广告 |
100402 | 请求包名与注册包名不一致 | 请求包名与注册包名不一致将不返回广告 |
101101 | 广告位内部解析错误 内部错误 | 请联系米盟解决 |
101102 | 内部错误 | 请联系米盟解决 |
101103 | 内部错误 | 请联系米盟解决 |
101104 | 内部错误 | 请联系米盟解决 |
300215 | 频控限制 | 更换调试设备解决 |
300216 | 请联系米盟解决 | 请联系米盟解决 |
300217 | 请联系米盟解决 | 请联系米盟解决 |
300218 | 请联系米盟解决 | 请联系米盟解决 |
300220 | 请联系米盟解决 | 请联系米盟解决 |
300221 | 请联系米盟解决 | 请联系米盟解决 |
300222 | 请联系米盟解决 | 请联系米盟解决 |
300223 | 请联系米盟解决 | 请联系米盟解决 |
300224 | 请联系米盟解决 | 请联系米盟解决 |
300225 | 请联系米盟解决 | 请联系米盟解决 |
300226 | 请联系米盟解决 | 请联系米盟解决 |
300227 | 请联系米盟解决 | 请联系米盟解决 |
300228 | 请联系米盟解决 | 请联系米盟解决 |
300217 | 请联系米盟解决 | 请联系米盟解决 |
四、各大平台的测试id
4.1 小米
广告类型 | 测试广告位ID |
---|---|
横幅 | 802e356f1726f9ff39c69308bfd6f06a |
插屏半屏图片(横版) | 1d576761b7701d436f5a9253e7cf9572 |
插屏半屏图片(竖版) | 67b05e7cc9533510d4b8d9d4d78d0ae9 |
插屏半屏视频(横版) | b7c62fa1f3db17b661e3adc650414f41 |
插屏半屏视频(竖版) | 7844b678553cc3f3b9b9048a48f145a4 |
插屏半屏图片和视频(横版) | 7b6435ad4d1e6d87ddba2415de6ba65b |
插屏半屏图片和视频(竖版) | eda5f9bcf641d588758b27b290d8b4f1 |
全屏插屏视频(横版) | 9b31b19c061a4db0d5f4f004cf16c92d |
全屏插屏视频(竖版) | ea7b05ddc1a85d3d04ab0231b3b5e4bb |
激励视频广告(横版) | 17853953c5adafd100f24cd747edd6b7 |
竖版激励视频(竖版) | 92d90db71791e6b9f7caaf46e4a997ec |
横版开屏 | 94f4805a2d50ba6e853340f9035fda18 |
原生模板-上文下图 | 4966931579570a31c70269f560e9577e |
原生模板-左文右图 | e8cad3a962d8f5ccb3e42a5c2427107d |
原生模板-左图右文(A版) | 4cc5ca1fa86d05c3c9dbec05ce5bb1b8 |
原生模板-左图右文(B版) | 8577377ac0a045a5187a5506f3cf6ba6 |
原生模板-上图下文(大图) | 8f02fd1f100b57f536da160a84fa95a6 |
原生模板-上图下文(组图) | 9d72e47b9640044d1f6bcbd4d3277d19 |
原生模板-横版视频模板 | ffc009779b4a62177fffe3d594bb35ff |
自渲染大图(仅图片) | 702b6a3b2f67a52efd3bdbf51fbef5fe |
自渲染大图(仅视频) | 737fd8fce83832ffac1da2244d24add5 |
自渲染——大图(图片+视频混出) | 270c1630710a858d633aaf752025eae2 |
自渲染——小图 | 60d2a98004f3a2a3625a1665796e0ebb |
自渲染——组图 | c020c2cbc40301a2a18fe32977bddcaa |
4.2 vivo
看demo中的测试id
https://quickapp.vivo.com.cn/quickapp-ad-api-gide/#toc-10
4.3 OPPO
暂无
4.4 华为
看demo中的测试id:
https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickapp-access-ads-kit-0000001126445969#section525115250248
快应用广告开发、各大手机平台测试id、错误码汇总相关推荐
- 摩托罗拉等六厂商联手 开发通用Linux手机平台
摩托罗拉等六厂商联手 开发通用Linux手机平台 关键词: 摩托罗拉等六厂商联手 开发通用Linux手机平台 本周四,手机厂商摩托罗拉.NEC .松下.三星,以及手机运营商NTT DoCoMo.沃达丰 ...
- android 充电 测试,谁最快? Android Authority带来的手机充电测试
原标题:谁最快? Android Authority带来的手机充电测试 [安卓中文网]现在快充已经是新一代手机的标配了,不少厂商在发布新机的时候多多少少都会提到这一点. Android Authori ...
- OpenHarmony/HarmonyOS卡片开发错误码汇总
卡片开发的过程中会遇到一些错误,下面是针对卡片开发的错误码汇总 作者:坚果 组织:坚果团队 欢迎加入坚果团队 16500001 内部错误 错误信息 Internal Error. 错误描述 Mallo ...
- VIP会员也得看广告!两大视频平台回应...
前段时间,各大视频平台相继宣布停止VIP会员的超前点播服务,网友们都拍手叫好,一致受到大家的好评.但近日,仍有不少视频网站会员表示,交了会员费后,广告仍时不时跳出来.虽然会员可跳过片头长达 1 分钟的 ...
- 精益开发——税务大数据平台建设效能提升的倍增器
2020年阿里巴巴的研发效能峰会上,阿里资深技术专家何勉做了"ALPD--阿里创新能力背后的精益产品开发体系"的分享,它是阿里正在实践和持续打造的产品开发方法,目的是帮助组织提升精 ...
- 安卓底层linux开发教程,Android手机平台移植与底层开发 PDF
支持Android的热门ARM硬件平台简介 ARMv7架构SOC l TI OMAP系列,2009年OMAP3和OMAP4关注度较高 l Freescale i.MX51系列 l Qualcomm 8 ...
- python测试开发自学教程-自动化平台测试开发:Python测试开发实战_PDF电子书
因资源下载地址容易失效,请加微信号359049049直接领取,直接发最新下载地址. 前言 ======================================================= ...
- python测试开发自学教程-自动化平台测试开发- Python 测试开发实战
适读人群 :本书适合从事自动化测试开发技术的广大开发和测试人员使用,也可供产品测试开发管理人员参考. 自动化测试平台测试开发是指开发一个平台系统,结合相关的开源自动化框架进行集成,如 Selenium ...
- 大数据平台应用 17 个知识点汇总
一.大数据中的数据仓库和Mpp数据库如何选型? 在Hadoop平台中,一般大家都把hive当做数据仓库的一种选择,而Mpp数据库的典型代表就是impala,presto.Mpp架构的数据库主要用于即席 ...
- 大数据平台测试-软件测试常见面试回答(持续更新)
面试造航母,入职拧螺丝.面试,讲点面试官想听的... 1.你有过漏测的经历吗? 答:这道题肯定是回答有.然后展开描述.就类似面试官问 你印象比较深的一个bug... 测试无穷尽,质量也并非测试一个岗位 ...
最新文章
- R语言Logistic回归模型案例:低出生婴儿体重的影响因素分析(列线图、校准曲线)
- 利用Java生成静态HMTL页面的方法收集
- 塑料壳上下扣合的卡扣设计_一种塑料件卡扣结构制造技术
- Windows XP英文版安装中文语言包来解决无法显示中文的方法(转载)
- H5页面跳转微信小程序
- (Inside Out)Web地图坐标系——谷歌的无奈
- matlab 线性方程 lu分解法_数值计算笔记-LU分解
- ECharts+Vue实现数据可视化
- mysql latch_MySQL8.0 - InnoDB里的Latch定义-阿里云开发者社区
- 「击败星际争霸II职业玩家」的 AlphaStar是在作弊?
- 热敏打印机 图片指令打印图片
- 《区块链助力粤港澳大湾区一体化发展报告(2022)》发布
- Python爬虫代理IP(代理池)——加载和使用
- 【日常】FIFA世界杯和历史事件
- win10总出现繁体字怎么关闭
- 信托专替卖家刷淘宝信用 制造虚假交易赚人
- Redis 之布隆过滤器,增强版,布谷鸟过滤器
- 模拟时钟(AnalogClock)
- Unit 4 关系代名词
- 使用ffmpeg常见的错误及解决方案
热门文章
- 【历史上的今天】8 月 24 日:Windows 95 问世;乔布斯辞任苹果 CEO;库克上台
- HTML5生日祝福网页代码【粉色生日快乐模板】HTML+CSS+JavaScript
- VisualRoute for Mac OS 体验
- java NumberFormat数字格式化
- stm32烧写序列号
- Esri中国社区 » GIS大讲堂:ArcGIS Server .Net ADF中的AJAX
- 天涯明月刀最新服务器,天涯明月刀最新开服时间表 | 手游网游页游攻略大全
- oa系统怎么安装服务器配置,OA系统安装配置及维护手册-金蝶在线服务中心.DOC
- 教育OA系统该如何选择?
- bjui刷新当前页签