iOS推送通知的警报文本的最大长度是多少?
该文档指出,通知有效负载总共必须少于256个字节,但是对于警报文本,一定要有一个特定的字符限制。
iOS推送通知的警报文本的最大长度是多少?
该文档指出,通知有效负载总共必须少于256个字节,但是对于警报文本,一定要有一个特定的字符限制。
Answers:
警报文本的实际限制没有记录在任何地方。该文档说的唯一一件事是:
在iOS 8及更高版本中,通知有效负载允许的最大大小为2 KB;Apple Push Notification Service拒绝任何超过此限制的通知。(在iOS 8之前和OS X中,最大有效负载大小为256个字节。)
这是我做一些实验所能找到的。
提醒一下,官方文档中有一个很好的注释:
如果有必要,iOS会截断您的消息,以使其适合每种通知传递样式;为了获得最佳效果,您不应该截断您的消息。
它应该是236个字节。据我所知,对警报文本的大小没有任何限制,但是只有总有效负载大小。因此,考虑有效载荷是否最小并且仅包含警报信息,它应类似于:
{"aps":{"alert":""}}
它占用20个字符(20个字节),剩下236个字节放入警报字符串中。使用ASCII时,它将是236个字符,使用UTF8和UTF16时可能会少一些。
编辑:
用最新信息更新答案
通知有效负载允许的最大大小取决于您使用的提供程序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
对于常规的远程通知,最大大小为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有效负载的支持。
根据WWDC 713_hd_whats_new_in_ios_notifications。先前对推送有效负载的256个字节的大小限制现在已增加到2 KB对于iOS 8,。
资料来源:http : //asciiwwdc.com/2014/sessions/713?q=notification#1414.0
苹果推送会出于各种原因拒绝字符串。我测试了各种推送交付方案,这是我的工作解决方案(在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()
根据更新的Apple文档(检查我的回答日期):
“ ...使用HTTP / 2提供程序API时,最大有效负载大小为4096字节。使用旧版二进制接口,最大有效负载大小为2048字节。Apple推送通知服务(APN)拒绝任何超过最大大小的通知。”