1:消息推送平台集成IOS推送和Android推送,对外提供一致的接口服务
IOS推送和Android推送的实现途径完全不一样。IOS推送是将消息发送到Apple的推送服务器(APNS),由APNS负责将消息发送到手机并在通知栏显示。从APNS到手机这一段完全在消息平台的控制之外,甚至在消息发送到APNS后,一般情况下APNS也不会给任何响应和反馈。
Android推送则由我们自己建立了一套推送服务(CPNS),CPNS推送服务器直接接受手机上的推送客户端(一个后台service)的TCP长连接。
2:在推送消息到客户端(手机)时,需要能唯一地定位到手机的设备标识(DeviceToken)。
对IOS系统,Devicetoken是由Apple提供的一个64位 的token。对Android推送,携程旅行主APP用20位的ClientID作为DeviceToken,而对于其它独立APP,由该APP自行确定并通过SDK注册到CPNS。
根据以上描述,在使用推送SOA接口时,理论上需要提供DeviceToken,才能将消息推送到手机。但是为了方便主APP上的业务方使用,推送平台提供了按UID进行消息推送的接口。推送平台根据调用方传入的UID,到MobileDB中根据UID查到对应的DeviceToken。对于独立APP,因为其业务和数据是完全独立的,推送系统不能提供按UID推送的接口。
3:关于推送到达率
IOS推送的到达率不在消息平台控制之内,消息平台只能保证把消息发送到APNS服务器。最后是否能推送到手机,取决于APNS,以及是否在IPhone上的通知中心开放了携程APP(或相应的独立APP)。
当前的Android推送机制是,如果在消息推送时,手机在线(后台service能成功连接到推送服务器),消息将立即被(PUSH)推送到手机。如果手机不在线,则消息将被保存在推送系统,在消息指定的过期时间前,如果手机上线时会将消息取(PULL)下去。这个机制结合了PUSH和PULL,理论上在消息过期前,只要手机能上线,消息都能成功推送下去。
但是实际情况比较复杂。在手机休眠时,WIFI或移动的网络连接可能会被关闭,手机无法在线。如果经常后台唤醒手机,会涉及到电量等问题。Android上的系统生态也很复杂,手机上的推送后台service可能因为各种非技术性因素无法正常运行。比如有些xx管家之类的APP,会经常干掉、甚至选择性干掉后台Service。小米之类的系统,也会默认禁止、或者在资源紧张时干掉后台service。根据业内的一些交流,Android推送的总体到达率在50%-60%左右,我们自己的推送也大致在这个水平。但是如果消息过期时间设置过短(比如几分钟)的话,推送到达率会低一些,因为时间越短,手机在这段时间内正好在线或上线的可能性就更低。
我们的消息推送到达率经常被拿来和微信对比。首先,微信做得确实更成熟,我们还在不断改进中。其次,微信也有漏消息、或者消息延迟到达,只不过发生较少,也不太引人注意。第三,微信的渠道能力很强大,几乎没有rom或管理软件敢对微信做手脚。比如小米系统上有一个应用白名单,这个名单上的应用,后台服务不会被禁用或干掉,微信和QQ就在其列。而不在白名单的应用,后台服务容易被干掉。
另外,和短信相比,消息推送在及时性和可靠性上是有所差距的。这源于二者背后使用的通信通道和通信方式不一样,短信是系统底层的应用,使用的是手机基带处理芯片,只要有移动信号,短信通路就畅通,这是由移动运营商保证的。消息推送则是基于IP的数据通信,由手机CPU处理。使用方须评估自己的业务是否适合使用推送平台,或者考虑在消息推送失败时是否要自行实现额外的补偿机制。
4:其它注意事项
对于Android消息推送,同样内容(指将在消息通知栏显示的内容,对应SOA接口中Payload参数的body部分)的消息每个客户端每天只接收显示一条。一天内重复内容的消息将被过滤。
对于IOS推送,需有Apple颁发的证书,才能对相应的APP进行消息推送。对主APP,在生产/堡垒环境,用的是市场标准包的证书。在UAT/FAT测试环境,用的是免签包的证书。测试人员在测试期间,需要格外注意是在什么环境测试,用的是什么包,否则会导致消息无法成功推送。对其它APP,须提供证书给开发团队,进行配置后,才能进行推送。
对于独立APP,推送系统提供了客户端推送SDK供接入方集成。SDK负责接收Android推送消息并向上抛出,APP开发方须自行开发代码,处理SDK抛出的推送消息。详情参见 客户端推送SDK
对于主APP上的各业务接入方,主APP有缺省的处理逻辑处理SDK抛出的消息(比如弹通知栏、根据指定的url进行跳转等)。如果业务方希望有自己特有的消息处理逻辑,需要在APP端自行开发处理代码。
消息推送逻辑比较复杂,有很多细节都可能会影响到推送的成功。接入方在接入消息推送平台时,须安排好端对端的测试,保证自己的整个流程能正常工作。包括服务端的接口接入,APP端的消息展示、跳转、埋点等。
分享到:
相关推荐
腾讯信鸽推送——专业移动推送平台 腾讯信鸽推送是一个专业的移动APP推送平台,支持百亿级的通知/消息秒级触达移动用户。开发者可以方便地嵌入SDK,通过API调用或视觉操作界面,实现对特定用户发送通知/消息,提升...
【信鸽推送与腾讯云新版移动推送】 信鸽推送,作为腾讯云提供的移动推送服务,是一种高效、稳定、精准的用户消息触达工具。在原有的信鸽服务基础上,由于腾讯云对老版本不再进行维护,开发者们需要转向使用其新推出...
个推是一家专注于移动互联网推送技术的公司,其提供的推送服务可以实现精准、实时的消息推送,支持单个用户、多个用户以及全局推送等多种场景。服务端调用工具类是这个项目的核心部分,它封装了与个推服务器交互的...
### 高可用的移动消息推送平台方案 #### 推送技术背景及意义 随着移动互联网技术的迅猛发展,消息推送已成为提升用户活跃度、增强用户体验的重要手段之一。无论是新闻类APP推送热点资讯,还是社交软件传达即时消息...
《Austin消息推送平台v1.0:构建高效的消息通知系统》 在当今信息化社会,实时、精准的消息推送已经成为各类应用和服务的重要组成部分。"Austin消息推送平台v1.0"正是一款专为此目的设计的系统软件工具,它为开发者...
在IT行业中,消息推送是一项关键的技术,特别是在移动应用开发中,如Android平台。"push(实现消息推送)"这个主题涉及到服务器如何实时地将新消息或通知推送给客户端应用程序,而无需客户端持续轮询服务器。这提高...
本文将深入探讨移动推送技术的基本原理、工作流程以及Android平台上的实现策略。 一、移动推送技术基础 1.1 推送通知定义:推送通知是应用服务器主动向客户端设备发送的消息,通常显示在设备的通知栏中,用于提醒...
### 基于MQTT的移动推送解决方案 #### 概述 随着移动互联网技术的飞速发展,移动设备已经成为人们日常生活中不可或缺的一部分。基于此背景,本文将深入探讨MQTT协议及其在移动推送领域的应用,重点讲解MQTT原理、...
【基于HTML移动终端平台推送信息系统设计与实现实用文档】 移动终端平台的开发与设计正经历着快速发展的阶段,尤其以iOS和Android操作系统为代表。由于应用程序开发者需要针对不同平台进行独立设计,跨平台移动技术...
58同城在推进移动推送平台的过程中,经历了架构的不断演进,形成了一个高性能的推送系统。这一过程中涉及的架构优化、性能问题解决以及高可用性保证,正是本文要详细解读的知识点。 首先,让我们了解什么是移动PUSH...
移动资讯应用推送报告主要探讨了移动应用中资讯推送的现状和用户接受程度,并针对不同年龄段、不同手机操作系统用户的接收偏好进行分析。资讯推送成为移动应用留住用户的重要手段,尤其是在内容丰富的自媒体时代背景...
为了实现跨平台推送,文章中可能探讨了针对不同操作系统采用的不同推送策略,并可能提到了PhoneGap等工具用于Web应用与移动平台的无缝集成。 【详细知识点】: 1. **跨平台移动应用开发**:HTML5允许开发者编写一次...
大数据云推送平台是指运用大数据技术实现云服务中的一种,主要是向移动应用推送消息的云服务技术。推送技术是移动应用中一项十分重要的功能,它允许应用在不启动的情况下向用户发送信息,这一过程一般基于云端服务器...
百度云推送(Baidu Cloud Push)是百度开放云平台提供的一项免费的云服务,它能够帮助开发者向移动设备发送消息,无论应用是否处于前台运行状态。 使用百度云推送服务,开发者可以实现以下主要功能: 1. **实时...
文章探讨了开源消息推送和即时通讯系统,对比了各种网络通信协议和网络I/O框架,最终选择了Java NIO框架Netty以及开源数据序列化工具Protocol Buffers来构建轻量级的移动推送服务。 【内容解析】: 1. **移动...
腾讯移动推送TPNS(信鸽) c#版本服务端代码,支持中文推送,集成多平台,多推送业务,DEMO中实际android的TOKEN及帐号推送,项目中添加文件即可
在当前移动互联网高速发展的背景下,推送技术作为一项重要的后台服务技术,能够主动地将各类信息和应用内容推送给用户,显著提升了用户体验并拓展了移动业务的发展空间。传统的推送技术主要基于短消息服务(SMS)...
为了实现跨平台推送,论文采用了PhoneGap这一混合应用开发框架,它允许Web应用与移动平台原生功能进行无缝集成。在服务器端,JavaEE框架被用于构建清晰的层次结构,采用面向切面编程思想进行设计整合,以支持内容...