推送通知警报文本的最大长度是多少?


Answers:


245

警报文本的实际限制没有记录在任何地方。该文档说的唯一一件事是:

在iOS 8及更高版本中,通知有效负载允许的最大大小为2 KB;Apple Push Notification Service拒绝任何超过此限制的通知。(在iOS 8之前和OS X中,最大有效负载大小为256个字节。)

这是我做一些实验所能找到的。

  • 警报:在iOS 7之前,警报显示限制为107个字符。较大的消息被截断,显示的消息末尾会出现“ ...”。使用iOS 7时,限制似乎增加到235个字符。如果您超过8行,您的消息也会被截断。
  • 标语: 标语会被截断,大约62个字符或2行。
  • 通知中心:通知中心中的消息将被截断,大约110个字符或4行。
  • 锁定屏幕:与通知中心相同。

提醒一下,官方文档中有一个很好的注释:

如果有必要,iOS会截断您的消息,以使其适合每种通知传递样式;为了获得最佳效果,您不应该截断您的消息。


8
应该明确的是,应用内UIAlertView没有显示限制;超过一定长度的文本将进入滚动视图。但是,SMS或推送警报可能具有107个字符的限制。
Azdev

1
并且显示的文本不受有效负载的限制,因为当您使用本地化方法时,它不再与1:1匹配。有效负载可能很短,而最终消息可能会更长。问题是关于显示消息,它与有效负载最大长度并不严格相关。
Marcin 2014年

1
我可以将巨大的有效负载发送到沙箱,然后将其交付,但是生产服务器的限制非常严格,只有256个字节,而不是一个字节。
DoctorDbx 2014年

谁能告诉GCM Android push notif显示文本长度?
harikrishnan's

1
1.对于互联网协议语音(VoIP)通知,最大有效负载大小为5 KB(5120字节)。2.对于所有其他远程通知,最大有效负载大小为4 KB(4096字节)。
vikram '18

26

它应该是236个字节。据我所知,对警报文本的大小没有任何限制,但是只有总有效负载大小。因此,考虑有效载荷是否最小并且仅包含警报信息,它应类似于:

{"aps":{"alert":""}}

它占用20个字符(20个字节),剩下236个字节放入警报字符串中。使用ASCII时,它将是236个字符,使用UTF8和UTF16时可能会少一些。


ASCII编码违反JSON规范,该规范要求使用UTF-8,UTF-16LE,UTF-16BE,UTF-32LE或UTF-32BE。参见ietf.org/rfc/rfc4627.txt ; 第4页
Aaron Brager 2013年

14
ASCII是UTF-8的子集,因此始终可以安全地通过线路传输8位ASCII。
帕特里克·霍恩

只是好奇,为什么要提到那应该是236个字节。..我正在处理截断问题。.如果我计算总字符长度,那么它不超过1024个字符,截断警报消息字符长度是509。截断响应的可能原因是什么。任何建议!
Hitendra Joshi

15

增强格式通知的限制在此处记录

它明确指出:

有效负载不得超过256个字节,并且不得为空终止。

上面的 ascandroli声称他们能够发送1400个字符的消息。我自己对新通知格式的测试表明,仅超过256字节限制的1个字节的邮件被拒绝。考虑到文档在这一点上非常明确,我建议使用256更为安全,无论您可能通过实验获得什么,因为无法保证Apple将来不会将其更改为256。

至于警报文本本身,如果您可以将其容纳为256种有效负载大小,那么它将由iOS显示。它们会截断状态栏上显示的消息,但是如果您打开通知中心,则整个消息都在那里。它甚至呈现换行符\n


12

编辑:

最新信息更新答案

通知有效负载允许的最大大小取决于您使用的提供程序API。

使用旧版二进制接口时,最大有效负载大小为2KB(2048字节)。

使用HTTP / 2提供程序API时,最大有效负载大小为4KB(4096字节)。对于互联网协议语音(VoIP)通知,最大大小为5KB(5120字节)

旧的答案:根据苹果文档,iOS 8的有效负载为2 KB(2048字节),而iOS 7及更早版本的有效负载为256字节。(已删除链接,因为它是一个旧文档,现在已断开)

因此,如果您仅发送文本,则可以使用2028(iOS 8+)或236(iOS 7-)字符。

