本人是一个初接触极光推送和极光IM不久的菜鸟,最开始完全不知道厂商通道是做什么的,也不知道自己要怎么用。通过一段时间的使用,简单讲下自己的认识。
一、推送的实现
实现推送和即时通讯,现在比较方便省事的方式就是使用极光推送和极光IM。实现即时通讯一般也必须要实现推送。
推送的实现在iOS和Android平台有一定的区别,根据设备不同,应采取不同的送达策略。
首先先说Android的实现。
推送在Android平台实现方式上,简单的可以归纳为
(1)通过应用维持的长链接:
应用集成Jpush sdk后,应用在后台维持长链接。应用通过长链接接收到消息后,自己构建通知栏。
缺点是长链接断开后,推送将无法送达。
(2)通过厂商通道:
厂商推送指的就是手机硬件厂商提供的系统级别的推送服务。因为是系统服务,随手机开机后就一直存在着。
应用集成Jpush SDK和厂商通道的SDK,并在极光后台设置参数后。应用无需在后台运行,推送将通过厂商通道送达。
通过自定义通知栏,开发者可自定义拉起应用等操作。
开发者可根据需求集成多个厂商通道,提升推送的送达率。如即成小米,华为,oppo等通道。
厂商通道因不依赖应用后台连接的维持,所以有着较高的送达率。
然后是iOS。
iOS的通知栏只可通过APNs实现,实现方式类似于前面说的Android厂商通道,通知栏都由手机系统构建。然后再通过自定义通知栏,进行打开应用等操作。
二、即时通讯通知栏的实现
首先是Android
(1)Android系统集成Jmessage后,应用在后台运行时,应用可收到消息。
Jmessage通过消息构建通知栏。只要Jmessage应用进程存在,长连接正常,就会在收到聊天消息时展示通知栏通知
(2)当应用后台被完全杀死状态下,需要实现消息推送,则需要集成Jpush和厂商通道。
实现流程为首先将消息通过厂商通道送达设备后,该设备通知栏展示该消息。然后通知栏可自定义为点击后拉起应用,并获取对应的会话。通过该会话,可获取到未读消息、离线消息等信息。
iOS实现
消息通知栏只可通过APNs实现。然后再通过自定义通知栏,进行打开应用、Jmessage、获取会话、获取离线消息等等操作。
Jmessage sdk应用后台运行时,会通过APNs发通知栏消息。另外Jmessage在应用打开状态时,不会发通知栏消息。
「本文为极光征文参赛文章」