一、概念
1、早期推送服务
在移动互联网以前的手机,如果有事情发生要通知用户,则会弹出一个窗口,告诉用户正在发生的事,可能是未接电话提示、日历提醒或是一封彩信。推送功能最早是被用于Email中,而目前更多地被应用于App中。
2、推送
一般地,当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,而要获取服务器上不定时更新的信息一般有两种方法:
(1)客户端pull(拉)的方式,就是隔一段时间就去服务器获取一下信息,看是否有更新的信息出现,即用户主动发起请求,向服务器获取数据;
(2)服务器使用push(推)的方式,当服务器有新信息了,就把新的信息push到客户端上,这样,客户端就能自动的接受到消息,也就是服务器主动发送数据给客户端。
比较两种方式的优缺点:
两种方式都能实现获取服务器端更新信息的功能,但明显地,push方式比pull方式好,因为pull方式更费客户端网络流量,要主动从服务器端获取最新信息,更主要的是耗费电量,App上还要有程序服务不停地检测服务端的变化。Push使用的场景有两个特点:时间不确定性和时效性,如发送团购信息/发送电子消费账单等。
一般地,利用推送只是告诉手机端服务器发生了某些改变,当客户端收到通知以后,应该主动到服务器获取最新的数据,这样才是推送服务的完整实现。
一般情况下,客户端与服务器之间通讯客户端是主动的,但这就存在一个问题就是一旦服务器数据有更新或者服务器要下发通知给客户端只能等客户端连接的时候才能实现。这种方式使消息失去了实时性。
3、通知和消息的区别
(1)通知:发送后会在系统通知栏收到展现,同时响铃或震动提醒用户。
一般地,实现Android的消息通知栏,必须要用到两个类:NotificationManager和Notification,其中NotificationManager的初始化是通过getSystemService方法,并且通过notify方法来向Android系统发送消息栏通知和显示。
(2)消息:发送后不会在系统通知栏展示,SDK将消息传给第三方应用后需要开发者自己使用代码展示。
开发者在接收到消息数据后,可以将解析出来的数据,显示在自定义的界面上,也就是说,可以自定义通知界面、提醒方式,以Notification的方式让用户看到该消息内容。
二、推送使用场景
三、原理
1、推送方案实现原理
(1)轮询方式(pull): 客户端应用程序需阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,如消息排队等,并且还要考虑轮询的效率,太慢会导致消息的延迟,太快,会大量消耗网络带宽和电池。
(2)SMS方式(push): 在Android平台上,可以通过拦截SMS消息并解析消息内容来了解服务器的意图,并获取其显示内容进行处理(???),其好处是可以实现完全的实时操作,但成本太高,需要向移动公司缴纳相应的费用。
(3)持久连接(push): 可以解决轮询问题带来的性能问题,但还是会消耗手机电池。
四、如何做好推送
消息推送(push)是APP运营最优质的渠道,运用得当可以帮助产品运营人员更高效地实现运营目标,相反盲目地push也会带来反作用。
1、APP消息推送特点
(1)量大: 用户数即时可push覆盖的数量。假如一个APP有5000万的活跃用户,且都取得了用户授权,那么全量push一个即可触及到5000万的用户,这比靠媒介传播带来的量更大。
(2)精准: 消息推送的受众已经是下载安装且使用过APP的用户,是消息推送最想影响的目标用户,相比之下其他媒介渠道则需要层层过滤才能到达目标用户。
(3)免费: 消息推送的主动权掌握在厂商自己手中,只要按照Android、iOS的协议规则去push,是不需要花任何费用的。当然免费也带来了滥用,如何控制好消息推送(push)的“度”是每个APP运营人员需要学习的一门课程。
2、消息推送对APP运营的影响
优点:
(1)提高产品用户活跃度
(2)带动功能模块使用率
据二八原则,80%的用户之后用到APP20%的功能点,而剩下80%的功能点则需要运营人员加强用户的认知度,使用消息推送则可以引导用户关注以及使用体验新功能。
(3)增加用户粘度
“粘度”是衡量用户忠诚度的重要指标,消息推送在一定程度上可以成为APP内容服务的一部分,以新闻类APP为例,对重大新闻进行第一时间push推送能够极大促进用户关注,提高用户使用率、用户忠诚度。
(4)唤醒沉睡的用户,提高用户留存率
缺点:
(1)对用户形成打扰,招致卸载
(2)用户对推送消息变得麻木
阈值理论、盲目推送用户不感兴趣的内容,等再推送有价值的内容时,用户也会视而不见。
(3)产品丧失用户信任
3、如何使用好消息推送?
(1)细分消息推送的对象,不随意push全量
标签用户或者对用户的行为数据建立用户模型,如用户特征、地域和偏好进行细化后再进行推送。
(2)尊重用户,把主动权还给用户
当用户遇到反感的消息时,应该涕送关闭消息的入口。当用户无法关闭消息时,就会卸载APP,直接导致用户流失。
(3)从用户接受信息的场景反推消息推送的时间
根据APP的特点来推送,比如天气类APP,推送时机最好为早上,抢票APP在抢票时间前推送给给用户。
(4)推送用户感兴趣的内容
永远只推送用户感兴趣,并且选择与用户心理定位相符合的内容。
(5)根据使用频次决定消息推送的频率
工具型APP用户可能每天只打开一次,而社交型APP用户只会打开20次以上,这就是产品类型决定的使用频次差别。用户心理有一个平衡值,恰到好处的消息推送频率会让用户不知不觉对APP形成依赖。
(6)后续动作:尽量引导到开APP,保持友好的用户体验
从APP厂商的角度,一切消息推送皆以用户打开APP为目的,那么用户打开时进入的是不是用户想要看到的界面?消息打开后,直接定位到该消息提示的界面。
五、几种推送方案
1、C2DM云端推送功能
Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器通知移动应用程序 直接与 服务器 进行通信,以便从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些消息。
2、MQTT协议实现Android 推送功能
MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。
(https://github.com/tokudu/AndroidPushNotificationsDemo)下载该项目的实例代码,并且可以找到一个采用PHP书写的服务器端实现(https://github.com/tokudu/PhpMQTTClient)。
3、XMPP协议实现Android推送功能
4、使用第三方推送技术,如个推、极光、百度云等第三方SDK。
六、第三方推送技术比较
(一)个推(http://docs.getui.com/pages/viewpage.action?pageId=589866)
1、概述
个推是一个端到端的推送服务,通过集成个推SDK,开发者能够及时有效地将服务端消息推送到客户端上,并针对用户画像进行精细化运营,从而积极地保持与用户的连接。
个推是国内最专业的手机消息推送技术解决方案,在第三方推送市场的占有率达90%以上。个推为企业和开发者提供推送SDK