web-dev-qa-db-ja.com

登録解除によるGCM / FCM通知の制限

Firebaseプッシュ通知の登録を制限する方法はありますか?トピックを探していません。ログイン機能があるとしましょう。サインインしたユーザーにプッシュ通知をサブスクライブさせたい。次に、トークンをサーバーに送信して保存できます。

ユーザーがログアウトすると同時に、ユーザーの登録も解除する必要があります。

それで、現在利用可能なメカニズムはありますか? Firebase APIのドキュメントを確認しましたが、何も見つかりませんでした。

私が何かを逃したかどうかを知りたいだけです。

11

deleteToken()deleteInstanceId()の使用時期の違いについては、こちらをご覧ください answer


ログアウト時にアプリインスタンス(デバイス/ユーザー)の登録を解除することは、GCMであってもお勧めできません。 GCM docs による

開発者は、次の理由により、ログアウトまたはユーザー間の切り替えのメカニズムとしてクライアントアプリの登録を解除しないでください。

  • 登録トークンは、特定のログインユーザーに関連付けられていません。クライアントアプリが登録を解除してから再登録すると、アプリは同じ登録トークンまたは異なる登録トークンを受け取ることができます。

  • 登録解除と再登録は、伝播するのにそれぞれ最大5分かかる場合があります。この間、メッセージは未登録状態のために拒否され、メッセージが間違ったユーザーに送信される可能性があります。

それでも続行したい場合は、上記の同じドキュメントを参照できます。

登録解除とサブスクリプション解除

クライアントアプリがアプリサーバーからのメッセージやトピックサブスクリプションの受信を停止するために使用できる方法は3つあります。

  • オーディエンスがアプリサーバーの送信者IDに設定され、スコープがGCMに設定されたInstanceID deleteToken()。これにより、特定のアプリサーバーからのメッセージ(トピックメッセージを含む)が停止します

  • InstanceID deleteID()。これにより、すべてのアプリサーバーの以前のすべての登録およびトピックサブスクリプションからのメッセージが停止します

  • GCMPubSub unsubscribe()。これにより、アプリサーバーの特定のトピックからのトピックメッセージが停止します

FCMの場合は、FirebaseInstanceIdである必要があります。

8
AL.

プッシュ通知の受信を無効にするために従うこともできる別のアプローチは、バックエンドからAPIを呼び出して、ログイン中に受信してバックエンドに送信したものと同じ既存のFirebaseトークンを削除することです。これにより、デバイスが勝ちましたデバイストークンがデータベースに存在しない場合、通知をまったく受信しません。