快应用广告开发、各大手机平台测试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 | 未知錯誤 |
小米
| 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 小米
| 橫幅 | 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、错误码汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自动获取天气_用python
- 下一篇: 从zip中读取文件 合并到指定的文件中