欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于android百度云推送务设计.docx

    • 资源ID:13183599       资源大小:707.34KB        全文页数:73页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于android百度云推送务设计.docx

    1、基于androidXX云推送务设计androidXX云推送设计XXXX2014年 03 月第一章 简介我来说几句吧,本来我只是想记录下的可结果写到了现在。在XX官网部分东西说得不是特别详细,我这篇文章就当是XX云推送的一个参考设计吧。因为我也确实这么走了过来,确实可以实现功能。尤其有些用户需要开发针对单台手机单个账号的情况,如何使用userID channelId来区别不同是手机,最后实现不同的推送。我这里都有个介绍实现和详解。服务器端的代码有贴上,但是我这个只是针对android有时间的话我写点关于IOS方面的。下面有服务器demo和android推送接收的截图。左边是服务器的想XX云推送发

    2、的,右边是我们项目中接收到的。图1.服务器客户端 第二章 云推送二.1 云推送是什么 云推送(Push)是XX云平台向开发者提供的消息推送服务;通过云端与客户端之间建立稳定、可靠的长连接来为开发者提供向用户端实时推送消息的服务。XX云推送服务支持推送三种类型的消息:通知、透传消息及富媒体;支持向所有用户或根据标签分类向特定用户群体推送消息;支持更多自定义功能(如自定义内容、后续行为、样式模板等);提供用户信息及通知消息统计信息,方便开发者进行后续开发及运营。二.2 云推送的价值 1. 随时随地了解最新资讯。2. 低资费3. 实时性采用TCP长连接,BP激活AP的方式,AP可休眠,手机可休眠,省

    3、流量省电量。二.3 XX云推送特点和优势1、最省:省电、省流量、零成本XX云推送采用单一终端中的多个应用共享一个XX云推送服务进程和一条TCP长连接,最大化的降低客户端的资源消耗,省电省流量。此外XX云推送的消息推送服务完全免费,开发者使用零成本。2、最稳定:消息到达率超98%XX云推送后台拥有强大的服务器集群,具有极高的吞吐能力,您的消息将以最快的速度送达用户端。XX云推送长期为XX搜索、地图、新闻等数十个千万级应用提供稳定、安全的服务支持,有效验证了云推送服务的稳定性与安全性,经内部测试消息到达率超98%。3、最便捷:强大的推送控制台XX云推送为开发者准备了强大的管理后台,开发者可以在后台

    4、可以轻松便捷的操作消息推送以及查看用户的信息统计。二.4 架构设计和技术点多应用共用同一个SDK,同一个进入层。第三章 客户端篇之Demo测试三.1 开发前准备的工作在做基于SDK的开发中一般都会有开发者账号注册,所以必须去注册一个XX开发者账号。这个我这里就不多说了,推荐个网址应该可以完成注册。网址: 。除了注册开发者账号外,还必须安装android的开发环境,具备这一个条件就可以做下面的工作了。本节中主要讲解如何从XX开发者中心下载并使用XX提供在Demo。多余的话就不说了直接进入主题。三.2 下载示例具备了开发者账号后就进入XX开放云平台,下面的这个网址是开发指南: 。原则上说是可以根据

    5、这个指南就可以成功运行XX提供的示例程序,但是个人感觉说得不够详细,我就自己的经历写下如下步骤。当进入如上的网站后,点击右上角的登录,成功后就后在右上角显示管理控制台。点击管理控制台进入轻应用管理,再点击如图的箭头就可以显示如图1.1 移动应用管理分类,点击移动应用管理进入如下图1.2应用管理。图1.1移动应用管理分类图1.2 移动应用管理点击进入如下界面,填写应用名称,例如推送测试2,点击保存。图1.3 接入移动应用点击管理控制台进入轻应用管理,再点击如图的箭头就可以显示如图1.1 移动应用管理分类,点击开发者服务管理进入图1.4,其中的推送测试2就是刚才新建的。图1.4 开发者服务管理点击

    6、推送测试2进入图1.5中记录红圈ID,后面会写入到程序中。图1.5基本信息package=com.baidu.push.example图1.6 推送设置在这里第一次使用的时候可能不知道应用包名是什么,那就先来介绍XX云推送的SDK。从该网址下载android版本的客户端SDK包及应用Demo: 。 下面并解压包目录如下Baidu-Push-SDK-Android-L2-3.2.0Demo ,将Demo导入到eclipse中。如果出现编译报就将编码改成UTF-8的,一般就不会报错了。这样把示例程序运行到手机中,会发现程序接收不到XX云在推送。是因为还要修改mainfest.xml中在api_ke

    7、y的值就是刚才推送测试2中基本信息API key见图1.5中的红圈。我的修改如下:再次运行就可以接收XX云推送的消息了。下一节介绍详细测试过程。三.3 推送功能测试手机上运行pushdemo软件,进入XX云开发者服务管理,在工程名称中选择刚才的推送测试2。点击左边的云推送如图1.7;图1.7 云推送点击通知,进入如下图1.8,在标题和消息内容中填写相关内容,最后也是最关键的时候到了,最好将pushdemo运行到后台或者说退出,这样你才能更加形象的感受到推送功能,好了点击图中的发送,大概1秒的时间,你就会听到声音,说明你收到了推送,如图1.9测试结果,这个消息和图1.8中的内容不对应,因为结果是

    8、我第二天。关于消息和媒体的测试我这就不说了,我测试过要可以的。图1.8 新建通知图1.9 测试结果第四章 客户端篇之分析四.1 XX云推送流程XX云推送采用单一终端中的多个应用共享一个XX云推送服务进程和一条TCP长连接,最大化的降低客户端的资源消耗,省电省流量。主要通过这个TCP长连接使得XX云服务器和设备之间建立单一通道,服务器直接向设备推送消息。推送流程主要是:公司的服务器向XX云推送服务器发出推送,然后XX云推送直接向对应设备ID发送推送消息,设备接收到消息后直接处理。开发者可以根据自己的情况使用通知还是消息来推送,通知直接由系统来处理,每条都会通知,而消息可以由自己来处理。XX云推送

    9、集成到开发者自己的系统中,会有自己的应用,比如说,我只想往特定的用户发送消息。在XX的网页说有说使用user ID和channel ID,但是很多在纠结怎么获取到,其实在onBind方法中可以获取XX云推送过来的两个ID号,然后直接发送自己的服务器,这样就可以控制往特定的设备发送告警信息了。四.2 XX云推送demo框架从XX云下载过来的android Demo包,主要包括6个JAVA文件类,其实大部分是可以去掉的,只有2个是必须要用的后面我会弄一个最精简的demo给大家用。MyPushMessageReceiver.java这个类是最核心的,用来接收XX云推送的消息。DemoApplicat

    10、ion 这个类可以用来启动和停止推送。而MyPushMessageReceiver 用来接收消息和通知。这个是3个界面,删除关系也不是很大,对于推送来说没有影响。还有有就是通用的一些函数,类似个工具类,这个类也是可以去除的。下面就是libs和mainfest.xml这个里面是配置推送的,很多时候会设置出错,在后面的推送应用中我会介绍哪些是有用的。第五章 客户端篇之开发基础五.1 概述云推送(Push)是XX开放云向开发者提供的消息推送服务;通过利用云端与客户端之间建立稳定、可靠的长连接来为开发者提供向客户端应用推送实时消息服务。XX云推送服务支持推送三种类型的消息:通知、透传消息及富媒体;支持

    11、向所有用户或根据标签分类向特定用户群体推送消息;支持更多自定义功能(如自定义内容、后续行为、样式模板等);提供用户信息及通知消息统计信息,方便开发者进行后续开发及运营。目前单条消息支持最大 4K 的消息推送功能,兼容文本和二进制消息格式。如果应用有超过 4K 数据推送的需求,则应用可以在推送的消息里携带资源的 URL 地址,客户端在接收到消息后,主动对这个超过 4K 的数据发起另外一次请求。五.2 JSONJSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - De

    12、cember 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C+, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。五.2.1 JSON 语法JSON 语法是 JavaScript 语法的子集。1五.2.1.1 JSON 语法规则JSON 语法是 JavaScript 对象表示语法的子集。 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组五.2.1.2 JSON 名称/值对JSON 数据的书写格式是:名称

    13、/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:1 firstName:John这很容易理解,等价于这条 JavaScript 语句:1 firstName=John五.2.1.3 JSON 值JSON 值可以是:数字(整数或浮点数)字符串(在双引号中)逻辑值(true 或 false)数组(在方括号中)对象(在花括号中)Null五.2.2 基础结构JSON有两种结构json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。1、对象:对象在js中表示为“”括起来的内容,数据结构为 key:value

    14、,key:value,.的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。2、数组:数组在js中是中括号“”括起来的内容,数据结构为 java,javascript,vb,.,取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。经过对象、数组2种结构就可以组合成复杂的数据结构了。五.2.3 基础示例简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符

    15、串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比名称 / 值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。名称 / 值对按照最简单的形式,可以用下面这样的 JSON 表示名称 / 值对: firstName: Brett 这个示例非常基本,而且实际上比等效的纯文本名称 / 值对占用更多的空间:firstName=Brett但是,当将多个名称 / 值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称 / 值对的 记录,比如: fir

    16、stName: Brett, lastName:McLaughlin, email: aaaa 从语法方面来看,这与名称 / 值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。表示数组当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstNa

    17、me这样的形式。如果使用 JSON,就只需将多个带花括号的记录分组在一起: people: firstName: Brett, lastName:McLaughlin, email: aaaa , firstName: Jason, lastName:Hunter, email: bbbb, firstName: Elliotte, lastName:Harold, email: cccc 这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法

    18、表示多个值(每个值包含多个记录): programmers: firstName: Brett, lastName:McLaughlin, email: aaaa , firstName: Jason, lastName:Hunter, email: bbbb , firstName: Elliotte, lastName:Harold, email: cccc ,authors: firstName: Isaac, lastName: Asimov, genre: science fiction , firstName: Tad, lastName: Williams, genre: fan

    19、tasy , firstName: Frank, lastName: Peretti, genre: christian fiction ,musicians: firstName: Eric, lastName: Clapton, instrument: guitar , firstName: Sergei, lastName: Rachmaninoff, instrument: piano 这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JS

    20、ON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。五.2.4 具体形式1、对象是一个无序的“名称/值对”集合。(1)一个对象以“”(左括号)开始,“”(右括号)结束。(2)每个“名称”后跟一个“:”(冒号);(3)“名称/值 对”之间使用“,”(逗号)分隔。例子:表示人的一个对象:姓名 : 大憨,年龄 : 242、数组是值(value)的有序集合。(1)一个数组以“”(左中括号)开始,“”(右中括号)结束。(2)值之间使用“,”(逗号)

    21、分隔。例子:一组学生 学生 : 姓名 : 小明 , 年龄 : 23, 姓名 : 大憨 , 年龄 : 24 说明:此Json对象包括了一个学生数组,而学生数组中的值又是两个Json对象3、值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。4、字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。 字符串(string)与C或者Java的字符串非常相似。5、数值(numb

    22、er)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。五.2.5 校验工具JSON格式取代了xml给网络传输带来了很大的便利,但是却没有了xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中。但是国人的一款在线工具 BeJson 给众多程序员带来了一阵凉风。五.3 JSON解析五.3.1 Json解析实例我在用XX云推送的时候只用到一个2条类型的json格式数据,我用这个作为我们的协议,然后来解析这个数据获取我们需要的字段数据。具体协议定义我们暂时只用了2个一般都是足够了,我是使用消息的方式去发送的,自己控制是否有通知,这样

    23、的操作比较方便。json协议定义下面讨论。五.3.2 推送告警json协议推送告警接收到的消息:info:DevId:AX-DSW-2012081000065,DevSn:012345678,Channel:0,Time:2014-03-27 10:14:57,WType:537406354,FType:16,AreaName:遥控器,Locate:沃尔玛广场DevId:设备ID号DevSn:设备SNChannel:通道号Time:告警时间WType:告警方式,参考附件表AFType:文件类型,参考附件表BAreaName:防区名称,协议解析:使用如下所示的代码可以实现该条json协议,我是为

    24、以后考虑才做成一个对象数组的形式:try JSONArray jxxJsonObject = new JSONObject(json).getJSONArray(msg); for (int i = 0; i jxxJsonObject.length(); i+) JSONObject jo = (JSONObject) jxxJsonObject.opt(i); devID = jo.getString(DevId); snString = jo.getString(DevSn); chnnelString = jo.getString(Channel); timeString = jo.g

    25、etString(Time); msgTypeString = jo.getString(MsgType);/MsgType%DevId%DevSn%Channel%Time msgString = msgTypeString+%+devID+%+snString+%+chnnelString+%+timeString; / sendDevStateUpdate(msgString); AlarmHandler amAlarmHandler = AlarmHandler.getInstance(); amAlarmHandler.devStateChangeNotify(devID, snSt

    26、ring,msgTypeString); return retString; catch (JSONException e) e.printStackTrace();五.3.3 设备变更json状态变更消息message=msg:DevId:AX-DSW-2012081000065,DevSn:012345678,Channel:0,Time:2014-03-27 09:53:03,MsgType:33024该条协议的解析如下:try JSONArray jxxJsonObject = new JSONObject(json).getJSONArray(info); for (int i =

    27、0; i jxxJsonObject.length(); i+) JSONObject jo = (JSONObject) jxxJsonObject.opt(i); devID = jo.getString(DevId); currentAlarmDevID = devID; / jo.getString(DevId); snString = jo.getString(DevSn); chnnelString = jo.getString(Channel); timeString = jo.getString(Time); currentAlarmTime = timeString; are

    28、aType = jo.getString(WType); fTypeString = jo.getString(FType); armName = jo.getString(AreaName); locaString = jo.getString(Locate); retString = 您装在 + locaString + 的设备 + devID + 于 + timeString + 时发生 + areaType + 告警!; mApplication.saveAlarmInfo(devID, snString, locaString, chnnelString, timeString, a

    29、reaType, fTypeString, armName);return retString; catch (JSONException e) e.printStackTrace();第六章 客户端篇之推送开发这一章节中我会写下我在使用XX云推送中遇到问题及效率情况,我已经在两个项目中集成了XX云推送功能了。六.1 XX云推送demo裁剪在上面一节中我就有提到过把从XX云官网下载的android推送demo 精简下。这里刚好和大家一起来做做,我这个下面的截图就是精简好的,有需要这个DEMO的可以从XX网盘去下载,我会提供地址。这里来说说如何来精简。6.1 XX云推送精简demo六.1.1 Activity裁剪XX云推送带的这些activity都是为了demo演示而设计的,实际在我们的项目中是用不到的,我们可以将其删除并且在mainfest.xml中将其删除掉。可以照常运行起来,不会有什么问题。主要删除的类:LoginActivity.java 、CustomActiv


    注意事项

    本文(基于android百度云推送务设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开