🔓
Flutterにて、既存ネイティブiOSからのセキュアデータ引き継ぎ方法
はじめに
iOSはKeyChainと呼ばれるものにセキュアデータを保存します。
そして、FlutterでもiOSのこのKeyChainを
↓flutter_secure_storage
const secureStorage = FlutterSecureStorage();
を使うことでアクセスが可能です。ただ、そのまま使うと既存ネイティブiOSからFlutterへのリプレースの場面だと、既存データを引き継げない問題があります。
解決策
以下のオプションを使用することで、既存ネイティブiOSからFlutterへリプレースでも、セキュアデータを引き継ぐことが出来ます。
const secureStorage = FlutterSecureStorage(
iOptions: IOSOptions(
accountName: 'アプリのBundleIdentifier',
),
);
もし、既存ネイティブiOSにて
KeyChainのserviceにBundleIdentifierを指定していない場合は、その値を指定してあげれば問題ありません。
詳細
このaccountNameのデフォルトは以下の通りflutter_secure_storage_service
という命名の指定になっています。
static const defaultAccountName = 'flutter_secure_storage_service';
なので、適切な値を渡してあげることで引き継いでくれるように↓このPRで対応してくれています。(ありがとう!Kristian!)
Discussion