[解決済み】iOS。ユーザー名/パスワードをアプリ内に保存する方法は?
質問
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];
関連
-
[解決済み】"宣言はファイルスコープでのみ有効 "について
-
[解決済み] Xcodeで "No such module "というエラーが出るが、フレームワークはある
-
[解決済み] viewDidLoad()は何のためにあるのですか?[重複]する
-
[解決済み] あなたのリクエストはエラーを発生させました。[newNullResponse]?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
-
[解決済み】iOSアプリの名前を変更する方法は?
-
[解決済み】Storyboardのログイン画面のベストプラクティス、ログアウト時のデータクリアの処理について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Xcode 10でコマンドCompileSwiftが0以外の終了コードで失敗する [重複] 。
-
[解決済み] swiftで「floor」が使用できない
-
[解決済み] シミュレータへのサービス接続の開始に失敗しました Xcode
-
[解決済み] 指定されたホスト名を持つサーバーが見つからなかった
-
[解決済み] このアクションは完了できませんでした。再試行 (-22421)
-
[解決済み] ERROR ITMS-9000: "Redundant Binary Upload. 列車 '1.0' のビルドバージョン '1.0' のバイナリアップロードが既に存在します" と表示されました。
-
[解決済み] NSIntegerからNSStringデータ型に変換するにはどうすればよいですか?
-
[解決済み] CocoaPodsでポッド「Firebase/Core」の互換バージョンが見つからなかった|cloud_firestore, Flutter
-
[解決済み] アプリケーションは、アプリケーション起動の最後にルートビューコントローラーを持つことが期待される
-
[解決済み] なぜSwiftでUIViewControllerのデフォルトのsuper.init()を呼び出すことができないのでしょうか?