アプリを使う上で必ずしもユーザーの詳細情報は必要ないけれど、ユニークユーザーとして管理はしたい場合があります。
ショッピングアプリの場合、商品をお気に入り登録したりカートに入れるところまではユーザー登録なしでおこない、実際に購入する段階になってユーザー登録をおこなうようなケースです。
カートに入れたりお気に入り管理させるためにはユニークなアカウントを作っておかないと管理ができません。しかし、ユーザーに対して商品を見せていないにも関わらず(その時点では不必要な)アカウント作成をさせると離脱率が上がってしまいます。
つまり、ユーザーに対してアカウント登録をさせないけれど、システムとしてはアカウント登録が必要になります。
その解決として匿名ユーザーとして管理する方法があります。
前準備
先にFirebaseの導入を済ませておく必要があります。
Podfile
pod 'Firebase' pod 'Firebase/Auth'
Firebaseコンソールで匿名サインインを有効にする
匿名プロバイダはデフォルトで無効になっているので有効にします。
ログインの実装
匿名サインインするだけであれば、FIRAuth.auth()?.signInAnonymously(completion:)
を実装するだけで済みます。
FIRAuth.auth()?.signInAnonymously(completion: { (user, error) in //サインイン後の処理 })
ここでは匿名サインイン後に入力されたユーザーで表示名を更新しています。ユーザー管理はUUIDでおこなわれているため、ユーザー名はdisplayName
という既定のプロパティの更新をおこなっています。
@IBAction func loginAction(_ sender: Any) { guard let name = nameField.text else { return } FIRAuth.auth()?.signInAnonymously(completion: { [weak self] (user, error) in if let e = error { //アラート表示とか return } //匿名サインインに成功したので、名前を更新する let request = user?.profileChangeRequest() request?.displayName = name request?.commitChanges(completion: { (error) in if let e2 = error { //アラート表示とか return } // サインイン完了、ホーム画面へ遷移させたりする self?.nameLabel.text = user?.displayName }) }) }