快应用广告开发、各大手机平台测试id、错误码汇总

快应用广告植入

入门参考:https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=3678

郑重声明:快应用调试器预览版不提供广告展示

方法:可以在合适的手机快应用调试器上去找不是预览版的版本进行广告调试

一、广告的分类

1.1 分类:

  • banner广告
  • 插屏广告
  • 原生广告(部分厂家支持原生渲染2.0,版本兼容问题看版本兼容)
  • 激励视频广告

1.2 版本兼容

厂商最低支持引擎版本说明
vivo1052+激励视频广告1061+ vivo 流量联盟平台
OPPO1044+激励视频广告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() {
      // 这个方法的作用是适配不同厂商的adUnitId
      const 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() {
    // 这个方法的作用是适配不同厂商的adUnitId
    const 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被暂停开发者关闭了广告位
300003upId不存在
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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值