使用 SNS Payload 长度的 Apple 推送通知消息

Posted

技术标签:

【中文标题】使用 SNS Payload 长度的 Apple 推送通知消息【英文标题】:Apple Push Notifiction message using SNS Payload length 【发布时间】:2014-05-29 10:42:10 【问题描述】:

我正在使用 AWS SNS 向苹果设备推送通知。但是,我面临很多关于可以传递给 SNS 的消息长度的问题。例如。

如果我使用以下消息,它将被传递:


    "default":"This is the default message",
    "APNS":"
              \"aps\":
                        \"badge\":9,
                        \"alert\":\"The ninth season of supernatural, an American paranormal drama television series created by Eric Kripke, premiered on October 8, 2013, concluded on May 20, 2014, and contained 23 episodes. On February 14, 201\",
                        \"sound\":\"default\"
                      
            "


with alert's value(which is the actual message) : 208 characters
Total characters : 319 characters

但如果我在消息中再添加 1 个字符(警报值),它就不起作用了。

再次,如果我使用以下 json 并减少消息长度(减少 25 个字符)和沿 aps 的 1 个额外参数,则工作长度如下:


       "default":"This is the default message",
       "APNS":"
                 \"aps\":
                           \"badge\":9,
                           \"alert\":\"The ninth season of supernatural, an American paranormal drama television series created by Eric Kripke, premiered on October 8, 2013, concluded on May 20, 2014, and contained 23 epis\",
                           \"sound\":\"default\"
                         ,
                 \"sound\":\"newMessage.aif\"
               "


with alert's value(which is the actual message) : 183 characters
Total characters : 324 characters

但是,如果我在消息(警报值)中再添加 1 个字符,它就不起作用了。

在发送消息之前,我似乎无法弄清楚我需要做多少修剪,以免失败。有人知道吗?

【问题讨论】:

【参考方案1】:

您的消息的有效负载是:


     "aps":
        "badge":9,
        "alert":"The ninth season of supernatural, an American paranormal drama television series created by Eric Kripke, premiered on October 8, 2013, concluded on May 20, 2014, and contained 23 epis",
        "sound":"default"
      ,
      "sound":"newMessage.aif"

您在上面看到的所有字符的总长度,包括引号和括号,应该是 alert 属性的内容)。您应该避免任何不属于警报消息的空格和换行符,因为它们也被计入 256 字节的限制。

请注意,您的第二个示例包含一个附加参数"sound":"newMessage.aif"。这就是您用于提醒的剩余空间较少的原因。

顺便说一句,我不明白您为什么要发送两次sound 参数。这是一个错误吗?它应该只出现在aps 字典中。

来自APNS guide的相关引用:

每个推送通知都包含一个有效负载。有效载荷包含 有关系统应如何提醒用户的信息以及任何 您提供的自定义数据。通知允许的最大大小 有效载荷为 256 字节;苹果推送通知服务拒绝任何 超过此限制的通知。

示例使用空格和换行符进行格式化 可读性。在实践中,省略空格和换行符以减少 有效载荷的大小,提高网络性能。

【讨论】:

谢谢。我无法弄清楚如何计算长度。您指出了正确的方向。顺便说一句,第二个声音只是用于测试目的的另一个参数。 还有一件事。在 notnoop java apns 库中,我们可以选择设置消息的到期时间,即new EnhancedApnsNotification(id, EnhancedApnsNotification.MAXIMUM_EXPIRY, dev_token, payload)。如何在 AWS SNS 中做类似的事情? 关于我的问题的任何问题? @Pankaj 我对 AWS SNS 了解不多

以上是关于使用 SNS Payload 长度的 Apple 推送通知消息的主要内容,如果未能解决你的问题,请参考以下文章

用于 Apple 推送通知 AWS-SNS 或 Heroku 的更好的服务器是啥?

Amazon SNS Apple 推送通知教程中的错误(空指针异常)

AWS SNS 从 Apple APNS 的 .p12 文件中获取证书和私钥

用于移动推送通知的 AWS SNS 的最大有效负载长度是多少?

从 Amazon SNS(APNS 生产)获取“EndpointDisabled”

如何使用 Amazon Simple Notification Service (SNS) 批量发送数百万个推送通知