在基於 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 廣告識別碼
*/
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);
/**
* 設定使用者識別碼
*
* @param userId 使用者識別碼
*/
public abstract void setUserId(String userId);
/**
* 擷取使用者識別碼
*
* @return 使用者識別碼
*/
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);
}