位置: 编程技术 - 正文

Android推送进阶课程学习笔记(android实现推送)

编辑:rootadmin

推荐整理分享Android推送进阶课程学习笔记(android实现推送),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android如何实现推送功能,android实现推送,android推送解决方案,安卓的推送机制,android推送联盟的最新情况,android推送联盟的最新情况,android推送联盟的最新情况,安卓的推送机制,内容如对您有帮助,希望把文章链接给更多的朋友!

今天在慕课网学习了Android进阶课程推送的服务器端处理回执的消息 。这集课程主要介绍了,当服务器往客户端推送消息的时候,客户端需要发送一个回执回来确认收到了推送消息才算一次完整的推送过程。 具体的实现方法为服务器推送一个消息到客户端的时候,会生成一个相应的uuid标识这个消息,并把这个消息以及uuid存储到数据库中,客户端收到消息后,取出其中的uuid并将这个uuid发给服务器端,服务端收到这个uuid,根据uuid到数据库里删除了对应的消息记录,整个推送算完成。这里先贴出比较核心的发送代码

可以看到,每次推送消息给客户端的时候都会做入库操作。 同时,源代码里还有个业务逻辑,当服务器端检测到客户端从离线到上线状态的时候,会去数据库查找是否有该客户的的消息,有的话就会取出来发送,代码如下

这个代码存在的一个bug是,当检测到有消息要给刚上线的客户端发送的时候,调用发送方法sendNotifcationToUser,并从数据库删除掉了原来的消息,这样操作后,会发现在sendNotifcationToUser里入库的消息被 mNotificationSevice.deleteNotification(notification);也一起删除了(当然原来的入库的消息也一起删除,但这个删除是正确的),而刚刚入库的那条消息是不应该删除的,必须等客户端发送回执回来后再删除。

视频作者郭神对这个bug的解决方法如下,先直接贴出代码

Android推送进阶课程学习笔记(android实现推送)

以上代码增加了一个字段shouldSave来判断是否入库,同时在检测到客户端上线并且数据库有之前发送失败的消息得推送的时候,传入false

这样改完测了之后,发现没有任何问题,客户端从离线到上线后,原本存在数据库的消息都没有了,满足了需求。

但是,其实是有问题的,当客户端从离线到上线并且服务器端从数据库检测到有消息得推送的时候,因为传入sendNotifcationToUser的最后一个参数是false,根本没有做入库操作,所以数据库根本没有这条发送消息的数据,客户端收到消息发送回执后,服务器没有对应的数据可以删除,导致看起来似乎达到了预期的效果。

针对这个问题,我做的修改如下,针对客户端从离线到在线的状态并需要推送之前为推送成功的消息,从数据库取出数据,直接推送该消息,不删除该消息,也不再插入新消息,等收到客户端回执后再删除。

这里还多了id字段,每次发送消息,id消息都是生成一个新的,对于发送之前的消息,完全没必要生成新的id(即uuid),取出原来消息的id就行了,查找消息的地方改为如下

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android打包jar 和使用第三方库 作者:silence鼬、时间:年6月日在开发中常会打包好一些常用的代码,生成jar,方便在其他的项目中使用,提高开发效率。Android怎么使用呐。首先

android 图形平移 镜子效果 倒影效果 图形平移setTranslate(1.5f,-);镜子效果matrix.setScale(-1,1);matrix.postTranslate(bmp.getWidth(),0);倒影效果matrix.setScale(1,-1);matrix.postTranslate(0,bmp.getHeight());------------------

android 图片合成 图片合成BitmapdrawingBitmap=Bitmap.createBitmap(bmp1.getWidth(),

标签: android实现推送

本文链接地址:https://www.jiuchutong.com/biancheng/374396.html 转载请保留说明!

上一篇:详解android:scaleType属性(详解九章算法)

下一篇:Android打包jar 和使用第三方库(android studio打包jar文件)

  • 缴纳购销合同印花税怎么算
  • 减税性质代码及名称是什么意思
  • 建筑垃圾清运税率多少
  • 公司收到待报解预算收入会计分录
  • 个税汇算清缴时全年一次性奖金汇总到工资薪金怎么操作
  • 稽查查补的税款用什么时候的税率表示
  • 建筑业工程项目登记是哪方提交
  • 员工集体旅游费会计分录
  • 培训学校预收学费要交税吗
  • 视同销售存货账务处理方法是什么?
  • 电视台广告费可以抵扣吗
  • 风险纳税人不允许领用发票
  • 预缴水利基金如何申报?
  • 退股支付的现金流量表怎么填
  • 退役士兵税收优惠政策
  • 税负率一般控制在多少合适
  • 企业向个人赠送礼品
  • 职工聚餐费可以列入职工福利费吗
  • 汇兑损益怎么记账
  • 固态硬盘如何接入电脑
  • window11正式版什么时候出来
  • 银行结算账户的种类
  • 外购产品视同自产产品办理免抵退税的条件有哪几种
  • php获取文本内容
  • php获取文章内容图片
  • 社保比例调整后多久生效
  • 学校官网首页图片
  • 无法登陆p.to
  • php自带的加密解密函数
  • three.js入门指南
  • springboot ci
  • php array_product
  • 增值税发票如何认证抵扣
  • 私募股权基金公司是做什么的
  • 售后租回交易的第二年利息怎么算
  • 无形资产和固定资产减值准备可以转回吗
  • 红字发票开具错了,是否可以将其作废?
  • 开收据可以列收入吗
  • python mad
  • 应付账款和应收账款的关系
  • 织梦怎么新建页面
  • sqlserver连接不到本地服务器
  • 哪些无票费用能够抵扣所得税
  • 个人所得税可以取出来用吗
  • 水电费专用发票模板
  • 上月未结账本月不能结账
  • sql server 2008使用说明
  • 部分货物退回怎么开票
  • 营业税金及附加是什么科目
  • 短期借款预提利息通过短期借款科目核算
  • 商品没入库直接发货
  • 预缴增值税可以抵扣销项税吗
  • 建账之前的业务怎么处理
  • 技术服务费怎么交税
  • 商贸公司库存表怎么做
  • 对公账户提取备用金怎么做账
  • 一次性付款的优势
  • 营业收入增长率分析
  • 三证合一怎么看税务登记证
  • 会计一般月初忙几天
  • mysql密码忘记了怎么找回
  • windows vista X86 RTM/OEM 中文正式版下载地址
  • 重装系统注册表会重置吗
  • Win7 64位系统XP模式失效的原因及解决方法
  • Xp系统的桌面文件在哪里
  • xp禁用win键
  • linux安装.sh
  • win10快速启动怎么进入bios
  • linux扩容inode
  • 如何删掉win7系统
  • Javascript call和apply区别及使用方法
  • js原型作用
  • java 把对象存到数据库
  • 系统导出数据不完整
  • 技术合同备案要求
  • 四川成都离剑门多远
  • 动员讲话简短精辟
  • 社保卡手机缴费怎么交不了
  • 山东省地方税务局关于个人所得税
  • 昱铭这个公司名字怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设