【问题标题】:What is the right way to use PushSharp?使用 PushSharp 的正确方法是什么?
【发布时间】:2013-03-19 00:24:45
【问题描述】:

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

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

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

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

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

任何建议都将不胜感激。

【问题讨论】:

    标签: pushsharp


    【解决方案1】:

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

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

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

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

    关于收集反馈,ApplePushService 默认会在启动 10 秒后轮询反馈服务器,之后每 10 分钟轮询一次。如果您想禁止这种情况发生,您只需将 ApplePushChannelSettings.FeedbackIntervalMinutes 设置为

    【讨论】:

    • 如果我每次都创建新的 PushBroker 实例并连接它的事件,它不会泄漏内存吗?我如何知道何时取消关联事件?
    • Redth,这是一个非常宝贵的评论。特别是关于连接是否需要几乎永远保持打开状态,这是我之前的感觉。
    • @Nicholas 很高兴这有帮助。就像我说的,Apple 的文档要求您保持与他们的连接。实际上,如果您要批量发送通知,则可能不需要这样做,而且我从未听说过 Apple 禁止任何人这样做。
    • @Kugel 这有点晚了,但是您可以正确地取消连接事件,以免泄漏内存......不明白为什么这应该是一个问题......
    • 感谢雷德斯!也许您会很高兴查看我刚刚发布的这个相关问题:stackoverflow.com/questions/20980258/…
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 2021-09-23
    • 2017-04-07
    • 2013-01-09
    • 2019-05-11
    • 2018-02-17
    • 2022-01-07
    • 2012-05-17
    相关资源
    最近更新 更多