获取接收者的设备令牌以在Firebase中发送通知

时间:2018-02-02 18:39:07

标签: android firebase firebase-realtime-database google-cloud-messaging firebase-cloud-messaging

所以我正在学习如何使用firebase发送设备到设备通知,我看到这个answer发送通知,看起来很简单。 现在,我知道要获取发件人的令牌,它应该如下所示: -

FirebaseInstanceId.getInstance().getToken();

但我不能为我的生活似乎找到如何获得其他所需的令牌。如何获取接收者的令牌以便消息直接传递给他们?

1 个答案:

答案 0 :(得分:4)

接收器也是如此。

来自文档:

  

在您的应用首次启动时,FCM SDK会为客户端应用实例生成注册令牌。如果您要定位单个设备或创建设备组,则需要通过扩展FirebaseInstanceIdService来访问此令牌。

     

注册令牌可能会在以下情况下发生变化:

     

该应用删除实例ID

     

应用程序将在新设备上恢复

     

用户卸载/重新安装应用

     

用户清除应用数据。

因此,要获取任何设备(接收者或发送者)的令牌,您需要使用此:

  FirebaseInstanceId.getInstance().getToken();

上面会为你生成一个令牌,当用户在他的设备上安装应用程序时(开头),它会更好地执行代码。

现在生成了接收器的令牌,接下来要做的是将令牌存储在数据库中以便能够使用令牌并向该特定用户发送通知,因为没有其他方法可供您使用知道其他设备的令牌。

要存储它,只需执行以下操作:

 String token=FirebaseInstanceId.getInstance().getToken();
 DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Tokens");
 ref.child(user.getUid()).setValue(token);

现在这只是一个例子,您可以根据需要存储它。我使用了用户ID,因为很容易获得,因为用户是将使用他的手机。

通过这种方式,您将获得接收者的令牌,然后您可以根据需要使用云功能向该特定令牌发送通知。

了解更多信息:https://firebase.google.com/docs/cloud-messaging/admin/send-messages#send_to_individual_devices

令牌正在发送到设备,因此令牌与设备相关。现在要获取uid,然后用户需要登录并进行身份验证,然后您可以在数据库中使用uid。

如果用户有很多设备,那么您还需要其他设备的令牌。 同样,它与设备无关,不与用户相关

但是你使用数据库中的uid知道这个标记是针对谁的。

<强>要点:

  1. 令牌与设备非用户相关
  2. userid仅用于标识db
  3. 中的用户
  4. 如果用户有多个设备,则需要生成每个设备的令牌(与上面的代码相同)。
  5. 通过数据库,我的意思是firebase-database