1. ホーム
  2. アイオス

[解決済み】iOS。ユーザー名/パスワードをアプリ内に保存する方法は?

2022-03-31 06:21:10

質問

iOSアプリにログイン画面があります。 ユーザー名とパスワードは NSUserDefaults で、再度アプリに入ったときにログイン画面に読み込まれます(当たり前ですが。 NSUserDefaults は永続的です)。

ユーザー名/パスワードの保存機能を無効にすることができるようになりました。

そのため NSUserDefaults がクリアされるのはその時です。

しかし、私のアプリでは、ユーザーのデータベースクエリのために、このユーザー名/パスワードが必要です。 そこで を除いて、どこにデータを格納するのでしょうか? NSUserDefaults ? (この場所は、ユーザーがアプリを終了するか、ログアウトしたときに削除することができます/する必要があります)。

解決方法は?

ユーザー名とパスワードの保存には常にKeychainを使用する必要があり、安全に保存され、アプリにのみアクセスできるので、アプリ終了時に削除する必要はありません(それが心配だった場合)。

Appleが提供する サンプルコード ここでは、Keychainの使用を大幅に簡素化する、そのサンプルのKeychainラッパークラスの使用方法を説明します。

Security.frameworkをインクルードする。 (Xcode 3ではframeworksフォルダを右クリックし、既存のフレームワークを追加してください。Xcode 4では、プロジェクトを選択し、ターゲットを選択し、Build Phasesタブに移動し、Link Binary With Filesの下にある+をクリックします) とKeychainItemWrapper .h & .m ファイルをプロジェクトに追加し、 #keychain を使う必要がある場所で .h ファイルをインポートし、このクラスのインスタンスを作成してください。

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];

( YourAppLogin は、キーチェーンアイテムを呼び出すために選択した任意のものであり、必要に応じて複数のアイテムを持つことができます)

そして、ユーザー名とパスワードを設定します。

[keychainItem setObject:@"password you are saving" forKey:kSecValueData];
[keychainItem setObject:@"username you are saving" forKey:kSecAttrAccount];

使って入手する。

NSString *password = [keychainItem objectForKey:kSecValueData];
NSString *username = [keychainItem objectForKey:kSecAttrAccount];

または、それを使って削除する。

[keychainItem resetKeychainItem];