一、文档更新日志
更新日期 | 更新日志 |
2024年9月9日 | banner广告(横幅广告)、插屏广告、激励视频广告增加点击事件回调 |
2024年7月18日 | 第七部分增加错误码:300601、300441、300701、300702、300703 |
2023年12月5日 | 12月31日前原生广告2.0(自渲染2.0)请接入关闭按钮(Ad 组件的 closeBtnPosition 属性)和广告logo(ad-clickable-area组件的 type=logo),否则会强制展示关闭按钮和广告 logo,影响展示效果,详见第四部分 |
2023年10月24日 | - 原生广告2.0 ad-clickable-area 组件新增type属性,支持click、logo类型【重要:logo类型需要重新接入,详见文档】 - 修复已知问题,合规性及安全性优化 - 原生广告2.0 preloadAd 数据下发新增 hasPrivacy 字段 - 原生广告2.0 Ad 组件新增 closeBtnPosition 属性、adclose 事件 |
2023年08月31日 | - 新增模板广告类型使用说明 - 原生广告2.0 appInfo中增加应用介绍字段 |
二、广告组件
广告接口和其他接口一样,需要在 manifest.json 中先声明,广告的最小支持版本号为 1052
,声明方式:
三、接口声明
{"name":"service.ad"}
四、导入模块
import ad from '@service.ad' 或 const ad = require('@service.ad')
五、接口定义
ad.getProvider()
获取服务提供商。
参数:
无
返回值:
字符串,服务提供商的代号,如厂商的英文品牌名称,假如无此服务则返回空字符串
示例:
console.log(ad.getProvider())
注意:广告的尺寸比例,无需通过接口进行配置,但各厂商的尺寸不同,开发的时候需要进行区分
六、banner广告
ad.createBannerAd(object)
创建 Banner 广告组件,如果已经创建过 Banner 广告组件,则返回已创建的广告组件
参数
参数 | 类型 | 是否必填项 | 说明 |
adUnitId | string | 是 | Banner 广告位标识 |
style | Object | 否 | Banner 广告组件的样式 |
代码示例
let bannerAd = ad.createBannerAd({
adUnitId: 'xxx',
style:{
left:0,
top: 800,
width:1080
}
})
style的结构
属性 | 类型 | 是否必填 | 说明 |
left | number | 否 | banner 广告组件的左上⻆横坐标 |
top | number | 否 | banner 广告组件的左上角纵坐标 |
width | number | 否 | banner 广告组件的宽度 |
height | number | 否 | banner 广告组件的高度 |
style说明
Banner 广告组件的尺寸会根据开发者设置的宽度,即 style.width 进行等比缩放,缩放的范围是 designWidth * 50% 到 屏幕宽度。
开发者在创建 BannerAd 时设置宽高,也可以在创建后设置,如:
bannerAd.style.width = 1000
当 style.width 小于 designWidth * 50% 时,会取作 designWidth * 50%。
当 style.width 大于屏幕宽度时,会取作屏幕宽度。 在组件内部会以此值为基准,根据 Banner 广 告的标准尺寸,进行缩放。
每当缩放发生且缩放后的尺寸不同时,通过 BannerAd.onResize() 注册的回调函数就会执行。回调 函数的参数是一个包含 BannerAd 缩放后的宽和高的对象。BannerAd 的 style.realWidth 和 style.realHeight 到经过缩放后的宽和高。
bannerAd.onResize(res => {
console.log(res.width, res.height)
console.log(bannerAd.style.realWidth, bannerAd.style.realHeight)
})
Banner广告不设置位置,默认在屏幕底部。
返回值
Banner广告组件
Promise bannerAd.show()
加载展示banner广告,出错的时候回调 onError,分为加载和展示两个阶段,加载成功回调onLoad
返回值
Promise
banner 广告显示操作的结果
Promise bannerAd.hide()
隐藏 banner 广告
返回值
Promise
banner 广告隐藏操作的结果
bannerAd.onError(function callback)
监听 banner 广告错误事件
代码示例:
bannerAd.onError((err)=>{
console.log(err)
})
err:Object错误参数,其他广告类型相同
参数 | 类型 | 是否必填 | 说明 |
errMsg | string | 是 | 错误信息 |
errCode | number | 是 | 错误码 |
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 广告尺寸变化事件
参数
function callback
banner 广告尺寸变化事件的回调函数
bannerAd.onClick(function callback) 1300+
监听 banner 广告点击事件
bannerAd.offClick(function callback) 1300+
移除 banner广告点击回调
bannerAd.destroy()
销毁 banner 广告
七、插屏广告
ad.createInterstitialAd(object)
创建插屏广告组件,同一个 adUnitId,如果已经创建,并且未 destroy,会复用之前的对象,创建后会加载广告素材,素材创建后会自动拉取
参数
参数 | 类型 | 是否必填 | 说明 |
adUnitId | string | 是 | 插屏广告位标识 |
代码示例:
let interstitialAd = ad.createInterstitialAd({
adUnitId: 'xxx'
})
返回值
插屏广告组件
interstitialAd.show()
插屏广告组件默认是隐藏的,调用 show 方法展示广告。
返回值
Promise
插屏广告显示操作的结果。
interstitialAd.onLoad(function callback)
监听视频广告加载成功事件
代码示例:
interstitialAd.onLoad(()=> {
console.log("插屏广告加载成功"); interstitialAd.show();
})
interstitialAd.offLoad(function callback)
移除插屏广告加载成功监听
interstitialAd.onClose(function callback)
监听插屏广告隐藏事件
interstitialAd.offClose(function callback)
移除插屏广告隐藏监听
interstitialAd.onError(function callback)
监听插屏广告出错事件
代码示例:
interstitialAd.onError((err)=> {
console.log(err);
})
interstitialAd.offError(function callback)
移除插屏广告出错监听
interstitialAd.onClick(function callback) 1300+
监听插屏广告点击事件
interstitialAd.offClick(function callback) 1300+
移除插屏广告点击回调
interstitialAd.destroy()
销毁插屏广告组件
八、原生-自渲染1.0(原生广告)
注意:新接入的开发者请使用原生自渲染2.0,原生自渲染1.0在1103+版本后逐步放弃支持。
原生自渲染1.0(原生广告)将返回相应的广告素材,由开发者负责素材渲染。
原生自渲染1.0(原生广告)的每个广告位曝光都必须带有米盟广告logo,请开发者务必将该米盟广告logo渲染展示到广告内。
下载米盟广告Logo地址:https://kpan.mioffice.cn/webfolder/ext/f66uBquzcoQ%40?n=0.07417165969068606
密码:867c
ad.createNativeAd(object)
创建 native 广告组件,如果已经创建过 native 广告组件,则返回已创建的广告组件
参数
参数 | 类型 | 是否必填 | 说明 |
adUnitId | string | 是 | 原生广告位标识 |
代码示例:
let nativeAd = ad.createNativeAd({
adUnitId: 'xxx'
})
返回值
原生广告组件
nativeAd.load()
拉取广告数据,成功回调 onLoad,失败回调
onError nativeAd.reportAdShow()
上报广告曝光,一个广告只有一次上报有效,adId 为 load 方法获取的广告数据的 adId 字段
参数
参数 | 类型 | 是否必填 | 说明 |
adId | string | 是 | 广告信息标识,由 load 接口返回 |
代码示例:
nativeAd.reportAdShow({
adId: "xxx"
})
nativeAd.reportAdClick()
上报广告点击,一个广告只有一次上报有效,adId 为 load 方法获取的广告数据的 adId 字段
参数
参数 | 类型 | 是否必填 | 说明 |
adId | string | 是 | 广告信息标识,由 load 接口返回 |
代码示例:
nativeAd.reportAdClick({
adId: "xxx"
})
nativeAd.onLoad(function callback)
设置广告加载成功回调
参数
参数 | 类型 | 是否必填 | 说明 |
adList | Array | 是 | 广告详细信息 |
返回广告数据 adList 是一个 Array 对象,其中 item 数据格式为:
参数 | 类型 | 说明 |
adId | string | 广告标识,用来上报曝光与点击 |
title | string | 广告标题 |
desc | string | 广告描述 |
icon | string | 推广应用的Icon图标 |
imgUrlList | Array | 广告图片 |
logoUrl | string | “广告”标签图片 |
clickBtnTxt | string | 点击按钮文本描述 |
creativeType | number | 获取广告类型,取值说明:0:无 1:纯文字 2:图片 3:图文 混合 4:视频 |
interactionType | number | 获取广告点击之后的交互类型,取值说明: 0:无 1:浏览类 2:下载类 3:浏览器(下载中间⻚广告) 4:打开应用首⻚ 5:打开应用详情⻚ |
代码示例:
nativeAd.onLoad(function(res) {
console.log("原生广告加载" , res.adList)
})
nativeAd.offLoad(function callback)
移除原生广告加载成功监听
nativeAd.onError(function callback)
监听原生广告错误事件
代码示例:
nativeAd.onError((err)=>{
console.log(err)
})
nativeAd.offError(function callback)
移除原生广告错误监听
nativeAd.destroy()
销毁原生广告
九、原生-自渲染2.0(原生广告2.0,最小支持引擎版本1103+)
原生自渲染2.0之后使用 ad 、 ad-clickable-area 组件来进行广告渲染,获取数据方式也有 所改变,需要使用 preloadAd 接口预加载广告数据。
原生自渲染2.0的每个广告位曝光都必须带有米盟广告logo,请开发者务必将该米盟广告logo渲染展示到广告内。
下载米盟广告Logo地址:https://kpan.mioffice.cn/webfolder/ext/f66uBquzcoQ%40?n=0.07417165969068606
密码:867c
注意:在11030301以下版本快应用框架不支持“原生自渲染2.0”。请开发者做好兼容处理,在11030301以下版本请使用“原生自渲染1.0”。
https://doc.quickapp.cn/features/system/device.html#devicehost1070
var device = require('@system.device')
var host = device.host
var package = host.package
var versionCode = host.versionCode
if (versionCode >= 11030201){
//使用原生广告2.0接口
} else {
//使用原来的原生广告接口
}
ad.preloadAd(object)
在快应用环境下,支持通过调用 ad.preloadAd 接口,提前加载广告数据,在后续创建对应广告 标签 ad 、 ad-clickable-area 时,可直接使用预加载的广告数据,省去创建广告标签时拉取广告的耗时。
该方法会异步回调结果。
注意:当前接口限制使得preloadAd接口每次只会返回一条数据,如需在列表中使用多条数据,可以多次调用preloadAd接口并在本地缓存每次的广告结果。 为了避免本地缓存广告数量限制对应用的影响,本地缓存数量最好不超过6条。
参数
参数 | 类型 | 是否必填 | 说明 |
adUnitId | string | 是 | 广告位id,原生信息流广告位标识 |
type | string | 是 | 广告单元所属广告位类型。目前仅支持:native:原生自渲染广告 |
adCount | Number | 否 | 预期返回的广告条 当该参数不填时,预加载不会返回广告数据, adCountNumber否则需使用load事件加载数据。 取值范围为1-3条,仅允许传入1、 2、3三个正整数之一,其他数据则报错不通过 |
success返回值:
参数 | 类型 | 说明 |
adList | Array | 广告详细信息的对象,原生信息流广告时返回,数据格式如下表 |
返回广告数据 adList 是一个 Array 对象,其中数据对象格式为:
参数 | 类型 | 说明 |
adId | string | 广告标识,用来上报曝光与点击 |
title | string | 广告标题 |
desc | string | 广告描述 |
icon | string | 推广应用的Icon图标 |
imgUrlList | Array | 广告图片 |
logoUrl | string | “广告”标签图片 |
clickBtnTxt | string | 点击按钮文本描述 |
creativeType | number | 获取广告类型,取值说明: 0:无 1:纯文字 2:图片 3:图文 混合 4:视频 |
interactionType | number | 获取广告点击之后的交互类型,取值说明: 0:无 1:浏览类 2:下载类 3:浏览器(下载中间⻚广告) 4:打开应用首⻚ 5:打开应用详情⻚ |
hasPrivacy | boolean | 是否具备隐私交互组件能力,取值说明:true,广告素材有隐私交互能力,否则没有 |
appInfo | object | App信息,下载类广告会返回 |
注意:
creativeType字段暂时不可用。
interactionType字段在小米侧无需判断。
hasPrivacy 在 11060002 版本及以上才支持。
App信息 appInfo 参数列表:
参数 | 类型 | 说明 |
appName | string | 应用名称 |
appVersion | string | 应用版本 |
appSize | float | 应用大小,单位KB |
developer | string | 开发者公司名称 |
privacyUrl | string | 隐私政策链接 |
permissionUrl | string | 应用权限链接 |
introductionUrl | string | 应用介绍链接 |
ad.preloadAd({
adUnitId: this.adUnitid,//原生信息流2.0广告位标识
adCount: this.adCount,//预期返回的数据条数:取值范围1-3,其他数据则报错 type: 'native',//所属广告位类型 success: (data) => {
success: (data) => { prompt.showToast({
console.log(data, '预加载成功')//
prompt.showToast({
message: `预加载成功`
})
//存储预加载数据 this.preloadData = data.adList//一次成功返回有1-3个数据,参照对应的adCount数(小 概率情况下小于 adCount 数)
},
fail: function (err, code) {
console.log(err, code, '预加载失败')
prompt.showToast({
message: `预加载失败${JSON.stringify(err)}`
})
}
})
ad组件
广告组件,用于加载原生广告。
注意:
1.ad组件内部需要添加div方可布局使用,否则广告内容会叠加到一起。
2.广告组件内部不要放置可点击元素,否则有可能误触发广告点击。
子组件
支持。
属性
支持通用属性。
除此之外还支持如下属性。
名称 | 类型 | 默认值 | 必填 | 描述 |
adid | String | — | 是 | 填入preloadAd方法获取的广告数据中的 adId 字段, 通过该属 性将组件指定为 ad 接口返回的对应原生自渲染2.0广告素材的展示容器 |
closeBtnPosition | String | right- top | 否 | "配置关闭按钮的显示位置,取值范围: left-top:左上角 right-top:右上角 left-bottom:左下角 right-bottom:右下角" |
注意:
1. ad组件内部需要添加div方可布局使用,否则广告内容会叠加到一起。
2. ad组件内部不要放置可点击元素,否则有可能误触发广告点击。
3. 不允许ad组件、popup组件作为ad组件的子组件。
4. ad组件不能过小,不能被遮挡,否则会影响广告展示。
5. 如未设置adid,则不会回调事件。
6. closeBtnPosition 属性在 11060002 版本及以上才支持。
7. 11060002 版本及以上会强制展示关闭按钮,请开发者做好兼容处理,11060002 版本及以上移除自己实现的关闭按钮,根据 closeBtnPosition 属性调整位置,11060002 版本以下自己实现关闭按钮。
样式
支持通用样式。
事件
不支持通用事件,支持如下事件。
名称 | 参数 | 描述 |
adclick | — | 广告组件内可响应广告点击动作区域被点击 |
adshow | — | 广告组件曝光回调 |
error | { errCode: Number, errMsg: String} | 广告素材加载失败时或者内部错误时触发 |
adclose | — | 系统自带的关闭按钮被点击时触发,此时广告视图被移除 |
注意:adclose回调时,开发者应将对应广告组件(推荐ad组件或ad组件的父组件)使用if条件语句删除。
ad-clickable-area 组件
ad 组件子组件,用于展示广告的可点击区域。当 ad-clickable-area 作为非 ad 组件子组件时,效果等同 div 组件。
注意:当前只有ad组件内部需要使用ad-clickable-area组件,其他容器内不要使用此组件。
子组件
type 为 click 时支持子组件,type 为logo时,不支持子组件。
属性
支持通用属性。
名称 | 类型 | 默认值 | 必填 | 描述 |
type | click | logo | click | 否 | "组件类型 click:图文素材点击区域,支持子组件,点击后跳转至相应的落地页; logo:广告标识区域,不支持子组件 |
注意:
1、type 属性在 11060002 版本及以上才支持。
2、所有原生广告必须通过 type 为 logo 展示广告标识,如不设置会默认添加在左上角位置,logo 标识宽高固定为78*36,开发者可以自行调整摆放位置;
样式
支持通用样式。
当 type 为 logo 时:
名称 | 类型 | 默认值 | 必填 | 描述 |
logoStyle | number | 0 | 否 | 广告标识样式。取值范围:0,1 0:为灰底 1:为黑底 |
事件
不支持事件
原生广告2.0 示例代码
<template>
<div class="doc-page">
<div class="ad-container" if="{{this.hasAdList===true}}">
<ad
adid="{{adList.adId}}"
class="ad-native"
type="native"
show="{{!!adList.adId}}"
onadclick="adClick"
onadshow="adShow"
@error="error">
<div class="ad-native">
<ad-clickable-area class="ad-image">
<image src="{{this.adList.imgUrlList[0]}}"></image>
</ad-clickable-area>
<ad-clickable-area class="ad-image">
<text class="page-title">{{adList.title}}</text>
</ad-clickable-area>
</div>
</ad>
</div>
</template>
<style>
.ad-native {
width: 100%;
flex-direction: column;
flex-wrap: wrap;
height: 100%;
}
.ad-image {
width: 100%;
flex-direction: column;
height: 40%;
}
.doc-page {
flex: 1;
flex-direction: column;
align-items: center;
}
.page-title-wrap {
padding-top: 50px;
padding-bottom: 80px;
justify-content: center;
}
.page-title {
padding-top: 30px;
padding-bottom: 30px;
padding-left: 40px;
padding-right: 40px;
border-color: #bbbbbb;
color: #bbbbbb;
border-bottom-width: 2px;
}
.item-container {
width: 100%;
}
.ad-container {
width: 100%;
height: 100%;
}
</style>
<script>
/**
* 标识:测试用例
* @desc ad接口 */
import ad from '@service.ad'
import prompt from '@system.prompt'
export default {
private: {
adList: {},
hasAdList: false,
shouldShow: false,
params: {
adUnitId: 'da11b7e8c582ee7d1acf16a627ea6b34'
}
},
onInit() {
this.$page.setTitleBar({
text: '原生广告2.0'
})
// 创建实例 this.preloadAd()
},
adShow(evt) {
console.log('adShow: ', evt)
prompt.showToast({
message: `广告展示回调事件成功触发`
})
},
adClick(evt) {
console.log('adClick: ', evt)
prompt.showToast({
message: `广告点击回调事件成功触发`
})
},
preloadAd() {
ad.preloadAd({
adUnitId: "da11b7e8c582ee7d1acf16a627ea6b34",
adCount: 1,
type: "native",
success: (data) => {
console.log(JSON.stringify(data), 'charles预加载成功')
this.adList = data.adList[0]
this.hasAdList = true
console.log(JSON.stringify(this.adList) + "charles", this.adList.adId)
},
fail: function (err, code) {
console.log(err, code, 'charles 预加载失败')
prompt.showToast({
message: `预加载失败${JSON.stringify(err)}`
})
}
})
}
}
</script>
十、激励视频广告 1070+ (最小支持引擎版本1070+
)
激励视频广告组件是由客户端原生的图片、文本、视频控件组成的,层级最高,会覆盖在普通组件 上,该方法返回的是一个单例,该实例仅对当前⻚面有效,不允许跨⻚面使用。
ad.createRewardedVideoAd(object)
创建激励视频广告组件,该广告⻚面单例,不允许跨⻚面使用。
参数
参数 | 类型 | 是否必填 | 说明 |
adUnitId | string | 是 | 激励视频广告位标识 |
代码示例:
let rewardedVideoAd = ad.createRewardedVideoAd({
adUnitId: 'xxx'
})
返回值
激励视频广告组件
rewardedVideoAd.load()
加载激励视频广告。
返回值
Promise
激励视频广告显示操作的结果。
rewardedVideoAd.show()
显示激励视频广告。激励视频广告将从屏幕下方推入。
返回值
Promise
激励视频广告显示操作的结果。
rewardedVideoAd.onLoad(function callback)
监听激励视频广告加载事件。
参数
function callback
激励视频广告加载事件的回调函数
rewardedVideoAd.offLoad(function callback)
取消监听激励视频广告加载事件
参数
function callback
激励视频广告加载事件的回调函数
rewardedVideoAd.onClose(function callback)
监听用户点击 关闭广告 按钮的事件
参数
function callback
参数 | 类型 | 说明 |
isEnded | boolean | 视频是否是在用户完整观看的情况下被关闭的 |
rewardedVideoAd.offClose(function callback)
取消监听用户点击 关闭广告 按钮的事件
参数
function callback
用户点击 关闭广告 按钮的事件的回调函数
rewardedVideoAd.onError(function callback)
监听激励视频错误事件。
参数
function callback
激励视频错误事件的回调函数
rewardedVideoAd.offError(function callback)
取消监听激励视频广告错误
参数
function callback
激励视频错误事件的回调函数
rewardedVideoAd.onClick(function callback) 1300+
监听激励视频广告点击事件
参数
function callback
用户点击事件回调函数
rewardedVideoAd.offClick(function callback) 1300+
移除激励视频广告点击回调
参数
function callback
用户点击事件回调函数
rewardedVideoAd.destroy()
销毁激励视频广告组件
十一、原生-模板广告 (模板广告,最小支持引擎版本1105+)
ad.preloadAd(Object object)
在快应用环境下,支持通过调用 ad.preloadAd 接口,提前加载广告数据,在后续创建对应广告标签 ad-custom 时,会自动使用预加载的广告数据,省去创建广告标签时拉取广告的耗时。该方法会异步回调结果。
参数
参数 | 类型 | 必填 | 说明 |
adUnitId | string | 是 | 模板广告广告位标识 |
type | string | 是 | 广告单元所属广告位类型 native:原生自渲染广告,custom: 模板广告 |
代码示例
ad.preloadAd({
adUnitId: this.adunitid,
type: 'custom',
success: (data) => {
console.log(data, '预加载成功')
prompt.showToast({
message: `预加载成功`
})
},
fail: (err, code) => {
console.log(err, code, '预加载失败')
prompt.showToast({
message: `预加载失败${JSON.stringify(err)}`
})
}
})
ad-custom组件
概述
模板广告组件
子组件
不支持
属性
不支持
名称 | 类型 | 默认值 | 是否必填 | 描述 |
adunitid | string | - | 是 | 在开发者联盟申请的唯一广告位标识id(各厂商id不同) |
样式
支持通用样式
事件
不支持通用事件,支持如下事件
注意:1105-1108版本可能存在偶现 show 事件不回调问题,已在1109及以上版本修复
名称 | 参数 | 描述 |
load | - | 广告加载成功时触发 |
error | { errCode: Number, errMsg: string} | 广告加载失败时触发 |
show | - | 广告曝光时触发 |
click | - | 广告点击时触发 |
close | - | 广告关闭时触发 |
代码示例:
<template>
<div class="ad-wrap">
<div class="nativeAdContainer">
<ad-custom
class="ad-native"
adunitid="{{ adUnitId }}"
onload="adLoad"
onerror="adError(err,evt)"
onclick="adClick"
onclose="adClose"
onshow="adShow"
>
</ad-custom>
</div>
<list class="list-content" onscroll="handleScroll" id="list">
<!-- 列表元素,属性type值相同时,需要确保渲染中dom结构相同 -->
<list-item type="listItem" class="item item-color" for="{{logList}}">
<text class="txt">{{ $idx }}: {{ $item }}</text>
</list-item>
</list>
</div>
</template>
<script>
import prompt from '@system.prompt'
import ad from '@service.ad'
import device from '@system.device'
import router from '@system.router'
export default {
protected: {
adUnitId: 'xxx'
},
private: {
adList: {},
hasAdList: false,
shouldShow: false,
logList: []
},
async onInit() {
this.$page.setTitleBar({
text: '模板广告'
})
this.adPreloaded()
},
adPreloaded() {
let _this = this
ad.preloadAd({
adUnitId: this.adUnitId,
type: 'custom',
success: (data) => {
console.log(data, '预加载成功')
prompt.showToast({
message: `预加载成功`
})
_this.logList.unshift('模板广告预加载完成' + JSON.stringify(data))
},
fail: (err, code) => {
console.log(err, code, '预加载失败')
_this.logList.unshift('模板广告预加载失败 err: ' + err + ' code: ' + code)
prompt.showToast({
message: `预加载失败${JSON.stringify(err)}`
})
}
})
},
adLoad() {
console.log('adLoad 模板广告加载成功:')
this.logList.unshift('adLoad 模板广告加载成功:')
},
adError(err, evt) {
if (err) {
console.log('adError 模板广告加载出错:', err)
} else if (evt) {
prompt.showToast({
message: '模板广告展示失败:' + evt.errCode + ', errMsg=' + evt.errMsg
})
console.log('adError 模板广告展示失败:', evt.errCode, evt.errMsg)
}
},
adShow(evt) {
console.log('adShow: 模板广告展示回调事件成功触发')
prompt.showToast({
message: `模板广告展示回调事件成功触发`
})
this.logList.unshift('模板广告展示 回调事件成功触发')
},
adClick(evt) {
console.log('adClick: 模板广告点击回调事件成功触发')
prompt.showToast({
message: `模板广告点击回调事件成功触发`
})
this.logList.unshift('模板广告点击 回调事件成功触发')
},
adClose() {
console.log('adClose: 模板广告关闭回调事件成功触发 ')
prompt.showToast({
message: `模板广告关闭回调事件成功触发`
})
},
// 获取设备信息
getDeviceInfo(key) {
return new Promise((resolve, reject) => {
device.getInfo({
success: function (data) {
if (key) {
resolve(data[key])
} else {
resolve(data)
}
},
fail: function (data, code) {
reject(`### device.getInfo fail ### ${code}: ${data}`)
}
})
})
}
}
</script>
<style lang="less">
.ad-wrap {
flex: 1;
flex-direction: column;
}
.nativeAdContainer {
width: 750px;
height: 1010px;
flex-direction: column;
}
.ad-native {
width: 100%;
height: 100%;
}
.list-content {
flex: 1;
padding-left: 60px;
padding-right: 60px;
}
.item {
height: 150px;
align-items: center;
justify-content: center;
margin-bottom: 15px;
}
.item-color {
background-color: #f76160;
}
</style>
十二、错误码信息
错误码是通过onError获取到的错误信息。errCode返回值如下表:
错误码 | 说明 | 排查建议 |
0 | 广告请求成功,有广告填充 | |
1 | 广告请求成功,无广告填充 | 没有合适的广告返回而导致请求没有填充歌,偶现属于正常情况 |
100401 | 联盟投放限制过滤 | 调整米盟开发者后台的投放限制策略,如屏蔽关键词、包名等投放限制 |
300001 | 广告位不存在 | 确认米盟开发者后台上广告位的状态,检查广告位id是否与后台保持一致 |
300002 | 广告位在米盟SSP被暂停 | 确认米盟开发者后台上广告位的状态 |
300003 | upId不存在 | 检查广告位id是否与后台保持一致 |
300004 | 广告位被加入黑名单 | 广告位处于封禁状态,请及时查看米盟开发者后台提醒 |
300005 | 应用在米盟SSP被暂停 | 检查应用下广告位全部被暂停 |
300006 | 应用被加入黑名单 | 广告位处于封禁状态,请及时查看米盟开发者后台提醒 |
300007 | 应用不存在 | 确认广告位的应用信息是否正确 |
300009 | 应用未上架 | 确认米盟开发者后台应用状态 |
300201 | 缺少 clientInfo | 确认广告请求的clientInfo信息 |
300202 | clientInfo 不是合法的 json 格式 | 确认请求中clientInfo的格式是否与接入文档保持一致 |
300203 | 没有上报 os 信息,或者 os 信息不正确 | 确认请求中deviceInfo的os信息 |
300204 | 没有上报ip信息 | 确认广告请求的ip信息 |
300205 | 没有上报connectionType | 确认广告请求中是否缺失connectionType |
300206 | 请求信息校验 | 校验是否填上必要的请求信息 |
300207 | 没有上报packageName | 确认广告请求的packageName是否正常上报 |
300208 | 缺少deviceInfo | 确认deviceInfo是否为空 |
300209 | 没有上报userInfo | 确认广告请求的uerInfo是否正常上报 |
300210 | 没有上报appInfo | 确认广告请求的appInfo是否正常上报 |
300211 | 缺少impRequest | 确认 广告请求的cilentInfo中的impRequest是否存在 |
300212 | 没有上报 make 信息 | 确认 广告请求的deviceInfo中的make信息是否正确上报 |
300215 | 频控限制 | 请求频率过高。避免同一设备在一段时间内高频拉取广告,如在开发测试阶段,可尝试更换测试设备解决 |
300216 | 设备限制 | 如在开发测试阶段,可尝试更换测试设备解决,如无法自行解决,可联系米盟进行解决 |
300219 | SSP平台上应用的包名与广告请求中的包名不一致 | 实际发出广告请求的包名和在米盟开发者后台上应用的包名不匹配,需要检查发出广告的应用的包名,建议去开发者后台确认包名与使用的包名是否一致 |
300221 | 设备黑名单 | 联系米盟进行排查 |
300238 | 联盟投放限制过滤 | 调整广告的投放限制策略 |
300249 | 缺少 ua 字段 | 检查请求中的ua字段是否正确上报 |
300251 | 缺少 model 字段 | 检查请求中的model字段是否正确上报 |
300252 | 目标价过滤 | 请适当调整CPM目标价 |
300407 | 低转化率广告位限流 | 广告位后端转化效果差,因此填充率被限制。需根据广告位的广告数据分析流量转化效率差的具体原因,建议关注转化率、用户留存等数据,提高广告位转化效率。 |
301003 | 无合适预算 | 联系米盟进行解决 |
301005 | 自渲染广告样式,返回的广告类型不符合用户需要的广告类型,比如用户在SSP后台勾选需要图片,返回的是视频 | 在米盟开发者后台勾选图片+视频元素,最大化广告位填充 |
300254 | 非小米设备 | 检查设备是否为小米手机 |
300411 | 异常设备过滤 | 设备存在异常,请自查流量来源。如在开发测试阶段,可尝试更换测试设备解决 |
300417 | 快框架低版本过滤 | 升级快框架版本 |
300418 | 请求异常 | 建议排查请求机制 |
300419 | 当前流量存在异常,无法填充广告,请自查 | |
300504 | 快应用框架版本>=11030301的用户停止下发原生广告1.0 | 请接入原生广告2.0 |
1000 | 后端错误,调用失败 | |
1001 | 参数错误 | |
1002 | 广告单元无效 | |
1003 | 内部错误 | |
1004 | 无合适的广告 | |
1005 | 广告组件审核中 | |
1006 | 广告组件被驳回 | |
1007 | 广告能力被封禁 | |
1008 | 广告位的广告能力已关闭 | |
1009 | 广告加载超时 | |
1100 | 过于频繁调用相关的API | |
1101 | 广告在加载后,⻓时间没有展示,广告信息已过期 | |
1102 | 调用了不支持的方法 | |
1103 | 环境监测失败,如应用无权限等 | |
1104 | 网络错误 | |
1105 | 广告未加载成功 | |
1106 | 广告展示失败 | |
1107 | 后台无法调用广告能力 | 展示广告时当前快应用页面必须在前台且用户可见 |
2000 | 未知错误 | |
300601 | 请求过于频繁,触发平台填充限制 | 建议减少无效的重复请求或者适当减少瀑布流层级(建议并发请求的广告位ID控制在15个以内) |
300441 | 当前SDK版本过低,请及时升级 | 建议升级至最新版本 |
300701 | 当前流量存在异常,无法填充广告,请自查 | |
300702 | 当前流量存在异常,无法填充广告,请自查 | |
300703 | 当前流量存在异常,无法填充广告,请自查 | |
300442 | 请核对广告位类型 |
十三、后台运行限制
禁止使用。 后台运行详细用法参⻅后台运行脚本。