全部產品
Search
文件中心

Mobile Platform as a Service:配置預置展位

更新時間:Jul 25, 2024

在基於 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);
}