@capacitor/preferences
Preferences API 提供一个简单的键/值持久化存储,用于轻量级数据。
移动操作系统可能会定期清除 window.localStorage 中设置的数据,因此应使用此 API 代替。当作为 Progressive Web App 运行时,此 API 将回退到使用 localStorage。
此插件在 iOS 上使用 UserDefaults,在 Android 上使用 SharedPreferences。如果卸载应用,存储的数据将被清除。
注意:此 API 不 应用于本地数据库。如果您的应用存储大量数据、具有高读/写负载或需要复杂查询,我们建议使用基于 SQLite 的解决方案。一种此类解决方案是 Ionic Secure Storage,它是一个基于 SQLite 的引擎,具有完整的加密支持。Capacitor Community 也构建了许多其他存储引擎。
安装
npm install @capacitor/preferences
npx cap sync
Apple 隐私清单要求
Apple 规定应用开发者现在必须为 API 使用指定已批准的原因,以增强用户隐私。到 2024 年 5 月 1 日,在向 App Store Connect 提交应用时需要包含这些原因 。
在应用中使用此特定插件时,您必须在 /ios/App 中创建 PrivacyInfo.xcprivacy 文件或使用 VS Code 扩展生成它,并指定使用原因。
有关如何执行此操作的详细步骤,请参阅 Capacitor 文档。
对于此插件,所需的字典键是 NSPrivacyAccessedAPICategoryUserDefaults,推荐的原因是 CA92.1。
示例 PrivacyInfo.xcprivacy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>
示例插件用法
import { Preferences } from '@capacitor/preferences';
const setName = async () => {
await Preferences.set({
key: 'name',
value: 'Max',
});
};
const checkName = async () => {
const { value } = await Preferences.get({ key: 'name' });
console.log(`Hello ${value}!`);
};
const removeName = async () => {
await Preferences.remove({ key: 'name' });
};
使用 JSON
Preferences API 只支持字符串值。但是,您可以在调用 set() 之前使用 JSON.stringify 序列化对象,然后对 get() 返回的值使用 JSON.parse。
此方法也可用于存储非字符串值,如数字和布尔值。