开发者自渲染
自渲染广告接入方式参考下方内容。
自渲染简介
开发者可以使用自渲染为应用打造自定义的广告布局样式。
权限等级:开放
适用场景:您可自行定义广告布局样式。
接入步骤
整体接入步骤如下:
- 安装 SDK 并初始化;
- 请求自渲染广告,拿到自渲染广告实例;
- 引入
ylh-ad
组件,并为组件添加ad-id
等属性和方法; - 按需引入
ylh-ad-clickable
,ylh-ad-video
等组件,并为组件添加ad-id
等属性和方法;
1. 安装 SDK 并初始化
按照快应用 SDK 接入文档操作,完成 SDK 接入和初始化。
2. 请求自渲染广告,拿到自渲染广告实例
请求自渲染广告,主要涉及2个方法:
onYlhReady
loadFeedAd
建议在 onInit
周期中执行 onYlhReady
,并在 onYlhReady
内调用 loadFeedAd
:
export default {
onInit() {
// 调用 onYlhReady,等待 SDK ready
this.$app.$def.ylh_sdk.onYlhReady(() => {
const params = {
count: 1,
appId: '1200540367',
placementId: '4035655463419657',
recommendation: 0,
}
// 调用 loadFeedAd 加载广告数据
this.$app.$def.ylh_sdk.loadFeedAd(params).then(res => {
this.feedAd = res[0]
this.adId = feedAd.id
console.log('FeedAd广告接口请求成功', this.feedAd, this.feedAd.getECPM())
}).catch(err => {
console.log('err', { err })
})
})
},
}
loadFeedAd(params)
参数说明:
名称 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
placementId |
string |
否 | - | 广告位ID |
count |
number |
否 | 1 | 指定期望加载的广告数量。取值范围为1-10 |
recommendation |
number |
否 | - | 是否关闭广告个性化推荐 赋值不等于1: 开启推荐; 赋值等于1: 关闭推荐; |
注意:
onYlhReady
接收函数作为参数,为避免this
指向错误,该回调函数应为箭头函数loadFeedAd
需要在onYlhReady
回调函数内执行,否者可能找不到loadFeedAd
方法loadFeedAd
请求的返回结果,为自渲染广告实例(或包含多个实例的数组),其属性和方法参考下文
广告实例属性
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
id |
string |
- | 广告的唯一标识 |
patternType |
string |
- | 广告样式: NATIVE_NORMAL:常规大图广告; NATIVE_3IMAGE:三小图广告; ... |
title |
string |
- | 广告的标题 |
desc |
string |
- | 广告的描述 |
avatar |
string |
- | 广告主头像 URL |
adLogo |
string |
- | 广告的logo |
img |
string |
- | 广告大图 URL |
imgs |
array |
- | 数组length = 3,每一项(可能为空)为string类型。partternType为三小图时,该字段用于存放图片地址 |
imgWidth |
int |
- | 广告大图 宽度 |
imgHeight |
int |
- | 广告大图 高度 |
hasVideo |
boolean |
- | 广告是否包含video素材 |
videoWidth |
int |
- | video素材宽度 |
videoHeight |
int |
- | video素材高度 |
videoDuration |
int |
- | video素材播放时长, 单位ms |
isApp |
boolean |
- | 当前广告是否为下载类App广告 |
btnText |
string |
- | 按钮默认文案。App类广告位“立即下载”,其他广告为“查看详情” |
appName |
string |
- | 应用的名称 |
author |
string |
- | 应用开发者名称 |
appVersion |
string |
- | 应用版本信息 |
pkgSizeBytes |
int |
- | 应用apk包的大小,单位byte |
permissionsUrl |
string |
- | 应用权限信息url |
privacyAgreement |
string |
- | 应用隐私政策url |
descriptionUrl |
string |
- | 应用功能介绍url(仅在下载类App广告,即isApp为true时有值) |
广告实例方法
方法名 | 说明 |
---|---|
isValid() |
展示广告前判断广告是否有效 |
getECPM() |
获取广告ecpm,单位:分 |
3. 引入 ylh-ad
组件,并为组件添加 ad-id
等属性和方法
loadFeedAd
方法获取的广告实例 id
值,需要作为属性(ad-id
)传递会给 ylh-ad
等组件。ylh-ad
为自定义组件,其内部封装了广告曝光处理、点击处理、反作弊等功能。为避免消耗异常,请务必按照文档接入。接入方式如下:
<import name='ylh-ad' src='ylh-quick-app-ad-sdk/ads/YlhAd'></import>
<template>
<div class='wrapper'>
<ylh-ad
class='ad-wrapper'
ad-id='{{ adId }}'
if='{{ adId }}'
on-ad-click='onAdClick'
on-ad-expose='onAdExpose'
on-app-status-change='onAppStatusChange'
>
<div>...</div>
</ylh-ad>
</div>
</template>
ylh-ad
组件属性
名称 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
ad-id |
string |
是 | - | 自渲染广告实例 id |
ylh-ad
组件方法
方法名 | 回调参数 | 说明 |
---|---|---|
ad-click |
- | 广告被点击时执行(如何指定元素可点击,参见 ylh-ad-clickable 组件) |
ad-expose |
- | 广告曝光时执行 |
app-status-change |
{status: number, progress: number} |
App类广告状态变化时执行。status :0 :未下载且未安装;1 :已安装;4 :正在下载;8 :下载完成,待安装;16 :下载失败;progress :已经下载的百分比值,范围为:0-100 |
注意:
ad-id
必传,且不支持动态修改- 同一个
ad-id
仅能传递给一个ylh-ad
组件 - 必须在拿到
ad-id
后,再渲染ylh-ad
组件
4. 按需引入 ylh-ad-clickable
,ylh-ad-video
等组件
ylh-ad-clickable
,ylh-ad-video
等自定义组件,为 ylh-ad
提供了额外功能,可按需引入。
<import name='ylh-ad-clickable-area' src='ylh-quick-app-ad-sdk/ads/YlhAdClickableArea'></import>
<import name='ylh-ad-video' src='ylh-quick-app-ad-sdk/ads/YlhAdVideo'></import>
<template>
<div class='wrapper'>
<ylh-ad
class='ad-wrapper'
ad-id='{{ adId }}'
if='{{ adId }}'
on-ad-click='onAdClick'
on-ad-expose='onAdExpose'
on-app-status-change='onAppStatusChange'
>
<ylh-ad-clickable-area ad-id='{{ adId }}'>
<div class='ad-bottom'>
<image src='{{adInfo.adLogo}}' class='ams-logo'></image>
</div>
</ylh-ad-clickable-area>
<ylh-ad-video
class='ylh-ad-video-container'
ad-id='{{ adId }}'
on-prepared='onVideoCallback("onPrepared")'
on-start='onVideoCallback("onStart")'
on-pause='onVideoCallback("onPause")'
on-finish='onVideoCallback("onFinish")'
on-error='onVideoCallback("onError")'
on-videoready='onVideoCallback(videoready)'
>
</ylh-ad-video>
</ylh-ad>
</div>
</template>
ylh-ad-clickable-area
组件
被 ylh-ad-clickable-area
包裹的元素,在该元素被点击后,SDK内部会触发广告点击事件,同时会执行 ylh-ad
组件里开发者传递的 ad-click
回调方法。
ylh-ad-clickable-area
组件属性
名称 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
ad-id |
string |
是 | - | 自渲染广告实例 id |
注意:
ad-id
必传,且不支持动态修改ad-id
的值,必须跟上层ylh-ad
组件的ad-id
保持一致
ylh-ad-video
组件
ylh-ad-video
为视频组件。视频预览海报 poster
和视频 src
,在 ylh-ad-video
内部会进行自动赋值。
ylh-ad-video
组件属性
名称 | 类型 | 是否必填 | 默认值 | 说明 |
---|---|---|---|---|
ad-id |
string |
是 | - | 自渲染广告实例 id |
muted |
boolean |
否 | 视频是否静音播放 | |
autoplay |
boolean |
否 | 视频是否自动播放 | |
videoWidth |
string |
否 | auto |
视频宽度 |
videoHeight |
string |
否 | auto |
视频高度 |
ylh-ad-video
组件方法
方法名 | 参数 | 说明 |
---|---|---|
prepared |
{duration: number} |
视频连接成功时触发 |
start |
- | 开始播放时触发 |
pause |
- | 暂停时触发 |
finish |
- | 播放结束时触发 |
error |
- | 播放失败时触发 |
videoready |
{$video: video实例} |
video实例准备好时触发,可在此回调中拿到video实例 |
在 videoready
回调中拿到video实例后,可按需执行video实例的方法。
实例方法:
export default {
onVideoCallback(type, evt) {
console.log('callback: onVideoCallback', type, evt.detail);
if (type === 'videoready') {
this.$video = evt.detail.video;
}
setTimeout(()=> {
this.$video && this.$video.start();
});
},
}
注意:
ad-id
必传,且不支持动态修改ad-id
的值,必须跟上层ylh-ad
组件的ad-id
保持一致