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

时间:2014-04-03 12:48:30

标签: push-notification apple-push-notifications pushsharp

我有一个使用PushSharp向ios设备发送推送通知的应用程序。 这是一个Windows服务。我尝试使用大量无效的deviceTokens列表进行大规模测试(我没有很多有效的令牌)。

问题是大多数令牌都没有触发PushBroker的事件。 一些令牌(很少)会导致OnNotificationFailed方法被触发(当然有一条消息' Invalid token'。

在这种情况下,它可能是已知的apns行为,因为PushSharp的行为与我预期的不同。我在我的逻辑中指望这些回应。

进行这样的测试是否合理?

我应该期待这样的行为吗?如果PushBroker没有触发其事件,这意味着什么?

感谢您的任何建议或评论。

1 个答案:

答案 0 :(得分:1)

虽然我没有查看过PushSharp代码,但我实现了一个与APNS服务器通信的服务器,所以我可以告诉你这种行为的一些可能原因。

当Apple的APNS服务器遇到无效的设备令牌(或任何其他类型的无效数据,例如负载太长)时,它会向套接字写入错误响应并关闭连接。

现在,如果您尝试发送10个通知,并且仅在第10条消息之后收到错误响应(在您的情况下通过OnNotificationFailed),表明第5条消息失败,这意味着Apple从未将消息6处理为10(所以如果你期望为其中一些人触发OnNotificationFailed,那就是它没有发生的原因)。必须重新发送这些消息。我不知道PushSharp是自动处理这种重新发送还是你必须自己处理它。

除了这种复杂情况之外,在某些情况下(至少当我尝试使用无效令牌时)你(或者你的情况下是PushSharp)可能无法读取Apple的错误响应,在这种情况下你只会注意到某些东西连接关闭时发生错误(即在尝试发送消息时会出现故障)。 在这种情况下,您必须打开一个新套接字,但您不知道哪个消息导致失败以及应重新发送哪些消息。

我建议您只使用有效的设备令牌,并尽力保持您的数据库不受无效令牌的影响,因为处理由此类令牌引起的错误响应和连接关闭可能会非常棘手。