文档开发者中心
我的

PUSH浅谈

作者:HW-WXT


关于PUSH消息通知,之前只了解一下粗枝大叶,只知道通过手机通知栏发的消息,是通过PUSH通道下发下来的。近期要分析一个PUSH消息通知的需求方案,有幸研究了一下,整理汇总一番。参考网上相关文档,有不对的地方,欢迎指正。

-------------------------------------------------------------------------------

要获取服务器上不定时更新的信息,一般说有两种方式:

① 客户端轮询从服务器端查询(pull方式),隔一段时间从服务器上去查询,看是否有查询信息;

② 服务器使用推送的方式(push方式),当服务器端有新消息了,则把最新的消息Push到客户端上。

轮询方式,会涉及到功耗的问题,目前在一些应用中会有限制,不建议使用,因此推荐使用push方式。本文针对iPhone的PUSH通知和华为应用的PUSH通知,做简单对比分析。

l Push通知栏显示效果


点击Push通知栏,可以打开特定APP、打开特定网页也可以自定义处理行为。

l iPhone的Push功能原理

参考:

Push的工作原理:

Provider:某个iPhone软件的Push服务器

APNS:Apple Push Notification Service


如上图所示,消息推送的流程为:

① iPhone在开启Push的时候,会连接APNS建立一条TLS加密链路。 每个iPhone都会有一个独有的设备证书,APNS也有一个服务器证书。TLS链路建立后,会每隔15分钟进行一次保活的握手。如果链路中断,iPhone会尝试重新建立连接。

② APNS根据设备上报的设备证书,使用令牌密钥加密生成设备令牌(deviceToken)。APNS将deviceToken返回给iPhone

③ iPhone将该deviceToken给对应的push应用程序,如我们的智能家居APP;

④ iPhone上的应用程序,把这个deviceToken直接发送给Provider,如智能家居云;

当Provider有Push消息要发送时,就会把对应账号的deviceToken和消息一起发给APNS。APNS根据deviceToken找到相应的TLS链接的iPhone,并发送消息。上图中,缺少Provider和APNS之间的这条通路。

l 华为PUSH推送平台

华为Push服务相关的介绍,在华为开发者联盟上有详细介绍,参考:http://developer.huawei.com/push


如上图所示,华为Push消息通知的流程和iPhone的类似。

Step1: 开发者的App集成华为Push客户端SDK,调用客户的获取华为PushToken接口获取到PushToken;

Step 2: 开发者的App对于获取到的华为PushToken需要上报到开发者自己的服务器上;

Step 3: 开发者利用服务器上保存的PushToken向设备上App发送通知消息;

Step 4: 消息携带的PushToken作为鉴权和路由机制会通过华为Push平台将消息发送到最终用户设备上;

PUSH消息在终端的显示通知方式支持以下两种:

透传消息方式:由三方APP开发者自己控制,PUSH仅提供通道能力,具体的展现形式,由三方APP实现。局限性是:对于透传消息的处理,只有在三方APP进程在运行时,才能在android中,通过广播的方式接收到消息通知,对该消息进行处理。如果进程被kill,则无法正确显示消息内容。

手机通知栏消息:通过PUSH通道直接推送拉起手机通知栏,对通知栏中的点击通知栏操作和点击按钮操作可配置指定动作。

华为PUSH服务平台中,比较支持第二种方式,通过PUSH直接拉起手机通知栏来显示,降低了整个Push业务的功耗,并且通知栏的消息到达率也比透传的高。透传消息处理要依赖对应APP的运行状态。从灵活性上来看,透传消息要比通知栏消息好些。


点赞
收藏
回复
分享
举报
浏览3275 发布于2019-10-16 06:37未知归属地
全部评论
最多点赞
最新发布
最早发布
暂无评论
暂无评论
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。