移动开发平台 mPaaS 配置预置展位

By | 2021年4月23日

在 H5 页面上预置展位的操作,仅获取展位信息,获取方式分为 逐个获取批量获取 2 种方式。

除了获取展位信息,您也可以通过调用接口实现展位和广告信息的拦截。

关于此任务

如果您是智能投放组件的新手用户,建议您直接通过该组件的控制台(服务端)动态配置广告展位的 H5 页面。更多服务端的配置信息,查看 创建展位

逐个获取

在 H5 页面使用 getCdpSpaceInfo 可获得展位信息:

  
  1. AlipayJSBridge.call('getCdpSpaceInfo', {
  2. spaceCode: 'space-code1',
  3. extInfo: {
  4. tradeNo: '123'
  5. },
  6. immediately: false,
  7. multiCallback: true
  8. }, function (result) {
  9. console.log(result);
  10. });

其中,

  • spaceCode:展位代码,一般去后台申请。
  • extInfo:扩展信息,用 key/value 的方式。
  • immediately:BOOL值。是否不需要缓存数据直接从服务器拉取。默认是读取缓存,不需要传。
  • multiCallback: BOOL值。调用一次情况下,是否需要处理多次回调场景。
重要:如果
multiCallback 参数传 NO 或者不传,业务仅接受一次结果回调,首次进入页面在有缓存机制时广告不能按照预期展示,第二次进入该页面才能展示广告。若该参数传 YES,业务需要处理 CDP 两次回调的场景,第一次回调是缓存数据(有缓存前提下),第二次回调是 RPC 返回的结果。

批量获取

