FCM Android - 空消息 ID
FCM Android - null message ID
我已经实现了 FirebaseMessagingService 的子 class,并且在 FirebaseMessagingService.onMessageReceived(RemoteMessage)
中成功接收了下游消息。我的问题是 RemoteMessage.getMessageId()
总是 returns null
。据我了解,消息 ID 是强制性的,应该由 FCM 服务器自动生成。事实上,调用https://fcm.googleapis.com/fcm/send
returns一个消息ID,我只是无法在应用程序端访问它。
有没有我遗漏的东西?
这是我的 FCM 消息服务 class:
public class FcmMessagingService extends FirebaseMessagingService {
private static final String TAG = "FcmMessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Logg.d(TAG, "Received message; id: " + remoteMessage.getMessageId());
Map<String, String> data = remoteMessage.getData();
Logg.d(TAG, "Data: " + data);
String message = data.get("message");
/* ... */
}
}
自 Firebase Android SDK 9.4 起,此问题已得到解决
FIXED RemoteMessage#getMessageId()
now returns the correct message-id for received messages. Previously, it returned null
.
将 com.google.firebase:firebase-messaging
依赖项更新到版本 9.4.0
确实解决了问题。
2016 年 7 月更新: 我被告知这确实是一个错误,并且将在最近的版本中包含修复程序。
原来我们无法在应用端获取消息ID。我已经向 Firebase 支持寻求帮助,他们告诉我的是这样的:
When FCM has successfully receives the request, it will attempt to deliver to all subscribed devices, FCM will return a response which includes messageID to your server.
You cannot directly get MessageID on your client side (Android device). MessageID is a parameter in response payload.
作为解决方法,我在服务器上生成自定义消息标识符并将它们传递到负载中。
RemoteMessage.getMessageId() 到底做了什么仍然是个谜。
我已经实现了 FirebaseMessagingService 的子 class,并且在 FirebaseMessagingService.onMessageReceived(RemoteMessage)
中成功接收了下游消息。我的问题是 RemoteMessage.getMessageId()
总是 returns null
。据我了解,消息 ID 是强制性的,应该由 FCM 服务器自动生成。事实上,调用https://fcm.googleapis.com/fcm/send
returns一个消息ID,我只是无法在应用程序端访问它。
有没有我遗漏的东西?
这是我的 FCM 消息服务 class:
public class FcmMessagingService extends FirebaseMessagingService {
private static final String TAG = "FcmMessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Logg.d(TAG, "Received message; id: " + remoteMessage.getMessageId());
Map<String, String> data = remoteMessage.getData();
Logg.d(TAG, "Data: " + data);
String message = data.get("message");
/* ... */
}
}
自 Firebase Android SDK 9.4 起,此问题已得到解决
FIXED
RemoteMessage#getMessageId()
now returns the correct message-id for received messages. Previously, it returnednull
.
将 com.google.firebase:firebase-messaging
依赖项更新到版本 9.4.0
确实解决了问题。
2016 年 7 月更新: 我被告知这确实是一个错误,并且将在最近的版本中包含修复程序。
原来我们无法在应用端获取消息ID。我已经向 Firebase 支持寻求帮助,他们告诉我的是这样的:
When FCM has successfully receives the request, it will attempt to deliver to all subscribed devices, FCM will return a response which includes messageID to your server. You cannot directly get MessageID on your client side (Android device). MessageID is a parameter in response payload.
作为解决方法,我在服务器上生成自定义消息标识符并将它们传递到负载中。
RemoteMessage.getMessageId() 到底做了什么仍然是个谜。