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
中。
代碼示例
package com.mpaas.nebula.provider;
import android.os.Bundle;
import com.alipay.mobile.common.logging.api.LoggerFactory;
import com.alipay.mobile.nebula.provider.H5LoginProvider;
public class H5LoginProviderImpl implements H5LoginProvider {
// 其他代碼省略
@Override
public String getUserId() {
// 此方法返回 userId 即可
return LoggerFactory.getLogContext().getUserId();
}
// 其他代碼省略
}
設置 H5LoginProvider
H5Utils.setProvider(H5LoginProvider.class.getName(), new H5LoginProviderImpl());
setAPDataStorage 接口的使用方法
AlipayJSBridge.call('setAPDataStorage', {
type: "common",
business: "customBusinessKey",
key: "customKey",
value: "customValue"
}, function(result) {
alert(JSON.stringify(result));
});
代碼示例
<button id="J_saveDataBtn" class="btn">保存數據</button>
<button id="J_getDataBtn" class="btn">查看數據</button>
<button id="J_removeDataBtn" class="btn">刪除數據</button>
<script>
function ready(callback) {
// 如果 jsbridge 已經注入則直接調用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果沒有注入則監聽注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function() {
document.querySelector('#J_saveDataBtn').addEventListener('click', function(e) {
AlipayJSBridge.call('setAPDataStorage', {
type: "common",
business: "customBusinessKey",
key: "customKey",
value: "customValue"
}, function(result) {
alert(JSON.stringify(result));
});
}, false);
document.querySelector('#J_getDataBtn').addEventListener('click', function(e) {
AlipayJSBridge.call('getAPDataStorage', {
type: "common",
business: "customBusinessKey",
key: "customKey"
}, function(result) {
alert(JSON.stringify(result));
});
}, false);
document.querySelector('#J_removeDataBtn').addEventListener('click', function(e) {
AlipayJSBridge.call('removeAPDataStorage', {
type: "common",
business: "customBusinessKey",
key: "customKey"
}, function(result) {
alert(JSON.stringify(result));
});
}, false);
}, false);
</script>
API 說明
AlipayJSBridge.call('setAPDataStorage', {
type, business, key, value
});
入參
屬性 | 類型 | 描述 | 必填 | 默認值 |
type | String | 用戶維度存儲( | N | “common” |
business | String | 自定義的業務標識,可與相應的客戶端存取代碼約定。 在 Android 中,該業務標識與創建 APSharedPreferences 時所傳入的 | N | “NebulaBiz” |
key | String | 自定義數據的 key。 | Y | “” |
value | String | 需要存儲的值,僅支持字符串類型。JSON 數據需要先字符串化。 | Y | “” |
出參
回調函數帶入的參數 result: {success}
。
屬性 | 類型 | 描述 |
success | bool | 是否保存成功。 |
錯誤碼
錯誤碼 | 描述 |
11 | 字符串長度超出限制。 |