it-swarm.dev

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

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

documentation 声明通知有效负载总共不得超过256个字节,但肯定必须对警报文本有特定的字符限制。

136
hpique

警报文本的实际限制不会记录在任何地方。 文档说的唯一的东西 是:

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

这是我能做的一些实验。

  • 警报: 在iOS 7之前,警报显示限制为107个字符。更大的消息被截断,你会在显示的消息的末尾得到一个“...”。在iOS 7中,限制似乎增加到235个字符。如果你超过8行,你的消息也会被截断。
  • 横幅: 横幅被截断约62个字符或2行。
  • 通知中心: 通知中心的消息被截断大约110个字符或4行。
  • 锁定屏幕: 与通知中心相同。

正如这里提醒的是官方文档中的一个非常好的说明:

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

230
ascandroli

它应该是236个字节。据我所知,警报文本的大小没有限制,只有总有效负载大小。因此,考虑到有效负载是否最小并且仅包含警报信息,它应该如下所示:

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

这需要20个字符(20个字节),留下236个字节放在警报字符串中。使用ASCII将是236个字符,并且对于UTF8和UTF16可以更小。

26
Anurag

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

它明确指出:

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

ascandroli声称 上面 他们能够发送1400个字符的消息。我自己使用新通知格式进行测试表明,在256字节限制上只有1个字节的消息被拒绝。鉴于文档是 非常明确 在这一点上我建议使用256更安全,无论你可以通过实验实现什么,因为无法保证Apple将来不会将其更改为256 。

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

15
William Denniss

编辑:

使用 最新信息 更新答案

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

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

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

旧答案:根据Apple文档,iOS 8的有效负载为2千字节(2048字节),iOS 7及之前为256字节。 (删除了链接,因为它是一个旧文档,现在它已经坏了)

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

通知有效负载

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

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

11
jcesarmobile

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

AlertBannerNotification Center

10
Loozie

对于常规远程通知,最大大小为 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有效负载的支持。

7
Elenasys

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

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

5
klefevre

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

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

1
Burak

Apple更新文档:

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

1
SaRaVaNaN DM

Apple Push会因各种原因拒绝字符串。我测试了Push推送的各种场景,这是我的工作修复(在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()
1
Philip Fung

看我的测试 这里

我最多可以发送33个汉字和13个字节的自定义值。

0
firebear