通知有效负载

每个远程通知都包括有效载荷。有效负载包含有关系统应如何警告用户以及您提供的任何自定义数据的信息。在iOS 8及更高版本中,通知有效负载允许的最大大小为2 KB;Apple Push Notification服务拒绝任何超过此限制的通知。(在iOS 8之前和OS X中,最大有效负载大小为256个字节。)

但我已经测试过,即使在生产配置中,您也可以向iOS 7设备发送2 KB


亲爱的下降投票者,如果您由于链接断开而拒绝投票,那么所有信息已经在这里,而且是正确的,该链接仅供参考。另外,很好地评论您为什么投票。
jcesarmobile

10

这是一些屏幕截图(横幅,警报和通知中心)

警报旗帜通知中心


7

对于常规的远程通知,最大大小为4KB(4096字节) https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

### iOS的大小限制为256个字节,但是自从引入iOS 8以来,该大小已更改为2kb!

https://forums.aws.amazon.com/ann.jspa?annID=2626

在iOS 8中,Apple引入了新功能,这些新功能为移动推送通知启用了一些丰富的新用例-交互式推送通知,第三方小部件和较大的(2 KB)负载。今天,我们很高兴宣布支持iOS 8宣布的新的移动推送功能。我们将发布一个新的iOS 8示例应用程序,以演示如何使用SNS实现这些新功能,并且还实现了对更大2KB有效负载的支持。


5

根据WWDC 713_hd_whats_new_in_ios_notifications。先前对推送有效负载的256个字节的大小限制现在已增加到2 KB对于iOS 8,。

资料来源:http : //asciiwwdc.com/2014/sessions/713?q=notification#1414.0


@Diziet对不起,关于这一点,我找不到正式的说明,但是它已在上届WWDC上正式宣布。即使是城市飞艇annonced它:urbanairship.com/blog/2014/07/02/...
klefevre

如果有人想要苹果链接
参见

@ kl91没关系。与评论不同步,我在找到来源时删除了评论。如果你下载的PDF是82页
Diziet

1
@ kl94,因此,如果该应用仍支持iOS 7定位,那么2kB大小限制是否也适用于发送到iOS 7设备的推送通知?还是问题是:新的2kB是否适用于所有推送通知,无论它面向的平台是什么?

@Jing我们可以乐观地认为新的大小限制将适用于每个平台。
klefevre 2014年

1

苹果推送会出于各种原因拒绝字符串。我测试了各种推送交付方案,这是我的工作解决方案(在python中):

#  Apple rejects push payloads > 256 bytes (truncate msg to < 120 bytes to be safe)
if len(push_str) > 120:
    push_str = push_str[0:120-3] + '...'

# Apple push rejects all quotes, remove them
import re
push_str = re.sub("[\"']", '', push_str)

# Apple push needs to newlines escaped
import MySQLdb
push_str = MySQLdb.escape_string(push_str)

# send it
import APNSWrapper
wrapper = APNSWrapper.APNSNotificationWrapper(certificate=...)
message = APNSWrapper.APNSNotification()
message.token(...)
message.badge(1)
message.alert(push_str)
message.sound("default")
wrapper.append(message)
wrapper.notify()

谢谢。我认为最重要的是120背后的原因-您是如何得出这个数字的?不过,在引号和换行符之后进行长度截断会更好吗,因为这样可以更好地表示发送给Apple的最终字符串的长度?
Rup

感谢您对删除所有引号的评论,在iOS 11上,它有一个怪异的错误,它听起来像消息,但不显示任何内容。
PedroGóes17年

1

根据更新的Apple文档(检查我的回答日期):

“ ...使用HTTP / 2提供程序API时,最大有效负载大小为4096字节。使用旧版二进制接口,最大有效负载大小为2048字节。Apple推送通知服务(APN)拒绝任何超过最大大小的通知。”


1

苹果更新的文档:

每个远程通知都包括有效载荷。有效负载包含有关系统应如何警告用户以及您提供的任何自定义数据的信息。通知有效负载允许的最大大小取决于您使用的提供程序API。使用HTTP / 2提供程序API时,最大有效负载大小为4096个字节。使用旧版二进制接口,最大有效负载大小为2048字节。Apple推送通知服务(APN)拒绝任何超过最大大小的通知。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.