对于发送推送通知,我们使用了亚马逊简单通知服务(Amazon SNS)。当我通过在80左右发送字符来测试推送通知时,我会收到推送通知,但是当字符超过80或85时,通知不会被发送。
我们对有效负载的限制为256字节,但如果发送大量字符,我认为它可能超过该限制。至少应该截断消息。
我发现:
在iOS 7之前,警报显示限制为107个字符。大 消息被截断,你会得到一个" ..."在结束时 显示的消息。在iOS 7中,限制似乎增加到235 字符。如果你超过8行,你的信息也会得到 截断。
但就我而言,我甚至都没有收到通知。它与Amazon SNS有关吗?我错过了要检查的东西吗?
编辑1:
我没有附加图片或任何带有短信的内容。我只是发送纯文字信息。
编辑2:
在iOS 8及更高版本中,通知允许的最大大小 有效载荷为2千字节; Apple推送通知服务拒绝任何 超出此限制的通知。 (在iOS 8和OS X之前, 最大有效载荷大小为256字节。)
我正在安装iOS 9的设备。因此,对于该设备, 2000字节远远超过80-85个字符,包括有效负载大小。
我真的很想我错过了什么?
答案 0 :(得分:2)
你应该记住256字节的限制是针对整个有效负载,所以不仅你的消息而且还有其他一切 - 有效载荷是JSON格式,因此密钥和所有特殊字符也算在内到了极限。
这是Apple认为正确的最小有效负载:
{
"aps" : {
"alert" : "your text"
}
}
所以我们已经"松散" 19个字节,发送简单通知。如果我们想要一个自定义标题:
{
"aps" : {
"alert" : {
"title" : "your title",
"body" : "your text"
}
}
}
这增加了40"丢失"字节数(约15%)。添加自定义声音和徽章也会减少实际消息的剩余计数。
现在,这些字节仅由于所需的密钥而丢失,并且您无能为力。我还没有使用过亚马逊SNS,但他们可能会为自己的目的添加一些自定义字段,从而为您留出更少的留言空间。您可以通过检查didReceiveRemoteNotification
字典在userInfo
方法中对此进行检查。简单NSLog(@"userInfo -> %@", userInfo)
应将所有内容转储到控制台。这个表示在额外字符方面与JSON不是1:1,但除了发送必填字段之外,还会告诉您并了解除了必要的字段之外的其他内容。
值得一提的是,非ASCII字符占用的空格超过一个字节,因此您可以有效地为消息使用更少的字符。