9

我使用 PushSharp 为一些应用程序发送通知。PushSharp 很棒,它确实简化了推送服务的工作,我想知道使用它的正确方法是什么?我还没有找到关于那个的例子/解释。

现在,当我有消息要发送时,我...

  1. 创建一个 PushSharp 对象
  2. 为所有设备执行 PushService.QueueNotification()
  3. 做一个 PushService.StopAllServices 发送所有排队的消息
  4. 退出方法(并终止 PushService 对象)。

我应该以这种方式工作,还是让这个 PushService 对象保持活动状态并在需要时调用它的方法?

我应该如何使用 PushService 对象来获取未注册的设备 ID?有一个专用实例?

任何建议将不胜感激。

4

1 回答 1

8

这是一个经常出现的问题。

答案不一定是一种方式或另一种方式,但这取决于您的情况。在大多数情况下,在需要时创建 PushBroker 实例绝对没问题,因为大多数平台使用基于 HTTP 的协议来发送通知。对于 Apple,他们在其文档中声明您应该保持与 APNS 的连接打开,以最大限度地减少打开和关闭安全连接的开销。

但是,在实践中,我认为这意味着他们不希望您非常频繁地连接和断开连接(例如:他们不希望您为您发送的每条消息创建一个新连接)。实际上,如果您每隔一段时间(比如说每 15 分钟或每小时)发送一批通知,他们可能不会有问题,您为每批打开一个新连接,然后在完成后关闭它。

我从未听说有人因为这样做而被 Apple 的 APNS 服务器阻止。事实上,在使用推送通知的早期,我有一个错误导致为每个通知创建一个新的 apns 连接。我每天发送数千条这样的通知,但从未从 Apple 那里听到任何消息(最终我将其识别为错误并修复了它)。

至于收集反馈,ApplePushService 默认会在启动 10 秒后轮询反馈服务器,之后每 10 分钟轮询一次。如果您想禁止这种情况发生,您只需将 ApplePushChannelSettings.FeedbackIntervalMinutes 设置为 <= 0。然后您可以在需要时手动使用 FeedbackService 类轮询反馈。

于 2013-05-23T12:24:30.823 回答