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