服务器端的人在这里。
我将完全相同的APNS有效负载发送到同一设备,我看到了不同的结果:
据我所知,这是随机的。有时手机会显示警报,有时则不会。但在所有情况下,APNS消息都是相同的。
任何一种情况都会随机发生。尽管我努力,但我无法重现一种模式。
在两种情况下,APNS有效负载看起来都相同:
{
"aps": {
"alert": "Blah Blah Blah something useful happened",
"badge": 0
}
}
我想弄清楚的是,问题出在哪里?这是iOS客户端问题还是服务器端问题?
到目前为止,我已经能够通过以下推送服务重现该问题:
iOS是否对我不知道的通知做了些什么?这是APNS问题吗?有效载荷包是搞砸了吗?或者它是一个应用程序问题?
答案 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”。这不仅仅是删除徽章,而是阻止发送通知显示并清除之前可能仍未读取的任何通知。