NCMBのSwift SDKを使ってカレンダーアプリを作ります。予定を登録したり、カレンダーコンポーネント(FSCalendar)を使って予定を表示できるというアプリです。
前回の記事では画面の説明とSDKの導入までを進めましたので、今回は認証処理を実装していきます。
コードについて
今回のコードはNCMBMania/swift-calendar-appにアップロードしてあります。実装時の参考にしてください。
認証画面について
すでに紹介済みですが、認証画面は以下のようになります。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
が返ってきます。これを使って認証状態の判別が可能です。
まとめ
今回はカレンダーアプリの認証処理について解説しました。次はカレンダー表示と予定の登録処理を実装します。