質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

653閲覧

[ios][swift]FirebaseのAuthenticationのリスナーを設定が理解できません

masimasi

総合スコア32

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1グッド

0クリップ

投稿2018/07/09 00:15

編集2018/07/09 00:21

Firebaseの初心者です。

swiftアプリをxcodeで作ってて、
firebaseを活用しようと
最近勉強しはじめたのですが
知識不足で苦戦しております。

firebaseのインポートはできまして、(これだけで3日かかりました・・・)
Authenticationの勉強をしようと

下記の公式のレクチャーを順に追っているのですが
https://firebase.google.com/docs/auth/ios/start?hl=ja

Authenticationのリスナーを設定
handle = Auth.auth().addStateDidChangeListener { (auth, user) in
// ...
}

これが、もお理解できません。リスナーを設定 とはなんのことなのでしょうか?
また、どういう時にこのコマンドをつかうのでしょうか?

__________________________________
ログインしているユーザーに関する情報を必要とするアプリの各ビューに対して、FIRAuth オブジェクトにリスナーをアタッチします。このリスナーは、ユーザーのログイン状態が変わるたびに呼び出されます。
__________________________________
この説明もわかりません。どういう機能なのでしょうか?

ビュー コントローラの viewWillDisappear メソッドでリスナーをデタッチ・・・
Auth.auth().removeStateDidChangeListener(handle!)
ここもよくわかりません。サンプルの例も複雑すぎて・・・
(そのあとの 新しいユーザーを登録する は理解できました)

概念だけでも教えていただけないでしょうか?
キーワードだけでもいただけたらそこから調べていこうと思います

公式のサンプルは難しすぎて読み取れず・・・

よろしくお願いします

yasumaro👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

FirebaseのAuthのインスタンスに対し、「ユーザーの状態が変化したらこの関数を実行してください」と関数を登録することです。

デタッチはこの場合、もう必要ないので実行しなくてよいですと連絡することです。

コメントに対する追記:

addStateDidChangeListener(_:)のReferenceより

Registers a block as an auth state did change listener. To be invoked when:

The block is registered as a listener,
A user with a different UID from the current user has signed in, or
The current user has signed out.

登録するるとすぐに1度関数が呼ばれるみたいですね。

リスナーは使わなくなったらデタッチする必要があります。
デタッチせずに放置すると通常は問題が発生します。
発生する問題にはいろいろ考えられますが、最悪アプリがクラッシュすることまであります。

iOSではガイドにあるように

ビュー コントローラの viewWillAppear メソッドでリスナーをアタッチします。
ビュー コントローラの viewWillDisappear メソッドでリスナーをデタッチします。

を守っておけばそれほど問題はないでしょう。

投稿2018/07/09 03:05

編集2018/07/09 14:26
MasakiHori

総合スコア3384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masimasi

2018/07/09 09:55

ありがとうございます。ユーザーの状態、というのはログインしてるかしてないか、のことですよね?ログイン状態が切り替わったら、関数実行、、、という解釈で組んで問題ないでしょうか?デタッチの「もう必要ない」って例えばどんな時でしょうか?質問を重ねてすみません。これで最後の質問とします。
masimasi

2018/07/09 22:40

詳しくありがとうございます。英語のリファレンスを見ればよかったのですね。引き続き勉強します。ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問