本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力。
这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用:
1)IM即时通讯聊天应用:聊天消息通知、音视频聊天呼叫等;
2)新闻资讯应用:最新资讯通知等,典型代码有:网易新闻客户端、腾讯新闻客户端;
3)SNS社交应用:转发/关注/赞等通知,典型代表有:微博、知乎;
4)邮箱客户端:新邮件通知等,典型代表有:QQ邮箱客户端、Foxmail客户端、网易邮箱大师;
5)金融支付应用:收款通知、转账通知等,典型代表有:支付宝、各大银行的手机银行等;
.... ....
除了以上典型场景下,消息推送这种能力已经被越来越多的APP作为基础能力之一,因为移动互联网时代下,用户的“全时在线”能力非常诱人和强大,能随时随地即时地将各种重要信息推送给用户,无疑是非常有意义的。
众所周之,iOS端的这项消息推送能力就是使用苹果提供的APNs服务来实现(有些iOS小白开发者可能看到各种第3方的iOS端消息推送SDK,总会习惯性地认为这是完全由第3方提供的能力,实际上同样是使用APNs,只是封装了一下而已)。目前介绍APNs消息推送的文章多讨论的是手机端的实现,而服务端的消息要怎么“推”出来这样的文章,要么太老,要么只是介绍如何调用第3方的服务端SDK接口而已(如极光推广、友盟推送、腾讯信鸽推送等)。所以本文趁着最近对项目组的老苹果iOS推送进行升级修改机会,详细查阅了最新苹果的APNs接口文档,同时为了避免重复造轮子(懒),在调研了一些开源常用