2014-03-04 35 views
1

刚刚开始学习和实施我们的服务器发送推送通知在C# 我看了下面:Apple Push Notifications in Bulk 我也检查了push-sharp和MoonApns项目的代码参考。苹果推送通知与版本2 - 限制和问题

这两个项目都使用消息的版本“1”。

苹果有新的格式(2)这里: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html

我没有参考V1进行比较,但通过网上找,好像他们加入一次消息发送“批”的能力。所以,我们不必一一发送每一个通知,我们可以发送包裹。

因为这是新的和不知所措,我不知道我是否应该尝试和处理v2?

  1. 看到ItemId是1个字节 - 我们不能在一批中发送超过256条消息,对吗? ItemId有什么好处?它应该从1开始?他们应该增加吗?
  2. 如果我得到错误,它会指定NotificationIdentifier,如果我发送了一批100条消息并将消息50作为错误返回,它是否也能工作。我应该怨恨剩余的50?或整批?

我想问题是为什么?为什么这种新格式?为了获得更好的多条消息性能?我认为,即使我没有等待v1的时候转储消息,它对我们的使用来说也绰绰有余。

回答

1
  1. ItemId不是通知的标识符。它标识项目的类型(1表示设备令牌,2表示有效载荷,3表示通知标识符,4表示过期数据,5表示优先级)。因此它对一批中发送的消息数量没有影响。

  2. 如果消息50出现错误,你必须要重新发送消息51 - 我还没有尝试过使用这种新的格式100

,我不知道它是很好的。它添加了以前格式中不存在的通知优先级,但如果您不需要,您可以使用格式1。

顺便说一句,从目前的文档来说,目前还不清楚你应该如何批量使用新格式的通知。

单个框架必须包含(至少)单个通知的所有项目(即设备令牌,有效负载,消息ID,到期时间和优先级),除非其中一些是可选的(文档中未指定) 。

但是,如果您只在框架中包含一个通知,则不会批处理任何内容。如果您尝试在单个框架中包含多个通知,则不清楚该框架将如何解释。需要为每个项目指定项目类型意味着项目的顺序无关紧要(不同于它所做的格式0和1)。因此,例如,如果您决定在同一帧中批量处理两个通知,则在同一帧中将有两个通知ID和两个设备令牌。在这种情况下,不清楚哪个设备令牌与哪个通知ID相关(除非订单确实重要)。也许这种格式是一种中间格式,稍后可以扩展为允许将单个有效载荷发送到多个设备令牌(这将允许您为多个设备令牌指定有效载荷)。这将是有益的。

格式0和1指定为here

+0

'ItemId'好点我想我们应该重复1.2.3.4.5为什么?毫无头绪。现在看来,“Enchanced”已经足够好了。谢谢! – katit