この記事は自分の備忘録のために書いています。
環境
- Xcode15.0.1
- Swift 5
前提
以下を前提とする
- firebaseでプロジェクトを作成している
- firbeaeのプロジェクトとxcodeのプロジェクトを紐づけている
- firebaseのプロジェクトのGoogleService-infoをxcodeのプロジェクトにダウンロードしている
- xcodeのプロジェクトにfirebase sdkをインストールしている
- AppDelegate.swiftに'FirebaseApp.configure()'の設定をしている
Story Board
①メールアドレス入力用とパスワード入力用としてUITextFieldでを追加する
②パスワード入力用のUITextFieldはText Input TraitsのSecure Text Entryにチェックを入れる
③登録ボタンとしてUIButtonを追加する
Register View Controller
import UIKit
import FirebaseAuth
class RegisterViewController: UIViewController {
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var registerButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// ここでUIの初期設定を行うことができます
setupKeyboardDismissal()
}
@IBAction func registerButtonTapped(_ sender: UIButton) {
guard let email = emailTextField.text, !email.isEmpty,
let password = passwordTextField.text, !password.isEmpty else {
// 入力が不完全な場合は、ユーザーに通知する
showAlert(message: "メールアドレスとパスワードを入力してください")
return
}
// Firebase Authenticationを使用して新しいユーザーを作成する
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
if let error = error {
// エラーメッセージをローカライズして表示する
let localizedErrorMessage = NSLocalizedString(error.localizedDescription, comment: "")
self.showAlert(message: "登録に失敗しました: \(localizedErrorMessage)")
return
}
// 登録が成功した場合、必要に応じてユーザーを次の画面に遷移させる
self.showAlert(message: "登録に成功しました!")
// 例: self.performSegue(withIdentifier: "goToNextScreen", sender: self)
}
}
// アラートを表示するヘルパー関数
func showAlert(message: String) {
let alertController = UIAlertController(title: nil, message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default))
present(alertController, animated: true)
}
// キーボードを閉じるためのセットアップ関数
func setupKeyboardDismissal() {
// Viewにタップジェスチャーを追加
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tapGesture)
}
// キーボードを閉じるための関数
@objc func dismissKeyboard() {
view.endEditing(true)
}
}
エラー文言のローカライゼーション
①PROJECTのInfoのLocalizationsでJapaneseを追加してDefaultに設定する
②Localizable.stringsを作成する
"The email address is badly formatted." = "メールアドレスの形式が正しくありません。";
"The password is invalid or the user does not have a password." = "パスワードが無効であるか、ユーザーにパスワードがありません。";
"The email address is already in use by another account." = "このメールアドレスは既に使用されています。";