【问题标题】:Push notification not delivered if character limit exceeds 80 characters如果字符限制超过 80 个字符,则不会发送推送通知
【发布时间】:2017-01-08 22:40:14
【问题描述】:

为了发送推送通知,我们使用了Amazon Simple Notification Service (Amazon SNS)。当我通过发送大约 80 个字符来测试推送通知时,我会收到推送通知,但是当字符超过 80 或 85 个时,通知不会发送。

我们对有效负载有 256 个字节的限制,但我认为如果我发送那么多字符,它可能不会超过这个限制。至少应该截断消息。

我发现:

在 iOS 7 之前,警报显示限制为 107 个字符。大 消息被截断,你会在结尾处得到一个“...” 显示的消息。在 iOS 7 中,限制似乎增加到 235 人物。如果你超过 8 行,你的消息也会得到 被截断。

但就我而言,我什至没有收到通知。是否与 Amazon SNS 相关?我是否缺少要检查的内容?

编辑 1:

我没有附加图片或任何带有短信的内容。我只是发送纯文本消息。

编辑 2:

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

我的设备安装了 iOS 9。因此对于该设备,2000 字节 远远超过 80-85 个字符(包括有效负载大小)的限制。

我真的对自己缺少的东西感到绝望?

【问题讨论】:

  • 您应该记住 256 字节的限制适用于 整个 有效负载,因此不仅是您的消息,还有其他所有内容 - 有效负载是 JSON 格式,因此密钥和所有特殊字符也算在内。
  • 感谢@Losiowaty,这增加了我的知识。现在除了那个 JSON 之外,可能是什么在增加大小?其实我对服务器数据没有完美的想法..

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


【解决方案1】:

您应该记住 256 字节的限制是针对 整个 有效负载的,因此不仅是您的消息,还有其他所有内容 - 有效负载是 JSON 格式,因此密钥和所有特殊字符也算在内到了极限。

这是 Apple 要求的被认为是正确的最小负载:

{
    "aps" : {
        "alert" : "your text"
    }
}

所以我们已经“松散”了 19 个字节,以发送一个简单的通知。如果我们还想有一个自定义标题:

{
    "aps" : {
        "alert" : {
            "title" : "your title",
            "body" : "your text"
        }
    }
}

这增加了 40 个“丢失”字节(大约 15%)。添加自定义声音和徽章也会减少实际消息的剩余数量。

现在,这些字节仅由于所需的密钥而丢失,您对此无能为力。我没有使用过 Amazon SNS,但他们可能会出于自己的目的添加一些自定义字段,从而使您的消息空间减少。您可以通过检查 userInfo 字典在您的 didReceiveRemoteNotification 方法中检查这一点。简单的NSLog(@"userInfo -> %@", userInfo) 应该将所有内容转储到控制台。就额外字符而言,这种表示方式与 JSON 的比例不会是 1:1,但会让您了解除了必填字段之外还发送了哪些内容(如果有的话)。

另外值得一提的是,非 ASCII 字符会占用超过 1 个字节的空间,因此您可以有效地使用更少的字符来发送消息。

【讨论】:

    猜你喜欢
    • 2013-07-11
    • 2015-05-22
    • 2011-09-19
    • 2022-01-12
    • 1970-01-01
    • 2020-06-19
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多