1. If APNs attempts to deliver a notification but the device is offline, the notification is stored for a limited period of time, and delivered to the device when it becomes available.api
假如用户手机不在线。可能没有信号或者关机吧。APNs会存储转发。等用户在线时再发送app
2.Only one recent notification for a particular application is stored. If multiple notifications are sent while the device is offline, each new notification causes the prior notification to be discarded. This behavior of keeping only the newest notification is referred to as coalescing notifications.ide
假设用户不在线,通知会合并,仅仅会保留最新的一条。post
假如你给用户发了两条通知,但用户反馈说。仅仅收到了一条,那么很是多是用户当时不在线,APNs的合并策略生效。仅仅保留了近期一条this
3.If the device remains offline for a long time, any notifications that were being stored for it are discardedcode
4.The maximum size allowed for a notification payload is 256 bytes; Apple Push Notification Service refuses any notification that exceeds this limit.orm
这个很是重要。payload。就是最后生成的那段Json。不得超过256字节。token
假设超过了,建议去掉一些不需要的參数,把alert,就是提示信息的字数下降接口
5.don’t repeatedly open and close connections. APNs treats rapid connection and disconnection as a denial-of-service attack.ip
6.If you send a notification that is accepted by APNs, nothing is returned.
发送成功的木有返回,仅仅有发送失败的才会返回
7.If you send a notification that is malformed or otherwise unintelligible, APNs returns an error-response packet and closes the connection. Any notifications that you sent after the malformed notification using the same connection are discarded, and must be resent.
这条很是重要,假设有error-response,那么这条以后的通知都需要重发。有很是多开源的库。在发苹果通知时都没有检測error-response,假设你不当心用了。那么用户很是可能反馈“怎么没有通知啊”
8.The notification identifier in the error response indicates the last notification that was successfully sent(实际状况不是,实际上返回的是出错的那条通知的ID). Any notifications you sent after it have been discarded and must be resent.When you receive this status code, stop using this connection and open a new connection.
这是对上一条的补充。假设出错了,需要关闭当前的链接,并且又一次链接再发。error-response中返回的通知ID。可以帮助咱们找出哪条出错了,这样就能知道哪些需要重发了
9.When a push notification cannot be delivered because the intended app does not exist on the device, the feedback service adds that device’s token to its list.
APNS的feedback service会返回那些已经卸载的设备的token--device_token。存储这些token。下次就不用再给他们发了,可以节省点资源。需要注意的是:feedback的接口读取一次,APNS就会清空它的列表。下次再读取时,返回的就是这两次读取之间这段时间新产生的device_token。
仅仅有把这些搞清楚。才方便咱们理解苹果推送的规则,知道本身推送上的一些不足之处