我有一个C#项目通过HTTP帖子发送ios和Android的客户。
不幸的是,当客户端卸载我的应用程序时,他们的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;
当您的应用程序从设备上卸载时,相应的注册令牌将被FCM服务器无效,因此任何发送到该特定令牌的消息都将导致NotRegistered
响应(另请参阅请参见我的帖子在这里(。在这种情况下,您可以继续删除令牌(或存档(。
如果您的用例有意知道是否在客户端收到了消息,则必须实现交货收据。