1
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?

More than 1 year has passed since last update.

NCMBのSwift SDKを使ってカレンダーアプリを作る(その2:認証処理の実装)

Last updated at Posted at 2022-11-22

NCMBのSwift SDKを使ってカレンダーアプリを作ります。予定を登録したり、カレンダーコンポーネント(FSCalendar)を使って予定を表示できるというアプリです。

前回の記事では画面の説明とSDKの導入までを進めましたので、今回は認証処理を実装していきます。

コードについて

今回のコードはNCMBMania/swift-calendar-appにアップロードしてあります。実装時の参考にしてください。

認証画面について

Simulator Screen Shot - iPhone 14 Pro - 2022-11-22 at 10.50.19.png

すでに紹介済みですが、認証画面は以下のようになります。ID/パスワード入力欄があって、ボタンを押すと _signUpOrLogin 関数が実行されます。

struct LoginView: View {
    // 入力用
    @State private var userName: String = ""
    @State private var password: String = ""
    // レスポンス用
    @Binding var isLogin: Bool

    var body: some View {
        VStack(spacing: 16) {
            TextField("ユーザ名", text: $userName)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                .frame(maxWidth: 280)
            SecureField("パスワード", text: $password)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                .frame(maxWidth: 280)
            Button(action: {
                _signUpOrLogin()
            }, label: {
                Text("新規登録/ログイン")
            })
        }
    }
    
    // ユーザー登録またはログインを行う処理
    func _signUpOrLogin() -> Void {
			// 後述
    }
}

ログイン処理について

ログイン処理は、以下のような手順で行われます。

  • ユーザーの新規登録
  • ログイン処理

すでにユーザー登録を行っていた場合、ユーザーの新規登録はエラーになります。今回はユーザー登録とログインを兼ねているので、エラーが出たとしてもそのまま続けてログイン処理を行っていきます。

ユーザーの新規登録

取得した入力値を使ってユーザー登録処理を行います。エラーが出たとしても無視します。

// ユーザ登録処理
let user = NCMBUser()
user.userName = userName
user.password = password
user.signUpInBackground(callback: { _ in
	// 後述
})

ログイン処理

そのまま続けてログイン処理を実行します。ログインがうまくいったら、 isLogin を true にして、ContentViewにてカレンダー画面を表示させます。

// 成功しても失敗してもそのままログイン処理
NCMBUser.logInInBackground(userName: userName, password: password, callback: { _ in
		// ログイン結果を反映
		isLogin = NCMBUser.currentUser != nil
})

ここまででNCMBを使った認証処理の完成です。

認証後のユーザー情報について

認証後にユーザー情報を取得する際には、下記のように記述します。

let currentUser = NCMBUser.currentUser;

認証していない場合には nil が返ってきます。これを使って認証状態の判別が可能です。

まとめ

今回はカレンダーアプリの認証処理について解説しました。次はカレンダー表示と予定の登録処理を実装します。

1
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
1
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?