什么是iOS的推送通知的警报文本的最大长度?
该文件指出,通知有效载荷必须下总共256个字节,但肯定必须有警报文本的特定字符的限制。
什么是iOS的推送通知的警报文本的最大长度?
该文件指出,通知有效载荷必须下总共256个字节,但肯定必须有警报文本的特定字符的限制。
对于警报文本实际限制为不记录任何地方。 的唯一文件说的是:
在IOS 8和以后,允许的有效载荷通知的最大尺寸是2千字节; 苹果推送通知服务拒绝任何超过这一限制的任何通知。 (现有到iOS 8和在OS X,最大有效载荷大小为256个字节)。
这是我能找到做一些实验。
正如这里提醒是从官方文档一个很好的提示:
如果必要的话,iOS的截断你的信息,使其在每个通知传递的风格非常适合; 为了达到最佳效果,你应该不会截断你的消息。
它应该是236个字节。 有在警报文本的大小没有限制,据我所知,但只有有效载荷总规模。 因此,考虑到如果有效载荷是最小的,仅包含警报信息,它应该是这样的:
{"aps":{"alert":""}}
这需要最多20个字符(20个字节),剩下236个字节放警报字符串内。 随着ASCII,这将是236个字符,可以用UTF8和UTF16较小。
增强格式通知的极限记录在这里 。
它明确规定:
有效载荷不得超过256个字节,且不能是空值终止。
ascandroli权利要求以上 ,他们能够与1400个字符发送消息。 我自己用新的通知格式的测试表明,消息只是一个字节超过256字节限制被拒绝。 鉴于文档是在这一点上我认为它是安全使用256无论你可能能够实现实验,因为没有保证苹果不会在未来将其更改为256什么非常明确的 。
至于警报文本本身,如果你能在总共256个有效载荷大小适合它,然后它会被iOS的显示。 他们截断,显示了状态栏上的消息,但如果你打开通知中心,整个消息是存在的。 它甚至使得换行符\n
。
编辑:
更新的答案最新信息
允许通知有效载荷的最大大小取决于您使用哪个提供商的API上。
当使用传统的二进制接口,最大有效载荷大小是2KB(2048个字节)。
当使用HTTP / 2提供者API,最大有效载荷大小是4KB(4096个字节)。 对于互联网语音协议(VoIP)的通知,最大尺寸为5KB(5120个字节)
OLD解答:根据苹果文档为iOS 8所述有效载荷为2千字节(2048个字节)和为iOS 7和前256个字节。 (删除的链接,因为它是一个古老的doc和现在不对头)
所以,如果你只是发送文本您有可用2028(的iOS 8+)或236(的iOS 7)字符。
通知有效载荷
每个远程通知包括有效载荷。 有效载荷包含有关系统应该如何提醒用户,以及您所提供的自定义数据信息。 在IOS 8和以后,允许的有效载荷通知的最大尺寸是2千字节; 苹果推送通知服务拒绝任何超过这一限制的任何通知。 (现有到iOS 8和在OS X,最大有效载荷大小为256个字节)。
但是我测试过,你可以发2千字节到iOS 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,苹果推出新的功能,使一些富有新的使用案例移动推送通知 - 互动式推送通知,第三方小工具,和大(2 KB)的有效载荷。 今天,我们很高兴地宣布,与iOS 8.宣布了新的手机推送功能的支持我们发布新的iOS 8示例应用程序,演示了如何将这些新功能可以与SNS实现,还实施了更大的有效载荷2KB支持。
按照WWDC 713_hd_whats_new_in_ios_notifications。 的256个字节用于推有效载荷之前的大小限制现已增加到2千字节为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()
根据更新的苹果文档 (检查我的答案为准):
“......当使用HTTP / 2提供者API,最大有效载荷大小是4096个字节。使用传统的二进制接口,最大有效载荷大小是2048个字节。Apple推送通知服务(APN的)拒绝超过最大尺寸的任何通知。”
苹果更新文件:
每个远程通知包括有效载荷。 有效载荷包含有关系统应该如何提醒用户,以及您所提供的自定义数据信息。 允许通知有效载荷的最大大小取决于您使用哪个提供商的API上。 当使用HTTP / 2提供者API,最大有效载荷大小是4096个字节 。 使用传统的二进制接口,最大有效载荷大小是2048个字节。 苹果推送通知服务(的APN)拒绝超过最大尺寸的任何通知。
看到我的测试在这里
我可以把多达33个字符,中国和13个字节的自定义值。