2017-06-12 21 views
4

私はそれが動作する方法は、このようなものであることを理解し、公式ドキュメントから:ユーザーがアプリをインストールし、FCMトークンが生成され ユーザーごとに複数のFirebase FCMトークンを処理する方法は?

  • アプリサーバにトークンを送信
  • Serverはプッシュを送信するためにトークン使用
    1. このデバイスへの通知。

    このユーザーが同時に他のデバイスにアプリケーションをインストールする場合は、アプリケーションサーバーにユーザーごとに複数のトークンを保存する必要がありますか? 「はい」の場合、期限切れとなっているものを確認するような何かがあるはずです。

  • 答えて

    2

    このユーザーが同時に他のデバイスにアプリケーションをインストールすると、アプリサーバーにユーザーごとに複数のトークンを保存する必要はありますか?

    はい。ユーザーは複数のデバイスを持つことができ、Device Groupsが一般的に使用されます。

    「はい」の場合、有効期限が切れているかどうかを確認する必要がありますか?

    トークンの有効期限が切れた場合、コールバックは、あなたのアプリケーションサーバーに新しいトークンを送信し、ユーザー/デバイスに対応した古いものを削除する必要がありますどこから、(Android用onTokenRefresh())トリガされます。

    +0

    しかし、ユーザーが10台のデバイスからログインし、9台のデバイスを失った場合はどうなりますか?だから彼らはコールバックを起動しません。これらの紛失したデバイスに通知を永久に送信する必要がありますか? – Graykos

    +0

    デバイスグループのマッピングを追跡するのは開発者の責任です。私の答え[ここ](https://stackoverflow.com/a/42248240/4625829)と[ここ](https://stackoverflow.com/a/42522002/4625829)を参照してください。 –

    +5

    「ユーザー/デバイスに対応する古いものを削除してください」というメッセージが表示されます。同じユーザーが2つの異なるブラウザまたは異なるマシンを使用している場合はどうなりますか?ユニークなデバイスIDを取得するfirebaseメソッド、またはそのための公開Web APIはありますか? – johnb003

    2

    私はまた、正確な課題に遭遇し、解決策に解決しなければなりませんでした。 デバイスIDに対してユーザーの各トークンを格納しています。 この機能は実際にはファイヤーベースのメッセージング方法に存在することは十分に知ることは興味深いです。しかし、もっと驚くべき事実は、そのようなシナリオを扱うためのドキュメントがないということです。 https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId.html#getId()

    新しいトークンをサーバーに送信しているときに、getId()メソッドによって返されたデバイスIDを送信し、それを使用してデバイスごとのトークンの一意性を強制します。

    また、FCMのデバイスグループ機能を利用してこのソリューションを適用する場合は、FCMグループ上の古いトークンを削除して新しいデバイスと交換する前に、そのFCMグループに対してサーバ要求を行うことができます。

    関連する問題