PushSharp - 如何触发 OnDeviceSubscriptionExpired

Posted

技术标签:

【中文标题】PushSharp - 如何触发 OnDeviceSubscriptionExpired【英文标题】:PushSharp - How to trigger OnDeviceSubscriptionExpired 【发布时间】:2015-09-09 21:53:08 【问题描述】:

我有如下所示的标准 pushshap 代码

  PushBroker push = new PushBroker();

  var appleCert = File.ReadAllBytes(@"myp12.p12");

   push.OnNotificationSent += NotificationSent;
   push.OnChannelException += ChannelException;
   push.OnServiceException += ServiceException;
   push.OnNotificationFailed += NotificationFailed;
   push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
   push.OnChannelCreated += ChannelCreated; 
   push.OnChannelDestroyed += ChannelDestroyed;

   push.RegisterAppleService(new ApplePushChannelSettings(false, appleCert, "password"));


   push.QueueNotification(new AppleNotification()
                       .ForDeviceToken(mydevice)
                       .WithAlert("hello world")
                       .WithBadge(1)
                       .WithSound("default")
                       .WithCategory("INVITE_CATEGORY")
                       .WithCustomItem("custom-item", "i'm so cool"));


   push.StopAllServices();

我可以发送推送通知就好了。在正确的时间调用适当的事件。

我要测试的是当 Apple 告诉我此特定订阅已过期时会发生的逻辑。我附加了该事件,但似乎无法调用它。它看起来或多或少是这样的

static void DeviceSubscriptionExpired(object sender, string expiredDeviceSubscriptionId, DateTime timestamp, INotification notification)
    
       //logic that deactivates subscription in database
    

如何触发此事件?

我想我可以删除该应用,然后尝试向此设备发送多个通知。但这似乎不起作用。

我错过了什么?

【问题讨论】:

【参考方案1】:

我认为此活动不适用于 ios。在我与 PushSharp 合作的两年中,Apple 返回的唯一事件是 ServiceException。但我从 Google 收到了 DeviceSubscriptionExpired 和 DeviceSubscriptionChanged。

【讨论】:

正确,此事件目前无法使用 APNS。它将在 PushSharp 3.x 中完成 HTTP/2 APNS 提供程序 API 实现后可用。

以上是关于PushSharp - 如何触发 OnDeviceSubscriptionExpired的主要内容,如果未能解决你的问题,请参考以下文章

PushSharp 事件未针对 WP8 触发

有时 DeviceSubscriptionExpired 事件在未过期的设备 ID 上触发。#PushSharp

PushSharp - 多个无效令牌不调用响应委托

Pushsharp:IOS 通知在本地工作,但不在实时服务器上

对 Apple 的 APNS 的 PushSharp 通知不起作用,不会引发任何异常

如何从 PushSharp 中获得耐用性