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

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

文件指出 通知有效负载必须总共低于256字节,但是肯定对警报文本有特定的字符限制。

193336 次浏览

应该是236字节。据我所知,对于警报文本的大小没有限制,只有总有效载荷的大小。因此,考虑到有效载荷是最小的,并且只包含警报信息,它应该看起来像:

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

这将占用20个字符(20个字节) ,在警报字符串中留下236个字节。使用 ASCII 将是236个字符,使用 UTF8和 UTF16可能会小一些。

警报文本的真正限制在任何地方都没有文档说明。 文件上说的唯一特点是:

在 iOS8和更高版本中,通知有效负载的最大大小是2KB; 苹果推送通知服务拒绝任何超过这个限制的通知。(在 iOS8和 OSX 之前,最大有效载荷大小是256字节。)

这是我在做实验时能找到的。

  • 警告: 在 iOS7之前,警告显示限制是107个字符。较大的消息被截断,您将在显示的消息的末尾得到一个“ ...”。而 iOS7的限制似乎增加到了235个字符。如果超过8行,您的消息也将被截断。
  • 横幅: 横幅在62个字符或2行左右被截断。
  • 通知中心: 通知中心中的消息被截断约110个字符或4行。
  • 锁定屏幕: 与通知中心相同。

提醒一下,官方文件中有一条非常好的注释:

如果有必要,iOS 会截断您的消息,以便它能够很好地适应每种通知传递方式; 为了获得最佳结果,您不应该截断您的消息。

增强格式通知的限制是 记录在案

它明确指出:

有效负载不能超过256字节,并且不能以 null 结束。

Ascandroli 声称 以上能够发送1400个字符的消息。我自己使用新的通知格式进行的测试表明,只有超过256字节限制1字节的消息被拒绝。考虑到文档在这一点上是 非常露骨,我建议使用256更安全,不管你可能能够实验性地达到什么,因为不能保证苹果公司将来不会把它改成256。

至于警报文本本身,如果你可以适应它在256个总有效载荷大小,然后它将显示在 iOS。它们会截断显示在状态栏上的消息,但是如果打开通知中心,整个消息就在那里。它甚至呈现换行符 \n

苹果推送将拒绝一个字符串的各种原因。我测试了各种推送交付的场景,下面是我的工作补丁(在 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()

看看我的测试 给你

我可以发送多达33个中文字符和13个字节的自定义值。

根据 WWDC 713 _ hd _ whats _ new _ in _ ios _  通知。之前对于推式有效载荷的 256字节大小限制现在已经增加到了对于 iOS8的 两千字节

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

对于常规远程通知,最大大小为 < strong > 4KB (4096字节) Https://developer.apple.com/library/content/documentation/networkinginternet/conceptual/remotenotificationspg/creatingthenotificationpayload.html

IOS 的大小限制是256字节,但是自从 iOS8的引入已经变成了2kb!

Https://forums.aws.amazon.com/ann.jspa?annid=2626

随着 iOS8的推出,苹果引入了新的功能,使一些丰富的新 移动推送通知的用例ーー交互式推送 通知、第三方小部件和更大的(2KB)有效负载, 我们很高兴地宣布支持新的移动推广 我们正在发布一个新的 iOS8 演示如何实现这些新特性的示例应用程序 还支持更大的2KB 有效载荷。

编辑:

最新资料更新答案

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

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

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

老答案: 根据苹果文档,iOS8的有效负载为2千字节(2048字节) ,iOS7和更高版本为256字节。(删除链接,因为它是一个旧的文档,它现在已经坏了)

因此,如果你只是发送文本,你有2028(iOS8 +)或236(iOS7 -)字符可用。

通知有效负载

每个远程通知包括一个有效负载 有关系统应该如何提醒用户的信息,以及任何 提供的自定义数据。在 iOS8和更高版本中,允许的最大大小 通知有效负载为2KB; 苹果推送通知 服务拒绝任何超过此限制的通知 在 iOS8和 OSX 中,最大有效载荷大小是256字节。)

但是我已经测试过了,你也可以向 iOS7设备发送2KB,甚至在生产配置中也是如此

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

AlertBannerNotification Center

根据 更新的苹果文件(查看我的答复日期) :

”... 当使用 HTTP/2提供程序 API 时,最大有效负载大小为4096 使用遗留的二进制接口,最大有效负载大小为2048 苹果推送通知服务(APNs)拒绝任何通知 超过最大尺寸

苹果更新文件:

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