我可以使用PushSharp在哪个事件中获取GCM响应要将通知发送到Android设备?

时间:2013-04-17 11:30:42

标签: c# android .net pushsharp

我正在尝试从我的.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)
    {

    }

1 个答案:

答案 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);
        }
    }
}