谈谈接入各类第三方推送平台的技术方案和坑点

在移动互联网时代,为了运营好一个APP,消息推送是一个优质廉价的渠道。消息推送的使用场景简单来讲,能够包括运营类的消息推送,如活动推广期间的推送等,还包括通知类的消息推送,如社交场景中的新消息提醒等。安全

对于APP来讲,消息推送可以起到内容告知、提升日活,甚至召回用户的做用。那么如何接入第三方推送平台呢?本篇文章中,网易云信资深研发工程师将和你们聊聊接入各类第三方推送平台的技术方案,分享接入推送平台的一些实用经验。服务器

如何接入第三方推送

1. 推送的通常流程

推送是一种服务器主动push消息到设备端的行为,所以依赖于设备端和服务器的长链接。总体的架构和流程以下:架构


具体以下:测试

1) 设备和推送服务器创建长链接cdn

2) 设备会根据某些规则生成或从推送服务器获取到一个DeviceToken,推送服务器能够根据DeviceToken定位到具体的设备blog

3) 设备会上报DeviceToken到应用服务器(由应用本身完成)接口

4) 应用服务器根据须要调用推送的服务端接口发起推送进程

5) 推送服务器收到推送请求,根据请求中的DeviceToken定位到具体的设备,下发推送通知资源

6) 设备收到推送消息,能够进行通知栏弹窗或者其余行为get

2. iOS

苹果官方提供了APNS推送,有很高的推送送达率。早先的APNS推送提供了一套基于TCP协议的接口,可是该接口使用方式比较复杂,稍有不慎就会致使推送失败,但调用方还误觉得推送成功。

后来苹果又提供了一套新的基于HTTP2协议的接口,新接口的一个好处是能够追踪到每一个推送请求是被APNS服务器拒绝了仍是成功了,不再用去猜请求究竟是被苹果服务器给丢了仍是接受了。

3.  安卓

谷歌官方最先提供了GCM推送,后来又推出了FCM推送来代替GCM,但因为国内的环境不适合使用,所以各个手机厂商又相继推出了各自的推送,推送的原理都是相似的,都是依赖于设备和推送服务器的长链接,可是厂商推送的优点在于这样的长链接能够和本身的手机系统绑定到一块儿,从而能够不一样应用共享同一条长链接,节省了心跳的流量消耗,而且这样的系统级长链接能够不用担忧应用被杀致使的应用内长链接断连致使消息推送不可达。

目前已经推出厂商推送的包括小米、华为、魅族、OPPO等,FCM也能够算安装了谷歌服务的设备的系统级推送。

不一样于IOS,安卓阵营的推送服务器接口都是HTTPS接口,而且经过SecretKey的方式来进行安全校验。

一点经验

1. DeviceToken的管理

咱们知道DeviceToken标识了一台具体的设备,可是推送服务自己是不知道应用自己的帐号体系的,所以同一个APP,假设注销了A帐号,改用B帐号登陆,此时DeviceToken通常来讲是没有变化的,此时应用服务器须要去标识A帐号的该设备属于注销状态,否则一条针对A帐号的推送消息就会被B帐号收到。

2. 应用被卸载的状况

应用被卸载的时候(这时候登陆的A帐号),应用自己感知不到,此时针对A帐号的该设备的推送仍是会发出去,推送服务器收到推送消息,找不到对应的设备,此时没有问题,只是会消耗一些资源。假设此时设备上的应用又从新安装了,而后登陆了另外一个帐号B,假设DeviceToken没有变化,此时针对A帐号的推送将会被B帐号收到。上面这种状况出现的前提条件是DeviceToken没有发生变化,测试发现华为推送存在这个问题(通过询问华为推送技术支持,2018年3月以后的设备不存在该问题),其余推送没有。为了解决这个问题,服务器必须本身管理DeviceToken-用户帐号的映射关系,并在发现有DeviceToken冲突的状况下去把老的帐号设置为注销状态。

3. IM场景下推送时机问题

IM场景下,应用服务器有本身长链接服务,此时第三方推送服务的做用是利用第三方厂商推送的系统级长链接来提升消息推送的送达率。

首先对于IOS端,应用没法常驻后台,咱们会在应用切换先后台的时候经过IM长链接发送一个标记位,服务器会在设备离线或者处于后台的状况下触发APNS推送,从而减小设备在前台状况下APNS推送的流量消耗。

而对于安卓端,服务器会在设备处于离线的状况下触发第三方推送,不然会走IM长链接下发通知,当设备处于后台但还活着的时候,会在收到消息以后主动弹窗以便提醒用户有新消息。对于安卓端还有一个场景是这样的,安卓端在后台的某个时刻进程死了,此时过来一条须要推送的消息,服务器发现设备处于离线状态,尝试调用第三方推送(可能有也可能没有)。过了一会进程本身活回来了,从新链接到了IM服务器,拿到了未读消息,此时通常的逻辑下,进程会主动弹窗告知有消息到达,形成设备端的通知栏有两条推送。为了解决这个问题,须要IM服务器在设备重连的时候下发未读消息是否须要弹窗的信息。


以上就是网易云信对于第三方推送平台技术方案的介绍和经验分享,更多技术干货和实战经验分享,请关注网易云信博客

相关文章
相关标签/搜索