在基于 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);
}
文檔內容是否對您有幫助?