整个推送流程分为三步骤:
- 收集用户身份识别码
- 向用户发送推送信息
- 从苹果获取卸载用户
1. 收集用户身份识别码
上图中,只有第4步是需要app来操作的,其他步骤iOS系统自动完成。
2. 向用户发送推送信息
上图中,Provider发信息给APNS是需要开发的,后面的流程都是Apple来完成的,最后需要在App上对接收到的Push信息进行响应,也可以使用系统默认的响应方式。
3. 获取卸载用户
这个过程是可选的,非必需的。如果经常要向所有用户推送信息的话,没有执行这个过程,你的数据库里可能会存在很多很多不存在的用户,因为他们把你的App卸载了,哪怕你给他们发推送,他们也是收不到的。这种无效的发送不仅浪费服务器存储空间,还大大降低了发送信息的速度。
为了解决这个问题,我们需要将卸载的用户从服务器中删除。
然而,用户在卸载App的时候,是不会向服务器发送信息的,因此我们无法知道用户是否删除App了。
唯一的方法,就是通过APNS的feedback功能。
当服务器试图向一批用户发送Push信息时,Apple会从中找到已经卸载的用户,然后把这些卸载用户的deviceToken存起来,我们可以通过调用feedback的API来获取这批用户,从而整理我们的数据库。
值得注意的是,Apple对卸载用户的deviceToken存储是有限制的,具体哪些限制不是很清楚,但是有一点可以肯定,当你尝试获取卸载用户后,Apple就会清空这个列表,防止下次再次获取这批卸载用户。