在基于 mPaaS H5 容器的 H5 页面上配置预置展位。在 H5 页面上预置展位的操作,仅获取展位信息,获取方式分为逐个获取和批量获取两种方式。
除了获取展位信息,您也可以通过调用接口实现展位和广告信息的拦截。
关于此任务
如果您是智能投放组件的新手用户,建议您直接通过该组件的控制台(服务端)动态配置广告展位的 H5 页面。更多服务端的配置信息,查看 创建展位。
逐个获取
在 H5 页面使用 getCdpSpaceInfo
可以获得展位信息:
AlipayJSBridge.call('getCdpSpaceInfo', {
spaceCode: 'space-code1',
extInfo: {
tradeNo: '123'
},
immediately: false,
multiCallback: true
}, function (result) {
console.log(result);
});
其中:
spaceCode
:展位代码,一般在后台申请。extInfo
:扩展信息,用 key/value 的方式。immediately
:Bool 值。是否不需要缓存数据直接从服务器拉取。默认为读取缓存,不需要传。multiCallback
: Bool 值。调用一次情况下,是否需要处理多次回调场景。
说明
如果 multiCallback
参数传 NO 或者不传,业务仅接受一次结果回调,首次进入页面在有缓存机制时广告不能按照预期展示,第二次进入该页面才能展示广告。若该参数传 YES,业务需要处理智能投放两次回调的场景,第一次回调是缓存数据(有缓存前提下),第二次回调是 RPC 返回的结果。
批量获取
在 H5 页面使用 getCdpSpaceInfos
可获得展位信息:
AlipayJSBridge.call('getCdpSpaceInfos', {
spaceCodes: ['space-code1', 'space-code2'],
extInfo: {
tradeNo: '123'
},
immediately: false,
multiCallback: true
}, function (result) {
console.log(result);
});
/**
* Cdp广告服务接口
*
*/
public abstract class CdpAdvertisementService extends ExternalService {
/**
* 初始化所有广告信息
*
* @param extInfo 扩展信息
* @param callBack 回调
*/
public abstract void initialized(Map<String, String> extInfo, IAdGetSpaceInfoCallBack callBack);
/**
* 通过展位 ID 查询展位,异步回调 onSuccess(SpaceInfo spaceInfo)返回查询结果。
* 若无本地缓存,则回调一次 RPC 查询结果。
* 若有本地缓存且未到更新时间,则回调一次本地查询结果。
* 若有本地缓存且已到更新时间,则回调一次本地查询结果,RPC 完毕后再回调一次更新的结果。
* 仅在 RPC 失败时会回调 onFail()接口。
*
* @param spaceCode 展位 ID,需要向投放平台申请
* @param callback 回调接口
*/
public abstract void getSpaceInfoByCode(String spaceCode, IAdGetSingleSpaceInfoCallBack callback);
/**
* 通过展位 ID 查询展位,异步回调 onSuccess(SpaceInfo spaceInfo) 返回查询结果。
* 若无本地缓存,则回调一次 RPC 查询结果。
* 若有本地缓存且未到更新时间,则回调一次本地查询结果。
* 若有本地缓存且已到更新时间,则回调一次本地查询结果,RPC 完毕后再回调一次更新的结果。
* 仅在 RPC 失败时会回调 onFail()接口。
*
* @param spaceCode 展位 ID,需要向投放平台申请
* @param extInfo 扩展参数
* @param immediately 只返回 RPC 结果
* @param callback 回调接口
*/
public abstract void getSpaceInfoByCode(String spaceCode, Map<String, String> extInfo, boolean immediately, final IAdGetSingleSpaceInfoCallBack callback);
/**
* 通过展位 ID 列表批量查询展位,异步 onSuccess(List<SpaceInfo> adSpaceInfo) 返回查询结果。
* 若无本地缓存,则回调一次 RPC 查询结果。
* 若有本地缓存且未到更新时间,则回调一次本地查询结果。
* 若有本地缓存且已到更新时间,则回调一次本地查询结果,RPC 完毕后再回调一次更新的结果。
* 仅在 RPC 失败时会回调 onFail(List<String> adSpaceCodes)接口。
*
* @param spaceCodeList 展位 ID 列表,需要向投放平台申请
* @param extInfo 扩展参数
* @param immediately 只返回 RPC 结果
* @param callback 回调接口
*/
public abstract void batchGetSpaceInfoByCode(List<String> spaceCodeList, Map<String, String> extInfo, boolean immediately, final IAdGetSpaceInfoCallBack callback);
/**
* TODO 预留 H5 接口
* 查询并展示广告,目前仅供 AdH5Plugin 调用
*
* @param activity 当前页面
* @param parentView 父控件
* @param url 地址
* @param h5Param 参数
*/
public abstract void checkAndShowAdInH5(final Activity activity, ViewGroup parentView, String url, String h5Param);
/**
* 移除指定 spaceCode 的广告 view
*
* @param activity 需要移除公告的页面
* @param spaceCode 广告 ID
*/
public abstract void removeAdvertisement(Activity activity, String spaceCode);
/**
* 获取 action 执行器,没有设置则返回 null
*
* @return action 执行器
*/
public abstract ActionExecutor getActionExecutor();
/**
* 设置 action 执行器
*
* @param executor action 执行器
*/
public abstract void setActionExecutor(ActionExecutor executor);
/**
* 设置用户 ID
*
* @param userId 用户 ID
*/
public abstract void setUserId(String userId);
/**
* 获取用户 ID
*
* @return 用户 ID
*/
public abstract String getUserId();
/**
* 获取广告展位的回调类
*/
public interface IAdGetSpaceInfoCallBack {
/**
* 获取展位信息成功
*
* @param adSpaceInfo 展位列表
*/
void onSuccess(List<SpaceInfo> adSpaceInfo);
/**
* 获取展位信息失败
*
* @param adSpaceCodes 展位请求code列表
*/
void onFail(List<String> adSpaceCodes);
}
/**
* 获取单个展位的回调类
*/
public interface IAdGetSingleSpaceInfoCallBack {
/**
* 获取展位信息成功
*
* @param spaceInfo 展位信息
*/
void onSuccess(SpaceInfo spaceInfo);
/**
* 失败
*/
void onFail();
}
}
ActionExecutor
ActionExecutor(Action 处理器)实现展位和广告信息的拦截。拦截时,客户端将不展示相应展位以及广告内容;不拦截时,则展示展位以及广告内容。
/**
* Action 处理器
*
*/
public interface ActionExecutor {
/**
* 是否拦截 Action
* @param spaceInfo 展位信息
* @param spaceObjectInfo 广告信息
* @param url action url
* @return true表示拦截该 action,false 表示不拦截
*/
boolean interceptAction(final SpaceInfo spaceInfo, final SpaceObjectInfo spaceObjectInfo, final String url);
/**
* 执行Action
*
* @param spaceInfo 展位信息
* @param spaceObjectInfo 广告信息
* @param url action url
* @return 1 表示执行成功,其他值表示异常
*/
int executeAction(final SpaceInfo spaceInfo, final SpaceObjectInfo spaceObjectInfo, final String url);
}