Keychain Sharingとは
Keychain Sharingを使用することで、異なるアプリ間で情報を共有することができます。
例えばですが、異なるアプリ間で共通のユーザー名やパスワードを使用したい場合において、アプリAでログインする際にユーザー名やパスワードをKeychainの共有領域に保存させ、アプリBにログインする際にはKeychainに保存されている情報を使用して、ユーザー名やパスワードの入力なしにログインさせる
といったことができるようになります。
注意事項として、チームIDが同じプロビジョニングプロファイルでビルドされたアプリでしか上記は実現できません。
当たり前と言えば当たり前ですが、、、
チームIDはプロビジョニングプロファイルから確認できます。
大体は以下の赤い箇所に記載されていると思います。
FlutterでKeychain Sharingを実現するには
今回はKeychainに認証情報を保存するために、flutter_secure_storageを使用しました。
具体的なソースコードは以下になります。
FlutterSecureStorage secureStorage = const FlutterSecureStorage(
iOptions: IOSOptions(
groupId: "TeamID.jp.co.hoge.group",
accountName: "jp.co.hoge.service",
),
);
-
TeamID
にはプロビジョニングプロファイルに記載された、チームIDを記載してください。 -
accountName(iOSで言うところのService Name)が必要な場合は設定してください。アプリ間でaccountNameに異なる値を設定している場合、KeyChainの共有領域から値を読み出すことができません。
あとは、お好きなようにsecureStorage.write(key: key, value: value);
なり、secureStorage.read(key: key);
すれば、KeyChainの共有領域に対して読み書きができるようになります。