iPhoneにアカウント情報を保存してみました。

やりたいこと

  • UserIDを保存したい
  • Passwordを保存したい
  • UserIDは見られても構わない
  • Passwordは誰にも見られたくない

UserIDはPinfoに保存する

こちらを参考にしました。

http://d.hatena.ne.jp/tomute/20091121/1258884514

要点としてはユーザー名をNSUserDefaultsに保存して、パスワードはセキュリテリを高めるためにKeyChainを使います。

- (void)saveUserInfo {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *oldUsername = [defaults objectForKey:@"USERNAME"];
    NSError *error;

	// ユーザ名が変更になっていた場合は、古いユーザ名で保存したパスワードを削除
	if (![oldUsername isEqualToString:_usernameField.text]) {
        [SFHFKeychainUtils deleteItemForUsername:oldUsername andServiceName:@"Test App" error:&error];
    }
    
	// ユーザ名はNSUserDefaultsを使って保存
    [defaults setObject:_usernameField.text forKey:@"USERNAME"];
    
	// ラッパークラスを利用してパスワードをKeyChainに保存
    [SFHFKeychainUtils storeUsername:_usernameField.text andPassword:_passwordField.text forServiceName:@"Test App" updateExisting:YES error:&error];
    [self.navigationItem.rightBarButtonItem setEnabled:NO];
	
	// saveが完了したらその旨をユーザーに通知
	UIAlertView * alert = [[[UIAlertView alloc] initWithTitle:@"saved" 
													 message:@"complete" 
													delegate:nil 
										   cancelButtonTitle:nil 
										   otherButtonTitles:@"OK", nil] autorelease];
	[alert show];
}

画面

設定画面を開く

saveボタンを押すとアカウントが保存され、アラートが表示されます。