HTML5 ページでのプリセットブースの操作には、ブース情報の取得のみが含まれます。取得方法は、個別取得と一括取得です。
ブース情報の取得に加えて、API 操作を呼び出すことで、ブース情報と広告情報をインターセプトすることもできます。
このタスクについて
初心者の方は、mPaaS コンソール(サーバー側)で iOS ページの広告ブースを動的に設定することをお勧めします。詳細については、「ブースを作成する」をご参照ください。
個別取得
getCdpSpaceInfo を HTML5 ページで呼び出して、ブース情報を取得します。
AlipayJSBridge.call('getCdpSpaceInfo', {
spaceCode: 'space-code1',
extInfo: {
tradeNo: '123'
},
immediately: false,
multiCallback: true
}, function (result) {
console.log(result);
});各項目の説明:
spaceCode: ブースコード。バックエンドに申請します。extInfo: 拡張情報。キーと値の形式です。immediately: ブール値。キャッシュデータが不要で、サーバーから直接データを取得するかどうかを示します。デフォルトでは、データはキャッシュから読み取られ、転送する必要はありません。multiCallback: ブール値。API を 1 回呼び出したときに複数回のコールバックが必要かどうかを示します。
multiCallback が NO に設定されているか、設定されていない場合、コールバックは 1 回だけ実行されます。キャッシュメカニズムが存在する場合、ページを初めて開いたときにスケジュールどおりに広告が表示されず、次にページを開いたときに表示されます。このパラメータを YES に設定した場合は、MCDP コールバックを 2 回実行する必要があります。最初のコールバックはキャッシュデータ(キャッシュがある場合)、2 番目のコールバックは RPC から返された結果です。
一括取得
getCdpSpaceInfos を HTML5 ページで呼び出して、ブース情報を取得します。
AlipayJSBridge.call('getCdpSpaceInfos', {
spaceCodes: ['space-code1', 'space-code2'],
extInfo: {
tradeNo: '123'
},
immediately: false,
multiCallback: true
}, function (result) {
console.log(result);
});
/**
* MCDP 広告サービス API
*
*/
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 後に更新結果がコールバックされます。
* onFail() API は、RPC が失敗した場合にのみコールバックされます。
*
* @param spaceCode ブース ID。広告配信プラットフォームに申請する必要があります。
* @param callback コールバック API。
*/
public abstract void getSpaceInfoByCode(String spaceCode, IAdGetSingleSpaceInfoCallBack callback);
/**
* ブース ID でブースを照会します。非同期で onSuccess(SpaceInfo spaceInfo) をコールバックして、クエリ結果を返します。
* ローカルキャッシュが存在しない場合は、RPC クエリ結果がコールバックされます。
* ローカルキャッシュが存在し、更新時刻より前の場合は、ローカルクエリ結果がコールバックされます。
* ローカルキャッシュが存在し、更新時刻より前の場合は、ローカルクエリ結果がコールバックされ、その後 RPC 後に更新結果がコールバックされます。
* onFail() API は、RPC が失敗した場合にのみコールバックされます。
*
* @param spaceCode ブース ID。広告配信プラットフォームに申請する必要があります。
* @param extInfo 拡張パラメータ。
* @param immediately RPC 結果のみを返します。
* @param callback コールバック API。
*/
public abstract void getSpaceInfoByCode(String spaceCode, Map<String, String> extInfo, boolean immediately, final IAdGetSingleSpaceInfoCallBack callback);
/**
* ブース ID リストに基づいてブースを一括で照会します。非同期で onSuccess(List<SpaceInfo> adSpaceInfo) をコールバックして、クエリ結果を返します。
* ローカルキャッシュが存在しない場合は、RPC クエリ結果がコールバックされます。
* ローカルキャッシュが存在し、更新時刻より前の場合は、ローカルクエリ結果がコールバックされます。
* ローカルキャッシュが存在し、更新時刻より前の場合は、ローカルクエリ結果がコールバックされ、その後 RPC 後に更新結果がコールバックされます。
* RPC が失敗した場合にのみ、onFail(ListString adSpaceCodes) API をコールバックします。
*
* @param spaceCodeList ブース ID リスト。広告配信プラットフォームに申請する必要があります。
* @param extInfo 拡張パラメータ。
* @param immediately RPC 結果のみを返します。
* @param callback コールバック API。
*/
public abstract void batchGetSpaceInfoByCode(List<String> spaceCodeList, Map<String, String> extInfo, boolean immediately, final IAdGetSpaceInfoCallBack callback);
/**
* TODO: 予約済み H5 API。
* 広告を照会して表示します。AdH5Plugin によってのみ呼び出されます。
*
* @param activity 現在のページ。
* @param parentView 親コントロール。
* @param url URL。
* @param h5Param パラメータ。
*/
public abstract void checkAndShowAdInH5(final Activity activity, ViewGroup parentView, String url, String h5Param);
/**
* 指定された spaceCode の広告ビューを削除します。
*
* @param activity アナウンスを削除するページ。
* @param spaceCode 広告 ID
*/
public abstract void removeAdvertisement(Activity activity, String spaceCode);
/**
* アクションエグゼキュータを取得します。このパラメータが設定されていない場合は、null が返されます。
*
* @return アクションエグゼキュータ。
*/
public abstract ActionExecutor getActionExecutor();
/**
* アクションエグゼキュータを設定します。
*
* @param executor アクションエグゼキュータ。
*/
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 ブースリクエストのコードリスト。
*/
void onFail(List<String> adSpaceCodes);
}
/**
* 単一ブースのコールバッククラスを取得します。
*/
public interface IAdGetSingleSpaceInfoCallBack {
/**
* ブース情報の取得に成功しました。
*
* @param spaceInfo ブース情報。
*/
void onSuccess(SpaceInfo spaceInfo);
/**
* 失敗
*/
void onFail();
}
}ActionExecutor
ActionExecutor(アクションエグゼキュータ)は、ブースと広告情報のインターセプトを実装します。クライアントは、インターセプト後に対応するブースと広告コンテンツを表示せず、インターセプトなしでブースと広告コンテンツを表示します。
/**
* アクションエグゼキュータ
*
*/
public interface ActionExecutor {
/**
* アクションをインターセプトするかどうか
* @param spaceInfo ブース情報。
* @param spaceObjectInfo 広告情報。
* @param url アクション URL。
* @return 値 true はアクションをインターセプトすることを示し、false はそれ以外を示します。
*/
boolean interceptAction(final SpaceInfo spaceInfo, final SpaceObjectInfo spaceObjectInfo, final String url);
/**
* アクションを実行します。
*
* @param spaceInfo ブース情報。
* @param spaceObjectInfo 広告情報。
* @param url アクション URL。
* @return 値 1 は成功を示し、その他の値は例外を示します。
*/
int executeAction(final SpaceInfo spaceInfo, final SpaceObjectInfo spaceObjectInfo, final String url);
}