0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【xcode/swift】Firebase Authenticationを使ったユーザー新規登録機能(メールアドレス&パスワード)

Last updated at Posted at 2024-07-25

この記事は自分の備忘録のために書いています。

環境

  • 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." = "このメールアドレスは既に使用されています。";
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?