确认收到了firebase消息

时间:2018-02-19 18:14:57

标签: c# firebase firebase-cloud-messaging

我有一个c#项目通过http post向具有ios和android的客户端发送firebase消息。

当客户端卸载我的应用程序时,不幸的是,它们的firebase设备ID不会从我的数据库中删除。

下次我向设备发送消息时,id对应于卸载我的应用程序的用户,当然消息未传递。 有没有办法知道邮件是否未送达? 不幸的是,即使没有传递消息,响应也总是成功。

我目前的代码:

var firebaseMessage = new FirebaseMessage();
firebaseMessage.data = notificationMessages;
firebaseMessage.to = device.DeviceRegistrationId; <-- maybe this device is no longer valid
firebaseMessage.priority = "high";
firebaseMessage.notification = new ExpandoObject();
firebaseMessage.notification.title = "myApp";
firebaseMessage.notification.body = "testMessage";
firebaseMessage.notification.sound = "default";
firebaseMessage.notification.click_action = "FCM_PLUGIN_ACTIVITY";
firebaseMessage.notification.icon = "fcm_push_icon"; 
firebaseMessage.notification.delivery_receipt_requested= true;

var client = new HttpClient();
var appKey = "key=" + ApplicationConfig.FirebasKey;
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", appKey);

var response = await client.PostAsJsonAsync("https://fcm.googleapis.com/fcm/send", message);

return response;

1 个答案:

答案 0 :(得分:1)

当您从设备上卸载您的应用时,FCM服务器会使相应的注册令牌无效,因此发送到该特定令牌的任何消息都会产生NotRegistered响应(另请参阅我的帖子{{ 3}})。在这种情况下,您可以继续删除令牌(或将其存档)。

如果您的用例故意想知道客户端是否收到了该消息,那么您将不得不实施here