iOS警报行为与相同的APNS消息不一致

时间:2014-06-07 00:16:30

标签: ios notifications push amazon-sns

服务器端的人在这里。

我将完全相同的APNS有效负载发送到同一设备,我看到了不同的结果:

  1. 手机亮起,显示警告
  2. 手机亮起,无警报
  3. 据我所知,这是随机的。有时手机会显示警报,有时则不会。但在所有情况下,APNS消息都是相同的。

    任何一种情况都会随机发生。尽管我努力,但我无法重现一种模式。

    在两种情况下,APNS有效负载看起来都相同:

    {
      "aps": {
        "alert": "Blah Blah Blah something useful happened",
        "badge": 0
      }
    }
    

    我想弄清楚的是,问题出在哪里?这是iOS客户端问题还是服务器端问题?

    到目前为止,我已经能够通过以下推送服务重现该问题:

    • 亚马逊SNS
    • Urban Airship
    • 解析
    • PushSharp

    iOS是否对我不知道的通知做了些什么?这是APNS问题吗?有效载荷包是搞砸了吗?或者它是一个应用程序问题?

1 个答案:

答案 0 :(得分:1)

好的,我找到了答案。

如果目标设备的徽章数大于0且发送了徽章数为0的通知,则iOS会清除应用程序的所有通知。这样可以在屏幕上快速闪烁,无需显示通知。

要重现,请将其发送到设备以获取徽章数量:

{
  "aps": {
    "alert": "this notif will show up",
    "badge": 2
  }
}

然后,发送此有效负载并且notif将不会显示:

{
  "aps": {
    "alert": "this notif will not show up",
    "badge": 0
  }
}

Apple在其文档中有关于徽章的快速说明,“要删除徽章,请将此属性的值设置为0”。这不仅仅是删除徽章,而是阻止发送通知显示并清除之前可能仍未读取的任何通知。

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW1