如果字符数限制超过80个字符,则推送通知未送达

时间:2016-09-01 07:09:25

标签: ios amazon-web-services push-notification apple-push-notifications

对于发送推送通知,我们使用了亚马逊简单通知服务(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个字符,包括有效负载大小。

我真的很想我错过了什么?

1 个答案:

答案 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字符占用的空格超过一个字节,因此您可以有效地为消息使用更少的字符。

相关问题