iOS推送通知的警报文本的最大长度是多少?
documentation表示the notification payload has to be under 256 bytes in total,但警报文本肯定必须有特定字符限制。
答案 0 :(得分:231)
警报文本的实际限制未在任何地方记录。 documentation says唯一的事情是:
在iOS 8及更高版本中,通知有效负载允许的最大大小为2千字节; Apple推送通知服务拒绝任何超出此限制的通知。 (在iOS 8和OS X之前,最大有效负载大小为256字节。)
这是我能做的一些实验。
正如提醒一下,这是官方文件中的一个非常好的说明:
如有必要,iOS会截断您的消息,使其适合每种通知传送方式;为了获得最佳效果,您不应截断您的消息。
答案 1 :(得分:26)
它应该是236个字节。据我所知,警报文本的大小没有限制,只有总有效负载大小。因此,考虑到有效负载是否最小并且仅包含警报信息,它应该如下所示:
{"aps":{"alert":""}}
它占用20个字符(20个字节),留下236个字节放在警报字符串中。 ASCII为236个字符,UTF8和UTF16可能较小。
答案 2 :(得分:15)
增强格式通知的限制为documented here。
明确指出:
有效负载不得超过256个字节,且不得以空值终止。
ascandroli声称above他们能够发送1400个字符的邮件。我自己使用新通知格式进行测试表明,在256字节限制上只有1个字节的消息被拒绝。鉴于文档在这一点非常明确,我建议使用256更安全,无论您可以通过实验获得什么,因为无法保证Apple不会将其更改为256将来
对于警报文本本身,如果您可以将其安装在256总有效负载大小中,那么它将由iOS显示。它们会截断状态栏上显示的消息,但如果您打开通知中心,则会显示整个消息。它甚至呈现换行符\n
。
答案 3 :(得分:11)
编辑:
更新答案通知有效负载允许的最大大小取决于您使用的提供程序API。
使用传统二进制接口时,最大有效负载大小为2KB(2048字节)。
使用HTTP / 2提供程序API时,最大有效负载大小为4KB(4096字节)。 对于因特网协议语音(VoIP)通知,最大大小为5KB(5120字节)
老答案: 根据apple doc,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千字节,即使在生产配置中也是如此
答案 4 :(得分:10)
以下是一些截图(横幅,提醒和通知中心)
答案 5 :(得分: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有效载荷的支持。
答案 6 :(得分:5)
根据WWDC 713_hd_whats_new_in_ios_notifications。 iOS 8的先前大小限制 256字节现已增加到 2千字节。
来源: http://asciiwwdc.com/2014/sessions/713?q=notification#1414.0
答案 7 :(得分:1)
Apple 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()
答案 8 :(得分:1)
根据updated Apple document(查看我的回答日期):
“...使用HTTP / 2提供程序API时,最大有效负载大小为4096 字节。使用传统二进制接口,最大有效负载大小为2048 字节。 Apple推送通知服务(APN)拒绝任何通知 超过最大尺寸。“
答案 9 :(得分:1)
Apple更新了文档:
每个远程通知都包含一个有效负载。有效负载包含有关系统应如何提醒用户以及您提供的任何自定义数据的信息。通知有效负载允许的最大大小取决于您使用的提供程序API。 使用HTTP / 2提供程序API时,最大有效负载大小为4096字节。使用传统二进制接口,最大有效负载大小为2048 字节。 Apple推送通知服务(APN)拒绝任何超出最大大小的通知。
答案 10 :(得分:0)
查看我的测试here
我最多可以发送33个中文字符和13个字节的自定义值。