我正在尝试从我的.Net服务器向所有Android设备下载我的Android应用程序发送通知。我正在使用PushSharp库。发送通知很好。但我试图从GCM获得响应,告诉我规范的注册ID如果用户卸载应用程序并下载它agian。我有一个向同一个android设备发送两次通知的问题。一个使用新ID和一个使用未注册的ID我试图从我的数据库中删除该ID。这样我只能为单个设备发送一个通知。我注册了由GCM触发的这4个事件。 我可以在哪个事件中执行逻辑?
感谢任何帮助。
这是我的代码:
private static void Events_OnNotificationSent(Notification notification)
{
}
private static void Events_OnNotificationSendFailure(Notification notification, Exception notificationFailureException)
{
}
private static void Events_OnChannelException(Exception exception, PlatformType platformType, Notification notification)
{
}
private static void Events_OnDeviceSubscriptionExpired(PlatformType platform, string deviceInfo, Notification notification)
{
}
private static void Events_OnDeviceSubscriptionIdChanged(PlatformType platform, string oldDeviceInfo, string newDeviceInfo, Notification notification)
{
}
答案 0 :(得分:0)
如果我理解正确,您希望在用户卸载您的应用时从数据库中删除该设备。我正在使用以下逻辑为我的项目执行此操作:
private void Events_OnNotificationFailed(object sender, INotification notification, Exception error)
{
var gcmNotification = notification as GcmNotification;
bool userHasUninstalled = error.Message.Contains("Device Subscription has Expired");
bool isAndroidNotification = gcmNotification != null;
if (isAndroidNotification && userHasUninstalled)
{
foreach (var registrationId in gcmNotification.RegistrationIds)
{
DeleteDeviceByIdentifier(registrationId);
}
}
}