2016-08-03 15 views
0

基本的に、私は、ユーザーが、ログインするたびことにしたい:Firebaseクラウドメッセージングログイン管理

  • 要求firebaseトークン。
  • 私のウェブサーバーにトークンを登録してください。
  • MessagingServiceを実行します。

ユーザーがログアウト:

  • メッセージサービスを停止する必要があります。
  • トークンは私のWebサーバから登録解除されています。

私が直面しています主な問題は、次のとおりです。

  • Firebaseは、トークンが存在しないことを検出し、それはユーザーがログインしていない場合でも、新しいトークンを要求します。
  • メッセージを受信する責任を持つFirebaseMessageServiceは、トークンが受信されると自動的に実行を開始します。

答えて

1

代わりの登録/作成されてからトークンを防ぐためにしようと、どのようにデータの2つの別々の部品として二つの要求を実装について:ユーザーが署名されているかどうかを

  1. ユーザーのFCMトークン

でのアプリのコードから複雑な条件を削除し、代わりにサーバーで非常に単純な条件を持ってそのように」

if (user.signed_in && user.token != null) { 
    sendMessageTo(user); 
} 
+0

このように、メッセージを聞いているサービスは引き続き実行されますが、これはこの質問のポイントの1つです。設定画面のユーザーがプッシュ通知を無効にすることを選択した場合や、ユーザーがログに記録されていないアプリを巡回する場合など、一部の場合は停止する必要があります。 –

+0

オプトインのトピックはどうですか?基本的にチェックボックスを結んで、トピックの購読/購読解除を行います。 –

+1

注:トークンは自動生成されますが、ユーザがログインするまで使用する必要はありません。また、トークンが生成されるとFirebaseMessagingServiceは起動しません。メッセージが届いたときなど、必要に応じてGoogle Playサービスから開始されます。 –

0

@ FrankvanPuffelenの回答に加えて、トークンが自動生成されても、あなたがログインするまでそれを使用する必要はありません。また、トークンが生成されるとFirebaseMessagingServiceは起動しません。