全部产品
云市场
云游戏

设置 AP 数据

更新时间:2020-04-13 16:05:52

setAPDataStorage 接口用于保存一个字符串到客户端统一存储,字符串长度不得超过 200×1024。

说明
  • 底层存储服务组件在 iOS 和 Android 中实现不一致。Android 统一存储组件不支持 type=user 属性,为了与前端接口一致,当设置 type=user 时,Android 底层会设置为 key=key + “_” +MD5(userId + userId + userId) 并进行存储。业务用客户端取的时候也要对 key 做相应处理。
  • 在 10.1.60 及以下版本的基线中,客户端需要做适配工作才能使接口能够获得 userId,否则存储接口将无法按 userId 区分存储,参见下方 实现 H5LoginProvider 接口
  • 在 10.1.68 及以上版本的基线中,userId 默认使用 MPLogger.setUserId 中的值,若实现 H5LoginProvider,则取用 H5LoginProvider。

实现 H5LoginProvider 接口

Android

实现 H5LoginProvider 接口,并将实例类设置到 H5ProviderManager 中。

代码示例

  1. package com.mpaas.nebula.provider;
  2. import android.os.Bundle;
  3. import com.alipay.mobile.common.logging.api.LoggerFactory;
  4. import com.alipay.mobile.nebula.provider.H5LoginProvider;
  5. public class H5LoginProviderImpl implements H5LoginProvider {
  6. // 其他代码省略
  7. @Override
  8. public String getUserId() {
  9. // 此方法返回 userId 即可
  10. return LoggerFactory.getLogContext().getUserId();
  11. }
  12. // 其他代码省略
  13. }

设置 H5LoginProvider

  1. H5Utils.setProvider(H5LoginProvider.class.getName(), new H5LoginProviderImpl());

setAPDataStorage 接口的使用方法

  1. AlipayJSBridge.call('setAPDataStorage', {
  2. type: "common",
  3. business: "customBusinessKey",
  4. key: "customKey",
  5. value: "customValue"
  6. }, function(result) {
  7. alert(JSON.stringify(result));
  8. });

代码示例

  1. <button id="J_saveDataBtn" class="btn">保存数据</button>
  2. <button id="J_getDataBtn" class="btn">查看数据</button>
  3. <button id="J_removeDataBtn" class="btn">删除数据</button>
  4. <script>
  5. function ready(callback) {
  6. // 如果 jsbridge 已经注入则直接调用
  7. if (window.AlipayJSBridge) {
  8. callback && callback();
  9. } else {
  10. // 如果没有注入则监听注入的事件
  11. document.addEventListener('AlipayJSBridgeReady', callback, false);
  12. }
  13. }
  14. ready(function() {
  15. document.querySelector('#J_saveDataBtn').addEventListener('click', function(e) {
  16. AlipayJSBridge.call('setAPDataStorage', {
  17. type: "common",
  18. business: "customBusinessKey",
  19. key: "customKey",
  20. value: "customValue"
  21. }, function(result) {
  22. alert(JSON.stringify(result));
  23. });
  24. }, false);
  25. document.querySelector('#J_getDataBtn').addEventListener('click', function(e) {
  26. AlipayJSBridge.call('getAPDataStorage', {
  27. type: "common",
  28. business: "customBusinessKey",
  29. key: "customKey"
  30. }, function(result) {
  31. alert(JSON.stringify(result));
  32. });
  33. }, false);
  34. document.querySelector('#J_removeDataBtn').addEventListener('click', function(e) {
  35. AlipayJSBridge.call('removeAPDataStorage', {
  36. type: "common",
  37. business: "customBusinessKey",
  38. key: "customKey"
  39. }, function(result) {
  40. alert(JSON.stringify(result));
  41. });
  42. }, false);
  43. }, false);
  44. </script>

API

  1. AlipayJSBridge.call('setAPDataStorage', {
  2. type, business, key, value
  3. });

入参

名称 类型 描述 必选 默认值
type string (user/common) 用户维度存储还是公共存储,默认值 common N “common”
business string 自定义的业务标识,可与相应的客户端存取代码约定,默认值为:NebulaBiz。
(在 Android 中,该业务标识与创建 APSharedPreferences 时所传入的 GROUD_ID 对应)
N “”
key string 自定义数据的 key Y “”
value string 需要存储的值,仅支持字符串类型。JSON 数据需要先字符串化 Y “”

出参

回调函数带入的参数 result: {success}

名称 类型 描述
success bool 是否保存成功

错误码描述

错误码 描述
11 字符串长度超限