任何人都可以通过 Firebase 帮助我通知来学习好东西。对我来说,我认为更新令牌时不需要sendRegistrationToServer()
方法。
在所有情况下,通知将发送到应用程序所在的所有设备。
sendRegistrationToServer()
方法有什么用处?
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
//I talked about this method. :)
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
}
答案 0 :(得分:4)
令牌用作识别设备的方法。在使用FCM的简单Android应用程序中(如在教程和firebase-chat中),从您的代码猜测(如果我错了,请纠正我),我们不需要将令牌发送到服务器,因为我们没有&# 39;实现我们的服务器发送消息。我们直接与谷歌FCM服务器通话。
当我们implementing our own server发送通知消息时,我们需要高度自信地知道我们的服务器“通话”。使用有效的设备。因此它使用从设备生成的令牌作为标识符。
服务器会将带有您令牌的通知发送到FCM服务器(即Google服务器),然后FCM服务器将处理发送过程。
因此,当您想要授权您的应用从服务器接收通知时,您只需构建 sendRegistrationToServer(refreshedToken);
。
让我们用CodePath Google Cloud Messaging tutorial解释一下:
支持Android推送通知的大部分工作都是由Google支持的connection servers推动的。这些Google服务器提供了一个API,用于从您的服务器发送消息,并将这些消息转发给任何有权接收它们的Android / iOS设备。
使用Google Play服务的Android设备已经可以使用FCM客户端支持。对于要接收的推送通知,应用必须首先通过向Google服务器注册来获取令牌:
然后必须将此令牌传递给您的服务器,以便它可用于发送后续推送通知:
假设您的应用已注册以收听基于FCM的消息,则可以接收推送通知:
换句话说,为了实施FCM,您的应用需要Google服务器和您自己的服务器。当您的应用从Google获取令牌时,需要将此令牌转发到您的服务器。此令牌应由服务器保留,以便可用于对Google服务器进行API调用。使用这种方法,您的服务器和Android设备不需要创建持久连接,排队和转发消息的责任全部由Google的服务器处理。
答案 1 :(得分:1)
通知将发送到由令牌识别的设备,因此如果您的令牌更新并且您没有使用新令牌更新服务器,那么当您的服务器使用旧令牌时,您的通知将无处可寻。因此,每次刷新令牌时都应更新服务器。