所以我正在学习如何使用 firebase 发送设备到设备的通知,我看到了这个答案来发送通知,这似乎很简单。 现在,我知道要获取发件人的令牌,它应该看起来像这样:-
FirebaseInstanceId.getInstance().getToken();
但我似乎一辈子都找不到如何获得另一个需要的令牌。 如何获取接收方的令牌,以便消息直接发送给他们?
对于接收器也是如此。
从文档中:
在应用首次启动时,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 来知道此令牌是为谁准备的。
总结:
- 令牌与设备相关,而不是用户
- 用户 ID 仅用于在数据库中标识用户
- 如果用户有多个设备,则需要生成每个设备的令牌(与上面的代码相同)。
- 通过数据库,我的意思是火碱数据库