首页 文章

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

提问于
浏览
136

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

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

11 回答

  • 1

    根据updated Apple document(查看我的回答日期):

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

  • 15

    警报文本的实际限制不会记录在任何地方 . 唯一的事情documentation says是:

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

    这是我能做的一些实验 .

    • Alerts: 在iOS 7之前,警报显示限制为107个字符 . 截断了较大的消息,您将在显示的消息的末尾获得"..." . 在iOS 7中,限制似乎增加到235个字符 . 如果你超过8行,你的消息也会被截断 .

    • Banners: Banner 约62个字符或2行被截断 .

    • Notification Center: 通知中心的消息被截断大约110个字符或4行 .

    • Lock Screen: 与通知中心相同 .

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

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

  • 0

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

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

    这需要20个字符(20个字节),留下236个字节放在警报字符串中 . ASCII为236个字符,UTF8和UTF16可能较小 .

  • 229

    增强格式通知的限制是documented here .

    它明确指出:

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

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

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

  • 11

    编辑:

    latest information更新答案

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

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

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

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

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

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

    But I've tested and you can send 2 kilobytes to iOS 7 devices too, even in production configurations

  • 26

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

    Alert

    Banner

    Notification Center

  • 7

    对于常规远程通知,最大大小为 4KB (4096 bytes) 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有效负载的支持 .

  • 1

    根据WWDC 713_hd_whats_new_in_ios_notifications . 对于iOS 8,推送有效负载的先前大小限制 256 bytes 现已增加到 2 kilobytes .

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

  • 10

    Apple推出会因各种原因拒绝字符串 . 我测试了推送传递的各种场景,这是我的工作修复(在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

    Apple更新文档:

    每个远程通知都包含有效负载 . 有效负载包含有关系统应如何提醒用户以及您提供的任何自定义数据的信息 . 通知有效负载允许的最大大小取决于您使用的提供程序API . When using the HTTP/2 provider API, maximum payload size is 4096 bytes . 使用 legacy binary interface, maximum payload size is 2048 个字节 . Apple推送通知服务(APN)拒绝任何超出最大大小的通知 .

  • 5

    看我的测试here

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

相关问题