Spa*_*son 5 android firebase-cloud-messaging
我已经实现了我的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");
/* ... */
}
}
Run Code Online (Sandbox Code Playgroud)
Spa*_*son 12
自Firebase Android SDK 9.4起,此问题已得到解决
从发行说明:
FIXED
RemoteMessage#getMessageId()现在为收到的消息返回正确的消息ID.以前,它回来了null.
将com.google.firebase:firebase-messaging依赖项更新为版本9.4.0确实解决了问题.
更新2.07.2016:我被告知这确实是一个错误,修复程序将包含在最近的版本中.
事实证明,我们无法在应用程序端获取消息ID.我已经向Firebase支持人员寻求帮助,这就是他们告诉我的:
当FCM成功收到请求后,它将尝试传递给所有订阅的设备,FCM将向您的服务器返回包含messageID的响应.您无法在客户端(Android设备)直接获取MessageID.MessageID是响应有效负载中的参数.
作为一种解决方法,我在服务器上生成自定义消息标识符并将其传递到有效负载中.
RemoteMessage.getMessageId()实际上做了什么仍然是个谜.
| 归档时间: |
|
| 查看次数: |
2813 次 |
| 最近记录: |