消息推送有两种表现形式:通知消息和透传消息。
通知消息下发到客户端后,以状态栏通知的样式展示,被点击打开后定位到对应的页面。
透传消息则先递送到客户端内部,由客户端决定是否展示通知及后续的处理。透传消息可以自定义消息体,也可以自定义消息的展示方式及后续动作处理,所以弥补了通知栏消息的一些不足之处。
透传消息分为两种:用户有感知的透传消息和用户无感知的透传消息。
有感知的透传消息:透传消息通过通知栏展示出来,点击通知打开应用,或者跳转到应用的指定页面。(根据透传消息的相关参数来判断跳转到哪一个指定的界面,相关参数传递要打开的界面的类名或Intent即可)
无感知的透传消息:如在主界面中相关栏位用红点标识进行弱提醒,推送一条命令用来检测用户是否有登录等。通知栏消息虽然方便的提醒用户,但也在一定程度上给用户带来了打扰,用户无感知的消息推送有时效果会更好。
个推中关于通知消息和透传消息的解释:
通知消息
指定通知标题和内容后,由个推SDK自动处理在系统通知栏中展示通知栏消息,同时响铃或震动提醒用户(响铃和震动受手机系统的设置状态影响)。
透传消息
即自定义消息,消息体格式客户可以自己定义,如纯文本、json串等。透传消息个推只传递数据,不做任何处理,客户端接收到透传消息后需要自己去做后续动作处理,如通知栏展示、弹框等。
iOS个推推送方式:
个推的 iOS 推送包括 2 个部分,APNs推送与应用内消息。
APNs 推送
苹果官方提供的推送通知服务,个推中iOS的离线通知均使用该服务进行下发。
应用内消息(透传消息)
应用内推送即透传消息,个推只负责消息传递,不做任何处理,客户端在接收到透传消息后需要自己去处理消息的展示方式或后续动作。
个推 iOS 推送服务框架如下图所示:
- 绿色部分是 APNs 推送,个推平台替开发者的应用通过苹果 APNs 服务器向指定的目标设备进行推送。由 APNs Server 将通知推送到相应的 iOS 设备上。
- 红色部分是个推应用内推送部分,即 App 启动时,应用内集成的个推SDK会开启长连接到个推服务器,从而开发者可通过个推服务器推送消息到 App 里,这条链路性能和稳定性更强,是APNs的一个很重要的补充。
安卓个推推送方式:
一个典型的程序化推送的技术方案如下图所示:
- APP调用个推SDK初始化接口,获取推送标识ClientID(简称CID);
- APP将CID上传到服务端进行保存。通常需要将该CID与相应的用户ID进行关联,以便后续针对特定用户进行消息推送。
- 业务方服务端需要给指定CID的设备发送消息时,调用个推服务端消息推送接口,个推服务端寻找目标设备,将消息下发给相应的个推SDK,进而将消息进行展示或由APP自行处理。