Receiving the same token for different users when using firebase messaging

后端 未结 3 1074
逝去的感伤
逝去的感伤 2020-12-17 18:57

I use the code below to obtain a token from firebase :

const messaging = firebase.messaging();

messaging.requestPermission()
  .then(() =>{
    return fi         


        
相关标签:
3条回答
  • 2020-12-17 19:36

    Another possible solution to the problem is to add a field called userId in your data that you send as a notification. And at client side, only show notification if the userId == FirebaseAuth.user.id or similar in case you are not using FirebaseAuth.

    0 讨论(0)
  • 2020-12-17 19:45

    I have an alternate solution to your problem,

    You can use topics for receiving notifications,

    1.) Subscribe topic for your registration_token, let the topic name unique for every user like user id.

    https://iid.googleapis.com/iid/v1/<REGISTRATION_TOKEN>/rel/topics/<TOPIC_NAME>
    

    Example:

    https://iid.googleapis.com/iid/v1/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA/rel/topics/movies
    Content-Type:application/json
    Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
    

    2.) Send Notification to topic

    https://fcm.googleapis.com/fcm/send
    Content-Type:application/json
    Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
    {
      "to" : "/topics/movies",
      "priority" : "high",
      "notification" : {
        "body" : "This is a Firebase Cloud Messaging Topic Message!",
        "title" : "FCM Message",
      }
    }
    

    3.) Remove registration_id from the topic on logout

    https://iid.googleapis.com/iid/v1:batchRemove
    Content-Type:application/json
    Authorization:key=API_KEY
    {
       "to": "/topics/movies",
       "registration_tokens": ["nKctODamlM4:CKrh_PC8kIb7O..."],
    }
    

    Replace topic name "movies" with the unique user id or email etc

    0 讨论(0)
  • 2020-12-17 19:48

    Firebase Cloud Messaging tokens identify an installation of an app in a specific device. They do not identify a specific user. So in your case, if multiple users access your app in the same browser profile, they will get the same token.

    I haven't tried this myself, but I think you can delete the token (typically when the user signs out). Then request permission and get the new token for the new user, as usual.

    0 讨论(0)
提交回复
热议问题