mPaaS H5 コンテナ上の H5 ページの広告スペース情報を取得します。単一の広告スペースを取得することも、複数の広告スペースをバッチで取得することもできます。表示前に広告スペースと広告情報をインターセプトするには、ActionExecutor を使用します。
始める前に
スマート配信コンポーネントを初めて使用する場合は、コンポーネントのサーバーサイドコンソールから直接 H5 広告スペースを設定します。詳細については、「広告スペースの作成」をご参照ください。
単一の広告スペースの取得
H5 ページで getCdpSpaceInfo を呼び出して、広告スペース情報を取得します:
AlipayJSBridge.call('getCdpSpaceInfo', {
spaceCode: 'space-code1',
extInfo: {
tradeNo: '123'
},
immediately: false,
multiCallback: true
}, function (result) {
console.log(result);
});
パラメーター:
spaceCode:広告スペースコード。このコードはバックエンドから取得します。extInfo:キーと値の形式の拡張情報。immediately:オプションのブール値パラメーター。trueに設定すると、キャッシュをバイパスしてサーバーから直接データをフェッチします。デフォルトはfalseです。multiCallback:trueに設定すると、呼び出しごとに 2 つの連続したコールバックを受信します。falseに設定すると、コールバックは 1 つだけ受信します。
multiCallback が false であるか、または省略された場合、サービスロジックは単一の結果コールバックを受信します。キャッシュメカニズムが有効な場合、ユーザーの初回アクセス時に広告が表示されず、2 回目のアクセス時にのみ表示されることがあります。multiCallback が true の場合、スマート配信は 2 つのコールバックをトリガーします。最初のコールバックはキャッシュデータ (利用可能な場合) を返し、2 番目のコールバックはリモートプロシージャコール (RPC) の結果を返します。
広告スペースのバッチ取得
H5 ページで getCdpSpaceInfos を呼び出して、1 回のリクエストで複数の広告スペースを取得します:
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 クエリの結果が 1 つのコールバックで返されます。
* ローカルキャッシュが存在し、有効期限が切れていない場合、ローカルクエリの結果が 1 つのコールバックで返されます。
* ローカルキャッシュが存在するが有効期限が切れている場合、ローカルクエリの結果が 1 つのコールバックで返され、RPC の完了後にもう 1 つのコールバックで更新された結果が返されます。
* onFail() インターフェイスは、RPC が失敗した場合にのみ呼び出されます。
*
* @param spaceCode 広告スペース ID。配信プラットフォームにリクエストして取得します。
* @param callback コールバックインターフェイス。
*/
public abstract void getSpaceInfoByCode(String spaceCode, IAdGetSingleSpaceInfoCallBack callback);
/**
* ID で広告スペースをクエリします。クエリ結果は、onSuccess(SpaceInfo spaceInfo) コールバックを介して非同期に返されます。
* ローカルキャッシュが存在しない場合、RPC クエリの結果が 1 つのコールバックで返されます。
* ローカルキャッシュが存在し、有効期限が切れていない場合、ローカルクエリの結果が 1 つのコールバックで返されます。
* ローカルキャッシュが存在するが有効期限が切れている場合、ローカルクエリの結果が 1 つのコールバックで返され、RPC の完了後にもう 1 つのコールバックで更新された結果が返されます。
* onFail() インターフェイスは、RPC が失敗した場合にのみ呼び出されます。
*
* @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 クエリの結果が 1 つのコールバックで返されます。
* ローカルキャッシュが存在し、有効期限が切れていない場合、ローカルクエリの結果が 1 つのコールバックで返されます。
* ローカルキャッシュが存在するが有効期限が切れている場合、ローカルクエリの結果が 1 つのコールバックで返され、RPC の完了後にもう 1 つのコールバックで更新された結果が返されます。
* onFail(List<String> adSpaceCodes) インターフェイスは、RPC が失敗した場合にのみ呼び出されます。
*
* @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 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 は、表示前に広告スペースと広告情報をインターセプトします。interceptAction が true を返すと、広告スペースとそのコンテンツが抑制されます。false を返すと、クライアントはそれらを通常どおり表示します。
/**
* アクションハンドラー
*
*/
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);
}