gpt4 book ai didi

android - FCM Android - 空消息 ID

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:01:57 24 4
gpt4 key购买 nike

我已经实现了 FirebaseMessagingService 的子类并且我在 FirebaseMessagingService.onMessageReceived(RemoteMessage) 中成功接收了下游消息。我的问题是 RemoteMessage.getMessageId() 总是返回 null。据我了解,消息 ID 是强制性的,应该由 FCM 服务器自动生成。事实上,调用 https://fcm.googleapis.com/fcm/send
返回消息 ID,我无法在应用程序端访问它。

有什么我想念的吗?

这是我的 FCM 消息服务类:

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 起,此问题已得到解决

来自release notes :

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 月 2 日更新:我被告知这确实是一个错误,并且将在最近的版本中包含修复。


原来我们无法在应用程序端获取消息 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() 到底做什么仍然是个谜。

关于android - FCM Android - 空消息 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38007894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com