【问题标题】:APN (Apple Push Notification) payload size limitAPN(Apple 推送通知)有效负载大小限制
【发布时间】:2014-12-01 17:53:51
【问题描述】:

official documentation你可以找到信息:

每个推送通知都包含一个有效负载。有效载荷包含 有关系统应如何提醒用户的信息以及任何 您提供的自定义数据。通知允许的最大大小 有效负载为 256 字节;苹果推送通知服务拒绝任何 超过此限制的通知。

然而在 WWDC 14 我们可以看到这个截图:

不知道苹果官方有没有关于推送通知大小限制的声明。我对其进行了测试,发现 256 字节可以工作,但文档说它不应该。有人可以确认或拒绝远程通知的大小吗?

【问题讨论】:

  • 根据我自己的测试,它适合您在警报弹出屏幕上看到的大约 3-4 行文本。每行大约有几个词。我倾向于认为它类似于您可以在推文中写入的数量,可能要少一些。我不知道拒绝通知,但我知道如果我输入的文本超过 3 到 4 行,它们会被截断而不显示。
  • Apple 似乎还没有更新他们的 APNS 文档。我找不到任何提到有效载荷大小增加的官方 Apple 文档。
  • iOS7- 为 256 字节,iOS8+ 为 2KB。前 HTTP/2 它的 4KB。阅读更多:jeenalinfotech.com/blogs/ios/…
  • @Zhang 通知也可用于发送数据,即未向用户显示;因此有兴趣了解有效载荷的大小。
  • 我正在使用 VOIP 并且警报对象大小仍然截断接近约 1KB。在 VOIP 的情况下如何使用最大限制 5KB。有什么建议吗?

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


【解决方案1】:

Apple 已经更新了文档。 2KB 的最大有效负载大小仅适用于运行 iOS 8 的设备。official doc 表示:

在 iOS 8 及更高版本中,通知允许的最大大小 有效负载为 2 KB;苹果推送通知服务拒绝任何 超过此限制的通知。 (在 iOS 8 之前和 OS X 中, 最大有效载荷大小为 256 字节。)


根据更新后的Apple docs,大小为 4KB。

  • 对于常规远程通知,最大大小为 4KB(4096 字节)
  • 对于 Internet 协议语音 (VoIP) 通知,最大大小为 5KB(5120 字节) 注意

如果您使用旧版 APNs 二进制接口发送 通知而不是 HTTP/2 请求,最大有效负载大小 为 2KB(2048 字节)

【讨论】:

  • 我想提一下,与文档相比,256 字节的限制似乎不适用于 iOS 7。人们测试并确认他们的 iOS 7 设备可以愉快地接收 > 256 字节的消息。 github.com/djacobs/PyAPNs/pull/79#issuecomment-51021572
  • 那么是2000字节还是2048字节?
  • @user1227928 明确表示 2 千字节,因此您的答案是 2000 字节。 kibibit KiB (en.wikipedia.org/wiki/Kibibit) 是 1024 字节。但无论如何,我们都知道 Apple 混淆了这些定义(在软件方面他们可能使用千字节作为 1024,但在设备存储大小上他们使用 1000)。
  • @Ganesh - 实际上,Alejandro 最初提出的观点是,按照国际标准(参见他的 wiki 链接),2KiB 表示 2048 字节,2KB 表示 2000 字节。然而,在实践中,KB 在计算机软件中被如此普遍地使用了很长时间,表示 1024,因此假设任何一种方式都是不安全的。我自己不遵守这个标准,很难改掉几十年的习惯,所以我不能抱怨;)
【解决方案2】:

对于 iOS 9 有一些变化:

HTTP/2 介绍
有效负载增加到 4KB

4 KB 限制适用于所有版本的 iOS 和 OS 10

查看official link

  • 对于常规远程通知,最大大小为 4KB (4096 字节)

  • 对于 Internet 协议语音 (VoIP) 通知,最大 大小为 5KB(5120 字节)

  • 如果您使用旧版 APNs 二进制接口而不是 HTTP/2 请求来发送通知,则最大有效负载大小为 2KB(2048 字节)

查看此视频链接了解有关 HTTP/2 功能的更多详细信息
https://developer.apple.com/videos/play/wwdc2015-720/

【讨论】:

  • 这不是真的,他们会在2016年添加那些东西,据我所知,没有日期
  • http/2 apns 得到官方支持。 developer.apple.com/news/?id=12172015b
  • 嗨,我正在使用 VOIP,但它仍然会将更改对象大小截断为仅 512 字节。当 Apple Document 说 VOIP 增加到 5KB 时,这有什么意义。有什么建议吗?
【解决方案3】:

根据 node-apn 项目的测试,在 beta 期间,大小从 256 扩展到 2KB,我认为 Apple 可能没有更新他们的文档以反映这一变化。 The discussion on the node-apn project.

编辑:Urban Airship also updated their backend for 2KB as well

【讨论】:

    【解决方案4】:
    • 对于定期远程通知,最大大小为 4KB(4096 字节)
    • 对于互联网协议语音 (VoIP) 通知,最大大小为 5KB(5120 字节)

    注意

    如果您使用旧版 APNs 二进制接口而不是 HTTP/2 请求来发送通知,则最大有效负载大小为 2KB(2048 字节)

    苹果文档: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW1

    【讨论】:

      【解决方案5】:

      根据最新的official documentation,有效负载限制为 4096 字节或 2048 字节的常规通知,以及 5120 字节的 VoIP 通知:

      有效负载的最大大小取决于您发送的通知:

      • 对于常规远程通知,最大大小为 4KB(4096 字节)
      • 对于 Internet 协议语音 (VoIP) 通知,最大大小为 5KB(5120 字节)

      注意:如果您使用旧版 APNs 二进制接口而不是 HTTP/2 请求来发送通知,则最大有效负载大小为 2KB(2048 字节)。

      在 iOS 8 之前,限制为 256 字节。

      【讨论】:

      • 很好的信息,但仅供参考,链接不可用。
      • @ipr 谢谢,Apple 有移动文档的习惯。更新并包含最新信息。
      猜你喜欢
      • 2015-04-10
      • 1970-01-01
      • 2018-12-05
      • 2013-07-16
      • 1970-01-01
      • 2017-05-31
      • 2018-04-04
      • 1970-01-01
      • 2016-07-19
      相关资源
      最近更新 更多