消息推送特点、益处、问题
一、Push推送的特点:
相比过往盛行的短信、邮件等用户触达方式,Push消息推送具有全面、精准、实时、免费四大特点。
二、Push对运营的益处:
1、提升产品活跃度DAU、MAU。
2、带动功能模块使用率。
3、带来交易订单/增加产品粘性。
4、唤醒沉睡用户。
三、Push推送的问题:
1、频繁发送,对用户形成打扰。
2、用户对推送消息麻木。
3、丧失用户信任。
消息推送业务流程
消息推送方式:
1、实时单笔:需要实时触发的消息,比如支付成功通知、验证码获取、满足某种条件触发的营销活动等消息,这类时效性要求较高且每个用户发送的消息内容中涉及到差异化的参数,需要业务应用实时触发。
2、定时批量:运营活动批量定时投放,需提供系统功能方便运营筛选用户,然后编辑文案,经审核通过后进行发送。
3、条件群推:指向APP符合筛选条件的所有用户推送消息,支持定速推送、定时推送,支持条件的交并补功能。
1、传输信息从安全角度考虑,建议不推送动账信息、敏感类信息,只推送活动类信息,例如:“您发起的众人存拼团已成功”。
2、个推SDK是否存在安全漏洞或反编译等风险。,需个推提供安全评估或检测报告。个推提供“每日互动推送SDK(Android版)源代码安全审计报告v1.3_20190617.docx”
3、SDK与API接口中除消息推送功能,其他读取数据功能主要为“用来生成个推推送的唯一设备id”,例如:
l 个推获取的相关数据
个推由于自身业务需要,明确获取了如下几类数据;
ID信息:Imei、androiddd
设备信息:品牌、机型、系统版本
应用信息:包名、versioncode、versionname、applist
Wifi登录:登录时获取的ssid、bssid
4、从个推介绍上看,不存在我行服务器与个推服务器直接访问情况,开通对外访问端口为80.443端口。
1、消息推送端:对接第三方推送云平台(个推、极光等),直销APP端集成第三方推送平台客户端SDK。
实现方式:客户端APP里集成个推SDK,实现客户端与个推推送服务器的长链接,银行服务器端(即:统一消息分发平台)通过调用个推的api接口,实现将消息通过客户端长链接推送到客户端的功能。
个推SDK集成了两个通道,设备识别cid下发时,在线的直接通过个推通道下发;cid离线符合厂商通道的设备会通道厂商通道下发。走哪个通道,个推SDK会判断。
厂商通道包括 “小米、魅族、华为、oppo、vivo” 。
2、消息管理端:统一消息分发平台
模板管理、参数管理、模板类型管理、单笔推送、批量推送、条件群推、查询定时任务、用户状态查询、消息查询、批量消息查询、渠道管理(方式/渠道:微信、短信、邮件、app)等;
调用第三方推送云平台API接口,实现将消息通过客户端长链接推送到客户端的功能。
消息管理系统需要与消息内容相关的系统对接,获取生成消息需要的数据。(该点看需求情况选择。)
其他消息推送实现方式详见后面分析。
架构规划:
1、统一消息分发平台上已建设短信平台和微信消息推送,增加App消息推送相关功能,放在“P8-基础服务层”域。
消息推送实现分析
Android App消息推送 实现原理
Android主流的消息推送方式
IOS推送原理&自建IOS推送服务
一、IOS原生推送原理APNs
IOS系统的推送,是由苹果推送通知服务APNs(Apple Push Notification service),依托一个或几个系统常驻进程运作,并且是全局的(接管所有应用的消息推送),所以可看作是独立于应用之外,是设备与苹果服务器之间的通讯,而非与应用的提供商服务器通讯。
二、IOS消息推送工作机制步骤
1、 设备Device在APNs服务器和Provider应用服务器注册:图1
(1).Device携带设备序列号连接APNs服务器。
(2).连接成功,APNs经过打包和处理产生(颁发)device_token(即:设备向APNs服务注册device_token成功),将device_token返回给Device。
(3).Device携带获取的device_token向我们自己的Provider应用服务器注册。
2、 消息推送过程:图2
(1).首先,应用开启推送功能,设备在有网络的情况下会连接苹果推送服务器APNS ,连接过程中,APNS会验证device_token,连接成功后维持一个长连接。
(2).Provider(我们自己的服务器)将需要推送的消息结合device_token按指定格式( APNs协议格式)打包然后发送给APNS服务器。
(3).APNS服务器接收到推送消息后,发送到指定device_token的设备。
(4).设备收到推送消息后,通知我们的应用程序App,并显示和提示用户(声音、弹出框)。
三、自建IOS推送服务器:图3
根据APNs提供的推送协议,证书配置,搭建自己的IOS推送服务,通过APNs推送,当App处于前台、后台、或被kill状态都可以收到通知。
l 自建推送服务优点:
不受限于第三方服务,拥有自己的推送服务,独享消息推送通道,对自己业务的扩展扩大很有必要。
l 自建推送服务缺点:
一直需要人员维护推送服务和APNs服务的对接,增加开发和运营成本,显然在发展公司从起点去做是非常艰难的。
通过APNs推送会受到网络、APNs服务器并发量等限制会出现延时(可忽略不计)。
Android推送与IOS推送对比
国内Top500 Android应用中用到的第三方推送以及所占数量:
Android推送方案-极光推送Android SDK
开发者集成 JPush Android SDK 到其应用里,JPush Android SDK 创建到 JPush Cloud 的长连接,为 App 提供永远在线的能力。当开发者想要及时地推送消息到达 App 时,只需要调用 JPush API 推送,或者使用其他方便的智能推送工具,即可轻松与用户交流。
图中红色部分,是 JPush 与 App 开发者的接触点。手机客户端侧,App 需要集成 JPush SDK;服务器端部分,开发者调用 JPush REST API 来进行推送。
Android SDK 服务
JPush Android SDK 是作为 Android Service 长期运行在后台的,从而创建并保持长连接,保持永远在线的能力。
多平台支持
JPush Android SDK 除了 jar 包,还有一个 .so文件,.so 文件需要与 CPU 平台适配,需要支持哪个平台的 CPU,就需要包含这个平台相应的 .so 编译文件。
除支持默认的 ARM CPU 平台之外,JPush SDK 还提供 x86 与 MIPs 平台的 CPU 版本 SDK。请单独到 资源下载 页下载。
IOS推送方案-极光推送IOS SDK
l 极光推送(JPush)是国内首个为移动应用开发者提供专业、高效的消息推送服务的产品。
l 从上图可以看出,JPush包括2个部分,APNs推送(代理),与JPush应用内消息。
l 红色部分是APNs 推送,JPush 代理开发者的应用(需要基于开发者提供的应用证书),向苹果APNs服务器推送。由APNs Server推送到iOS设备上。
l 蓝色部分是JPush应用内推送部分,即App启动时,内嵌的JPush SDK会开启长连接到JPush Server,从而JPush Server可以推送消息到App里。
l JPush iOS 推送相比直接向APNs 推送有哪些好处:
1.减少开发及维护成本:
应用开发者不需要去开发维护自己的推送服务器与APNs 对接。
集成了JPush iOS SDK 后不必自己维护更新device token。
通过JPush 的Web Portal 直接推送,也可以调用JPush的HTTP 协议API 来完成,开发工作量大大减少。
2.减少运营成本:
极光推送支持一次推送,同时向Android, iOS, WinPhone 三个平台。支持统一的API 与推送界面。
极光推送提供标签、别名绑定机制,以及提供了非常细分的用户分群方式,运营起来非常简单、直观。
3.提供应用内推送:
除了使得APNs 推送更简单,也另外提供应用内消息推送。这在类似于聊天的场景里很有必要。
极光推送
l 集成使用体验:
集成相对简单,SDK集成度高,推送体验效果优异,很少出现延时情况,唯一的缺点是免费版本没有做离线点击通知做统计,可以为用户设置标签进行组推送、别名实现用户的单一推送,支持定时推送,能实现康加App推送需要的所有功能。
l 收费情况:
提供VIP服务,免费和VIP差别在最大并发数、专享高速推送通道、离线保存消息时间、消息送达统计等,详情见https://www.jiguang.cn/push-price
Android推送方案-个推推送Android SDK
个推Android SDK为Android应用提供了安全稳定的推送服务模块,开发者只需在原有App中进行简单的配置和编码工作,即可快速获得实时稳定的消息推送能力。
APP调用个推SDK初始化接口,获取推送标识ClientID(简称CID);
APP将CID上传到服务端进行保存。通常需要将该CID与相应的用户ID进行关联,以便后续针对特定用户进行消息推送。
业务方服务端需要给指定CID的设备发送消息时,调用个推服务端消息推送接口,个推服务端寻找目标设备,将消息下发给相应的个推SDK,进而将消息进行展示或由APP自行处理。
IOS推送方案-个推推送IOS SDK
l 个推iOS SDK为应用提供推送服务:
当应用在前台时,维持与推送服务器的长连接,实时接收推送消息。
当应用在后台时,通过苹果APNs推送通知。
集成简单快速。
可以根据用户属性建立不同标签,进行定向推送,也可以进行A/B分组测试,从而进行精细化运营。
提供别名接口、静默时间设置接口、推送控制接口,满足APP的各种需求。
个推SDK不仅能提供云端到客户端的推送服务,也可以提供从客户端上传至云端的服务,即推送消息链路支持上下行双向通道,开发者与客户端之间互动更便利。
支持APNs 多媒体推送和通知的展示、点击统计功能。
最新SDK还支持独有的APNs 展示和点击统计,有助于开发者掌握更精准的推送数据,优化运营效果。
个推推送
l 个推集成使用体验:
SDK集成度介于极光和信鸽之间,略差于极光,实现了APNS推送和消息内通道,在方法回调处理上相比极光不是很优异,个推和极光、信鸽最大的区别是App在前台,推送会走应用内消息通道。能为用户设置标签进行组推送、别名实现用户的单一推送,技术支持较好,反馈问题能得到及时的解决。免费下暂不支持定时推送。
l 收费情况:
个推提供VIP服务,和免费的主要区别在于用户数限制、推送通道、定时推送、独立推送通道等,详情参考个推网站:
IOS推送方案-腾讯信鸽推送
信鸽是深圳市腾讯计算机系统有限公司推出的一款专业的免费移动消息推送营销平台。针对iOS设备的消息推送,信鸽平台目前只借助APNs通道,暂不支持应用内自有通道的消息下发。
1、设备Token的自动化获取和注册,降低接入门槛。
2、账号、标签与设备的绑定接口,以便开发者实现特定群组的消息推送,丰富推送方式。
3、点击量上报,统计消息被用户点击的次数。
l 个推集成使用体验:
官网目前主要版本是2.5.0,个人体验较差,SDK代码集成度不是太高,大部分实现还是用iOS原生API,官网已提供3.1.0版本SDK,集成度和极光相似度很高,3.1.0版本使用体验很好,能为用户设置标签进行组推送、账号绑定实现用户的单一推送,能实现康加App的推送需求。
l 收费情况:
暂时没有提供付费服务,提供无限量推送条数
IOS推送方案-云巴推送
1、集成APNs
云巴SDK 集成了APNs,开发者无需开发与APNs 对接的模块,也不必自己负责Device Token 的更新,一切交给云巴。
2、确保消息的送达
众所周知,APNs 并不保证消息的送达。而云巴SDK 支持 离线消息的功能,可保证消息送达客户端。
在推送消息时,如果客户端当前不在线,消息将暂存在云巴服务器上(多达50 条,长达15 天)。当客户端上线并成功连接到云巴的服务器后,服务器会把离线消息推送给该客户端。客户端成功接收后,服务器才会删除保存的离线消息。
l 个推集成使用体验:
SDK只能代码集成,不能用cocoapods,下载的官方demo比较老旧,远程通知收不到, 远程通知只能做一个保存等进入前台时再显示出来。目前已反馈给云巴技术,技术支持较差,在群里发送一天没人回应。技术文档比较老旧,写的较乱,找东西比较费劲。个人综合体验是这几个推送体验最差的一个。而且免费消息量有限制,对于用户量趋于增大渐渐的会打到推送瓶颈。能设置频道和别名进行指定推送。
l 收费情况:
云巴提供付费服务,与免费的差别主要是推送消息量、离线消息保存时间、传输速度,免费20次每秒,付费5000次每秒,详情参考https://yunba.io/pricing/
推送方案对比分析
各个方案优缺点分析:
自建推送服务:
Android消息推送为应用级别,原理可以选择Push、XML流传输协议等,优点是性能最高、安全性最好,缺点是实时性差、成本最高。
OS消息推送为系统级别,优点是不受限于第三方服务,拥有自己的推送服务,独享消息推送通道,对自己业务的扩展扩大很有必要。缺点是一直需要人员维护推送服务和APNs服务的对接,增加开发和运营成本,在发展企业从起点去做是非常艰难的。同时通过APNs推送会受到网络、APNs服务器并发量等限制会出现延时(可忽略不计)。
自己搭建推送服务,需要人力、技术、工作量、运营成本、时间等,我行目前状况不适合考虑此方案。
极光推送:也是国内最早的移动推送平台,一直是免费状态,由于其出色的推送体验被大多开发者依赖。极光推送免费状态下支持无限推送条数。
信鸽推送:是腾讯移动推送,2.5.0版本使用体验不是很好,但新版本3.1.0版本体验出色,能实现推送的需求。目前信鸽推送的条数也不受限制,免费权限很高。
个推:免费服务不支持定时推送。内部集成双通道服务,App前台使用个推服务消息,App后台使用APNs推送,这样在前台收到消息无延时。
云巴推送:体验最糟糕的一个,官网技术文档乱,技术支持差,推送条目有限制。
几种推送免费下做到程度:
极光:无限推送条目、APNs推送通道、定时推送、(免费)不支持统计。
信鸽:无限推送条目、APNs推送通道、定时推送、支持统计。
个推:无限推送条目、两种推送通道、(免费服务)不支持定时推送、注册用户数限制。
云巴:有限推送条目、两种推送通道、不支持定时推送、注册用户数限制。
注:无限推送条目、定时推送是当前的基本需求,极光和信鸽同时包含,并且都使用APNs推送通道。信鸽支持免费统计功能,如果运营对统计要求的话,信鸽满足要求。极光是国内最早做第三方推送平台的,经过不断的版本优化,无论是推送技术程度和使用体验都很优异。
IOS离线推送:
1、APNs离线推送
如果推送的时候deviceToken对应的机器在APNS服务器上是离线状态,苹果会保存推送信息“一段时间”。当机器恢复在线状态时,推送信息到该机器。如果机器长时间不在线,苹果会抛弃掉这条消息。这个“一段时间”没有明文说多久,而且不知道苹果在不同情况下对这个时间有没有动态调整,所以无法推测这个时间对于信息丢失情况的影响。
对于连续推送的情况,针对离线设备,苹果永远只存储最新的一条,上一条信息会被抛弃。
2、极光非APNs离线推送(信鸽暂不支持非APNs离线推送)
对于Apple通知来说,断网(断开了与Apple服务器的连接),即为离线。该状态下,Apple服务器只会保存1 条消息,在联网后发给手机。
对于应用内消息,有网,且处于前台时才是在线状态(与极光服务器有连接),其他均为离线。该离线状态下,极光服务器免费保存5 条离线消息,在线后发给手机。
Android离线推送:
1、个推走厂商通道,厂商通道包括 “小米、魅族、华为、oppo、vivo” 。
2、极光走其他应用已经建立的极光通道。
统一消息分发平台
实现消息推送架构及功能
统一消息分发平台实现App消息推送架构图
l 科技建设
1、消息推送端:对接第三方推送云平台(个推、极光等),直销APP端集成第三方推送平台客户端SDK。
2、消息管理端:统一消息分发平台
模板管理、参数管理、模板类型管理、单笔推送、批量推送、条件群推、查询定时任务、用户状态查询、消息查询、批量消息查询、渠道管理(方式/渠道:微信、短信、邮件、app)等;
调用第三方推送云平台API接口,实现将消息通过客户端长链接推送到客户端的功能。
消息管理系统需要与消息内容相关的系统对接,获取生成消息需要的数据。(该点看需求情况选择。)
架构规划:
1、统一消息分发平台上已建设短信平台和微信消息推送,增加App消息推送相关功能,放在“P8-基础服务层”域。
统一消息分发平台实现App消息推送-建设功能
模板管理:
模板管理;
参数管理;
模板类型管理;
消息推送:(调第三方服务端API)
执行单笔推送:toSingle :简称“单推”,指向单个用户推送消息
执行批量单推:合并多个单推任务,统一提交,可提升推送效率。
执行批量推送:toList:简称“批量推”,指向制定的一批用户推送消息。
停止批量推送:对于客户端在线还没有下发或者离线还没收到的通知,停止下发。
执行条件群推:toApp:简称“群推”,指向APP符合筛选条件的所有用户推送消息,支持定速推送、定时推送,支持条件的交并补功能。
停止条件群推:对正处于推送状态,或者未接收的消息停止下发。
查询定时任务:此接口可根据taskID查询所有定时任务。
删除定时任务:用来删除还未下发的任务,删除后定时任务不再出发。
查询用户状态:根据cid列表查询对应用户是否在线。
消息查询:
批量消息查询:
渠道管理
查询行内的接入渠道,可以对接入的渠道进行增加,删除,修改,开通关闭等操作。
App消息推送原理精华总结
IOS:
1、设备Device在APNs服务器和Provider应用服务器注册device_token。
(1).Device携带设备序列号连接APNs服务器。
(2).连接成功,APNs经过打包和处理产生(颁发)device_token(即:设备向APNs服务注册device_token成功),将device_token返回给Device。
(3).Device携带获取的device_token向我们自己的Provider应用服务器注册。
2、消息推送过程:
(1).首先,应用开启推送功能,设备在有网络的情况下会连接苹果推送服务器APNS ,连接过程中,APNS会验证device_token,连接成功后维持一个长连接。
(2).Provider(我们自己的服务器)将需要推送的消息结合device_token按指定格式( APNs协议格式)打包然后发送给APNS服务器。
(3).APNS服务器接收到推送消息后,发送到指定device_token的设备。
(4).设备收到推送消息后,通知我们的应用程序App,并显示和提示用户(声音、弹出框)。
Android:
1、设备Device在第三方云推送服务端和Provider应用服务器注册device_token。
2、消息推送过程:
(1).统一消息分发平台调用第三方云推送服务端API,将需要推送的消息结合device_token按指定格式打包然后发送给第三方云推送服务端。
(2).第三方云推送服务端接收到推送消息后,发送到指定device_token的设备。
(3).设备收到推送消息后,通知我们的应用程序App,并显示和提示用户(声音、弹出框)。
在线推送:
IOS:App进程在前台、后台为在线推送,走“设备+应用”注册的APNs(Apple Push Notification service)。
Android:App进程在前台、后台为在线推送,走“设备+应用”注册的推送服务端通道(第三方云推送服务端、自建推送服务端)。
离线推送:
IOS:App进程在前台、后台为在线推送,走“设备+应用”注册的APNs(Apple Push Notification service)。(因为IOS推送属系统级别。)
Android:App进程在前台、后台为在线推送,走“设备”厂商通道(小米、魅族、华为、oppo、vivo等)。(因为Android推送属应用级别。)
调研整理过程还有不足之处,将不断完善。
Learning Planet
人不能孤独的活着,之所以有作品,是为了沟通。我带着我各式各样的作品,渴望沟通。
|敏而好学|独具匠心|铸新淘旧|
点击阅读原文,一起玩耍