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

Ari*_*ria 2 android firebase google-cloud-messaging firebase-realtime-database firebase-cloud-messaging

因此,我正在学习如何使用Firebase发送设备到设备的通知,并且看到了发送答复的答案,这似乎很简单。现在,我知道要获取发送者的令牌,它应该如下所示:-

FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)

但我似乎一生无法找到如何获取其他所需令牌的方法。我如何获得接收者的令牌,以便消息直接发送给他们?

Pet*_*dad 5

接收器也一样。

从文档:

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

在以下情况下,注册令牌可能会更改:

该应用程序删除实例ID

该应用已在新设备上还原

用户卸载/重新安装应用程序

用户清除应用程序数据。

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

  FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)

上面的代码将为您生成一个令牌,当用户在其设备上安装应用程序时(开始时),可以更好地执行代码。

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

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

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

现在,这只是一个示例,您可以根据需要存储它。我使用了用户ID,因为它很容易获得,因为用户就是将要使用其电话的用户。

这样,您将拥有接收者的令牌,然后您可以根据需要使用云功能向该特定令牌发送通知。

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

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

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

但是您使用数据库中的uid来知道此令牌是给谁的。

摘要:

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

  • 非常感谢。我会尝试一下,如果可以,我会将其标记为答案。谢谢 (2认同)