本文對智能投放用戶端接入主要涉及的 API 進行說明。
CdpAdvertisementService:mPaaS 中介層的
CdpAdvertisementService中封裝了智能投放組件的介面,通過調用這些介面,可實現智能投放的相關功能。ActionExecutor:本介面實現展位和廣告資訊的攔截。攔截時,用戶端將不展示相應展位以及廣告內容;不攔截時,則展示展位以及廣告內容。
Refresh:全量更新狀態。用於在使用者更換地區、使用者識別碼 等情境下重新請求廣告。
CdpAdvertisementService
/**
* Cdp廣告服務介面
*
*/
public abstract class CdpAdvertisementService extends ExternalService {
/**
* 初始化所有廣告資訊
*
* @param extInfo 擴充資訊
* @param callBack 回調
*/
public abstract void initialized(Map<String, String> extInfo, IAdGetSpaceInfoCallBack callBack);
/**
* 通過展位 ID 查詢展位,非同步callback onSuccess(SpaceInfo spaceInfo)返回查詢結果。
* 若無本機快取,則callback一次RPC查詢結果。
* 若有本機快取且未到更新時間,則callback一次本地查詢結果。
* 若有本機快取且已到更新時間,則callback一次本地查詢結果,RPC完畢後再callback一次更新的結果。
* 僅在RPC失敗時會callback onFail()介面。
*
* @param spaceCode 展位 ID,需要向投放平台申請
* @param callback 回調介面
*/
public abstract void getSpaceInfoByCode(String spaceCode, IAdGetSingleSpaceInfoCallBack callback);
/**
* 通過展位 ID查詢展位,非同步callback onSuccess(SpaceInfo spaceInfo)返回查詢結果。
* 若無本機快取,則callback一次RPC查詢結果。
* 若有本機快取且未到更新時間,則callback一次本地查詢結果。
* 若有本機快取且已到更新時間,則callback一次本地查詢結果,RPC完畢後再callback一次更新的結果。
* 僅在RPC失敗時會callback 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 list批量查詢展位,非同步onSuccess(List<SpaceInfo> adSpaceInfo)返回查詢結果。
* 若無本機快取,則callback一次RPC查詢結果。
* 若有本機快取且未到更新時間,則callback一次本地查詢結果。
* 若有本機快取且已到更新時間,則callback一次本地查詢結果,RPC完畢後再callback一次更新的結果。
* 僅在RPC失敗時會callback onFail(List<String> adSpaceCodes)介面。
*
* @param spaceCodeList 展位 ID list,需要向投放平台申請
* @param extInfo 擴充參數
* @param immediately 只返回RPC結果
* @param callback 回調介面
*/
public abstract void batchGetSpaceInfoByCode(List<String> spaceCodeList, Map<String, String> extInfo, boolean immediately, final IAdGetSpaceInfoCallBack callback);
/**
* 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
/**
* 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);
}Refresh
/**
* 全量更新狀態回調
*
*/
public interface IRefreshZoneCallBack{
/**
* 開始重新整理
*
*/
void onStart();
/**
* 結束重新整理
*/
void onEnd();
}
/**
* 當使用者更換地區、使用者id 等情境下重新請求廣告
* @since 3.0
* @param callBack
*/
public abstract void refresh(IRefreshZoneCallBack callBack);