flutter如何实现ios端的flutter_secure_storage

我在Flutter项目中使用了flutter_secure_storage插件,但在iOS端遇到了一些问题。具体表现为:在iOS设备上无法正常存储和读取加密数据,Android端工作正常。我已经按照文档添加了Keychain Sharing能力并设置了合适的Keychain Group,但依然无法使用。请问:

  1. iOS端需要额外配置什么吗?
  2. Keychain Group应该如何正确设置?
  3. 是否有特定的iOS版本要求?
  4. 遇到这种平台差异问题时,有什么调试建议?
2 回复

在Flutter中,使用flutter_secure_storage包实现iOS端安全存储。首先在pubspec.yaml中添加依赖,然后导入包。使用FlutterSecureStorage类读写数据,iOS会自动使用Keychain存储加密数据。

更多关于flutter如何实现ios端的flutter_secure_storage的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,flutter_secure_storage 是一个用于安全存储敏感数据的插件,支持 iOS 和 Android。以下是 iOS 端的实现步骤和代码示例:

1. 添加依赖

pubspec.yaml 文件中添加依赖:

dependencies:
  flutter_secure_storage: ^9.0.0

运行 flutter pub get 安装。

2. iOS 配置

  • 启用 Keychain Sharing(可选,用于跨应用共享数据): 在 Xcode 中打开 ios/Runner.xcworkspace,进入 Signing & Capabilities,点击 + Capability,添加 Keychain Sharing

3. 基本用法

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

// 创建存储实例
final storage = FlutterSecureStorage();

// 写入数据
await storage.write(key: 'token', value: 'your_secret_token');

// 读取数据
String? token = await storage.read(key: 'token');

// 删除数据
await storage.delete(key: 'token');

// 清空所有数据
await storage.deleteAll();

4. iOS 特定配置

通过 iOSOptions 自定义 Keychain 行为:

final storage = FlutterSecureStorage(
  iOptions: IOSOptions(
    accessibility: IOSAccessibility.passcode, // 数据访问策略
    groupId: 'group.your_app', // 用于跨应用共享的群组 ID
  ),
);

注意事项:

  • 数据加密:iOS 自动使用 Keychain 加密数据。
  • 访问控制:通过 accessibility 设置数据保护级别(如 passcode 需设备解锁)。
  • 群组共享:设置 groupId 以实现同一开发者账号下的应用间数据共享。

常见问题:

  • 若遇到权限错误,检查 Keychain Sharing 配置。
  • 确保 iOS 版本 ≥ 9(插件最低支持)。

通过以上步骤,即可在 iOS 端安全存储数据。

回到顶部