开源学习 百度推送实战项目 友聊 (二)

本文详细介绍了使用百度推送REST API实现服务端与客户端交互的过程。包括API调用、消息发送与接收、数据封装及广播使用等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个项目虽不大,也有七八个功能模块,希望能用十篇左右写完。
今天记录百度推送 “服务端” 和 “客户端” 的实现,这里的服务端和客户端只是类似,真正的服务端在百度那里。服务端调用 百度推送REST API 。 作为小白,第一次接触REST API ,莫名的激动了好久呀! 按照文档上给出的消息格式和类型,严格匹配。数据格式使用的Json , 签名稍微有点复杂,采用md5 混合加密。总共十五个相应的操作,比较简单。看下项目工程目录
项目工程目录

代码封装到很好,Server 下,RestApi 将数据封装成键值对,BaiduPush 进行发送。与百度服务器交互的操作,都封装在这里,发送消息、通知、获取绑定列表、获取标签以及其他的操作。调用REST API 的操作都在这里完成,结果会在Client 中 PushMessageReceiver 中得到。
大致看下封装的方法

图片说明文字

Http操作方法封装的也很好。

下面是调用REST API 的方法

图片说明文字

再看RestApi 类,该类继承TreeMap ,重写put 方法,保存需要发送的数据,还有就是一些常量字段。

图片说明文字

在学习的时候会想,作者问什么会想到这样封装呢?如果是我,会怎么做,我们思路的区(cha)别(ju)在哪里?
对Map 的理解,一直都在似是而非的阶段,了解却没有用过,不知如何使用。

Server 下面就这些东西,再看下Client 下面 PushMessageReceiver.

图片说明文字

广播的使用 本身比较简单,关键是作者用的灵活巧妙,再加上接口的配合,浑然天成,我等小白实在是无法领悟这么高深的心法。

在onReceive()中接收Manifest中注册的广播,里面有消息、通知以及网络变化。收到消息后,使用Gson 解析,再判断、过滤部分消息,是否有tag,是否是新来的,是否保存到数据库,这些应该是业务逻辑的设计(逻辑好,才是真的好)。对监听事件的管理,第一次见到这样的方法。当前程序是主进程,消息什么的直接显示,app在后台运行时,使用通知栏,保存消息到数据库。

最后看一下第一次登陆,消息发送与接收的过程。

第一次运行APP ,在FirstSetActivity 中,调用PushManager.stratWork() ;开始绑定,返回结果在OnReceive 中返回,绑定成功,保存返回的信息,并给所有人的打个招呼(推送一条消息)。

将内容封装成实体类,转化成Json格式,使用SendMsgAsyncTask (继承AsyncTask)发送,在接口 onSendSuccessListener() 中处理发送成功的回调,跳转到下个主页面。

图片说明文字

必须要看先SendMsgAsyncTask 的封装。所有的发送消息的操作都在这里完成。

图片说明文字

发送消息时,创建一个SendMsgAsyncTask , 调用send() 方法,在send 方法中又创建MyAsyncTask(),在MyAsyncTask 中 调用Server 端发送操作 mBaiduPush.pushMessage()。发送成功,添加回调接口onSendSuccessListener ,发送失败,重新发送。

自己做demo 时,遇到一个问题。PushMessageReceiver 接收到消息后,如何持续的传递给聊天界面并更新。作者使用的接口,ChatActivity 实现PushMessageReceiver 的抽象接口 EventHandler ,其中一个方法 onMessage(Message) 。 ChatActivity 中 重写onMessage(Message) 方法,得到消息对象,再用Handler 通知UI线程更新数据和界面!

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: imesong

原文地址: http://my.eoe.cn/imesong/archive/21762.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值