我有一个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;
答案 0 :(得分:1)
当您从设备上卸载您的应用时,FCM服务器会使相应的注册令牌无效,因此发送到该特定令牌的任何消息都会产生NotRegistered
响应(另请参阅我的帖子{{ 3}})。在这种情况下,您可以继续删除令牌(或将其存档)。
如果您的用例故意想知道客户端是否收到了该消息,那么您将不得不实施here。