文档章节

android消息推送

z_jordon
 z_jordon
发布于 2015/02/26 18:10
字数 1094
阅读 66
收藏 1

最近的一个项目要涉及到从服务端往客户端推送消息,类似于滴滴打车的司机端,有新的订单时就往司机的手机推送订单信息。

最开始的想法时自己来实现服务端到客户端的推送,具体如下:

  1. 客户端启动时连上服务端,注册自己的设备id,用户id等信息,并通过socket与服务端维持一个长连接

  2. 服务端在有新的消息时通过这个长连接往客户端推送消息

这个方案看似简单,但仔细推敲起来有许多细节不可控,比如需要考虑各种网络环境,客户端与服务端程序的稳定性,实际上要自己来实现一个稳定的消息推送服务是要花比较长时间的,虽然也有一些现成的方案,比如Google提供的C2DM(Cloudto Device Messaging)服务,采用MQTT协议实现Android推送,采用XMPP协议实现Android推送等(这些网上都可以找到相应的资料),但对于我们现在的项目来说还是需要自己搭建消息推送的服务端和客户端。

然后在网上找了一下原来已经有各种现在的免费的方案了,比如百度推送,极光推送等等,并且文档和demo都比较齐全,这种方案的具体机制如下(以百度推送为例):

 1. 客户端启动时连接上百度推送的服务器,百度推送服务会生成注册设备的设备id,用户id等信息,并通过ocket与百度推送服务端维持一个长连接。

 2.客户端把获取到的百度推送服务生成的设备id,用户id等信息以及自己本身在系统中的用户id(一般这种系统都有个登录的过程的),通过http请求传到服务端进行绑定

3. 服务端在有新的消息时,通过http请求把消息发送到百度服务端

4.百度服务端再把消息通过第1步建立的长连接推送到对应的客户端上

最后再与同事沟通后,考虑到百度推送有时不够稳定,不能保证每次推送都能送到,而且有些可能会有丢失的现象,于是只使用百度推送推送打招呼的信息,然后客户端再通过http请求直接到服务器上去取新消息,这样即使中间有一个新消息遗漏了导致没往客户端发送打招呼信息,但下一次有新的信息时还是可以取到上次遗漏的信息的,于是整个过程变成如下:

1. 客户端启动时连接上百度推送的服务器,百度推送服务会生成注册设备的设备id,用户id等信息,并通过ocket与百度推送服务端维持一个长连接。

 2.客户端把获取到的百度推送服务生成的设备id,用户id等信息以及自己本身在系统中的用户id(一般这种系统都有个登录的过程的),通过http请求传到服务端进行绑定

3. 服务端在有新的消息时,通过http请求发一个打招呼的信息到百度服务端

4.百度服务端再把打招呼消息通过第1步建立的长连接推送到对应的客户端上

5.客户端再发起一个http请求去服务端获取最新的消息列表

但这种机制相对来说就没有那么实时,并且对服务端的压力也比较大,象滴滴打车这种肯定是不适合的,但对于我们项目是足够了。

如果要自己搭建消息推送的机制可参考以下文章:

Android消息推送完美解决方案全析

Android推送通知机制分析

Android消息推送机制

移动手机消息推送机制[转载]

如果想使用百度推送,可参考百度的文档:

http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/scene


© 著作权归作者所有

共有 人打赏支持
z_jordon
粉丝 36
博文 251
码字总数 78212
作品 0
厦门
技术主管
私信 提问
Android消息推送完美方案

推送功能在手机应用开发中越来越重要,已经成为手机开发的必须。在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折。本文就是用来和大家共同探讨一种Android消息...

Yujan
2014/04/10
0
0
Android P正式版即将到来:后台应用保活、消息推送的真正噩梦

1、前言 对于广大Android开发者来说,Android O(即Android 8.0)还没玩热,Andriod P(即Andriod 9.0)又要来了。 下图上谷歌官方公布的Android P发布路线图: Android P的最后一个开发者预...

JackJiang2011
08/02
0
0
Android 服务器推送技术

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比...

晨曦之光
2012/03/15
0
6
Android推送通知指南

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户 端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对...

LiSteven
2013/03/28
0
0
推送智能、 数据增能,个推助力中国安卓新生态的创建

近日,由国家发改委、工业和信息化部、中国科协指导,中国信息通信研究院主办,个推协办的“2018中国安卓开发者大会”在北京隆重召开。在这场国家级的行业盛会上,相关部委的领导、互联网领域...

个推君
07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

短视频App开发:短视频爆发式增长

短视频领域依旧热闹非凡,众多巨头纷纷布局短视频领域,推动市场格局的新变化。迹象显示,行业企业正纷纷瞄准AI(人工智能)及5G契机进行布局,力图获得下一步发展优势。 短视频市场火爆 竞争...

ThinkSNS账号
30分钟前
1
0
图形用户界面和交互输入方法---交互式构图技术

基本的定位方法 拖拽 约束 网格 橡皮条方法

中国龙-扬科
37分钟前
1
0
Win10:键盘任一键实现了 “一键开机”

微软自 Windows 10 系统起,默认自己的系统都开始支持“快速开启”。实质上就是“快速开机”的功能。 此功能的特点是:对于装载了 Windows 10 的电脑,开机时,只需要轻轻按一下键盘上的任意...

LivingInFHL
54分钟前
0
0
vue-router的HTML5 History 模式设置

VUE是当下最火爆的前端框架之一,vue-router是vue项目中几乎都会用到的组件,然而体验一时爽,其实坑不少。本篇经验将详细介绍vue-router的两种mode效果和开发测试环境下的问题,并给出解决方...

peakedness丶
59分钟前
1
0
Dubbo 源码分析 - 服务引用

1. 简介 在上一篇文章中,我详细的分析了服务导出的原理。本篇文章我们趁热打铁,继续分析服务引用的原理。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直联的方式引用...

小刀爱编程
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部