在 H5 页面使用 getCdpSpaceInfos 可获得展位信息:

  
  1. AlipayJSBridge.call('getCdpSpaceInfos', {
  2. spaceCodes: ['space-code1', 'space-code2'],
  3. extInfo: {
  4. tradeNo: '123'
  5. },
  6. immediately: false,
  7. multiCallback: true
  8. }, function (result) {
  9. console.log(result);
  10. });
  11. /**
  12. * Cdp广告服务接口
  13. *
  14. */
  15. public abstract class CdpAdvertisementService extends ExternalService {
  16. /**
  17. * 初始化所有广告信息
  18. *
  19. * @param extInfo 扩展信息
  20. * @param callBack 回调
  21. */
  22. public abstract void initialized(Map<String, String> extInfo, IAdGetSpaceInfoCallBack callBack);
  23. /**
  24. * 通过展位 ID查询展位,异步callback onSuccess(SpaceInfo spaceInfo)返回查询结果。
  25. * 若无本地缓存,则callback一次RPC查询结果。
  26. * 若有本地缓存且未到更新时间,则callback一次本地查询结果。
  27. * 若有本地缓存且已到更新时间,则callback一次本地查询结果,RPC完毕后再callback一次更新的结果。
  28. * 仅在RPC失败时会callback onFail()接口。
  29. *
  30. * @param spaceCode 展位 ID,需要向投放平台申请
  31. * @param callback 回调接口
  32. */
  33. public abstract void getSpaceInfoByCode(String spaceCode, IAdGetSingleSpaceInfoCallBack callback);
  34. /**
  35. * 通过展位 ID查询展位,异步callback onSuccess(SpaceInfo spaceInfo)返回查询结果。
  36. * 若无本地缓存,则callback一次RPC查询结果。
  37. * 若有本地缓存且未到更新时间,则callback一次本地查询结果。
  38. * 若有本地缓存且已到更新时间,则callback一次本地查询结果,RPC完毕后再callback一次更新的结果。
  39. * 仅在RPC失败时会callback onFail()接口。
  40. *
  41. * @param spaceCode 展位 ID,需要向投放平台申请
  42. * @param extInfo 扩展参数
  43. * @param immediately 只返回RPC结果
  44. * @param callback 回调接口
  45. */
  46. public abstract void getSpaceInfoByCode(String spaceCode, Map<String, String> extInfo, boolean immediately, final IAdGetSingleSpaceInfoCallBack callback);
  47. /**
  48. * 通过展位 ID list批量查询展位,异步onSuccess(List<SpaceInfo> adSpaceInfo)返回查询结果。
  49. * 若无本地缓存,则callback一次RPC查询结果。
  50. * 若有本地缓存且未到更新时间,则callback一次本地查询结果。
  51. * 若有本地缓存且已到更新时间,则callback一次本地查询结果,RPC完毕后再callback一次更新的结果。
  52. * 仅在RPC失败时会callback onFail(List<String> adSpaceCodes)接口。
  53. *
  54. * @param spaceCodeList 展位 ID list,需要向投放平台申请
  55. * @param extInfo 扩展参数
  56. * @param immediately 只返回RPC结果
  57. * @param callback 回调接口
  58. */
  59. public abstract void batchGetSpaceInfoByCode(List<String> spaceCodeList, Map<String, String> extInfo, boolean immediately, final IAdGetSpaceInfoCallBack callback);
  60. /**
  61. * TODO 预留H5接口
  62. * 查询并展示广告,目前仅供AdH5Plugin调用
  63. *
  64. * @param activity 当前页面
  65. * @param parentView 父控件
  66. * @param url 地址
  67. * @param h5Param 参数
  68. */
  69. public abstract void checkAndShowAdInH5(final Activity activity, ViewGroup parentView, String url, String h5Param);
  70. /**
  71. * 移除指定spaceCode的广告view
  72. *
  73. * @param activity 需要移除公告的页面
  74. * @param spaceCode 广告ID
  75. */
  76. public abstract void removeAdvertisement(Activity activity, String spaceCode);
  77. /**
  78. * 获取action执行器,没有设置则返回null
  79. *
  80. * @return action执行器
  81. */
  82. public abstract ActionExecutor getActionExecutor();
  83. /**
  84. * 设置action执行器
  85. *
  86. * @param executor action执行器
  87. */
  88. public abstract void setActionExecutor(ActionExecutor executor);
  89. /**
  90. * 设置用户id
  91. *
  92. * @param userId 用户id
  93. */
  94. public abstract void setUserId(String userId);
  95. /**
  96. * 获取用户id
  97. *
  98. * @return 用户id
  99. */
  100. public abstract String getUserId();
  101. /**
  102. * 获取广告展位的回调类
  103. */
  104. public interface IAdGetSpaceInfoCallBack {
  105. /**
  106. * 获取展位信息成功
  107. *
  108. * @param adSpaceInfo 展位列表
  109. */
  110. void onSuccess(List<SpaceInfo> adSpaceInfo);
  111. /**
  112. * 获取展位信息失败
  113. *
  114. * @param adSpaceCodes 展位请求code列表
  115. */
  116. void onFail(List<String> adSpaceCodes);
  117. }
  118. /**
  119. * 获取单个展位的回调类
  120. */
  121. public interface IAdGetSingleSpaceInfoCallBack {
  122. /**
  123. * 获取展位信息成功
  124. *
  125. * @param spaceInfo 展位信息
  126. */
  127. void onSuccess(SpaceInfo spaceInfo);
  128. /**
  129. * 失败
  130. */
  131. void onFail();
  132. }
  133. }

ActionExecutor

ActionExecutor(Action 处理器)实现展位和广告信息的拦截。拦截时,客户端将不展示相应展位以及广告内容;不拦截时,则展示展位以及广告内容。

  
  1. /**
  2. * Action 处理器
  3. *
  4. */
  5. public interface ActionExecutor {
  6. /**
  7. * 是否拦截 Action
  8. * @param spaceInfo 展位信息
  9. * @param spaceObjectInfo 广告信息
  10. * @param url action url
  11. * @return true表示拦截该action,false表示不拦截
  12. */
  13. boolean interceptAction(final SpaceInfo spaceInfo, final SpaceObjectInfo spaceObjectInfo, final String url);
  14. /**
  15. * 执行Action
  16. *
  17. * @param spaceInfo 展位信息
  18. * @param spaceObjectInfo 广告信息
  19. * @param url action url
  20. * @return 1 表示执行成功,其他值表示异常
  21. */
  22. int executeAction(final SpaceInfo spaceInfo, final SpaceObjectInfo spaceObjectInfo, final String url);
  23. }

请关注公众号获取更多资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注