位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享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文件)

  • 怎么把销项税额进项税额给转掉
  • 六税一费优惠政策
  • 车费报销计入什么费用
  • 工程会计和工业会计进销项区别是什么
  • 资产负债表其他应付款计算公式
  • 合同每三个月付一次款
  • 银行回单附言写错业务
  • 支付退货款现金流怎么做
  • 进项税有余额但没有余额
  • 预付房租的会计科目
  • 分包管理费取费标准
  • 个体户国税异常怎么办
  • 小规模纳税人收入超过500万怎么办
  • 生产型增值税与消费型增值税的区别在于是否允许企业
  • 小规模纳税人设备税率
  • 发票普票冲红
  • 账务不符怎么写
  • 公司帮员工缴纳个税,不从工资里扣,如何做账
  • 公司扣了员工的个人所得税但没有帮员工申报
  • 税款已缴纳可以作废申报吗
  • 差额银行承兑汇票
  • powershell不显示用户名
  • 发工资一定要交税吗
  • 要看网怎么找
  • linux系列
  • 如何卸载win10
  • 代开的增值税怎么计提?
  • avgcc32.exe进程是什么文件产生的 avgcc32进程信息查询
  • 生育津贴差额账务处理
  • php用户登录界面
  • el-switch右对齐
  • 上月开了红字发票当月如何申报
  • 设备租赁费属于设备费吗
  • tensorflow gan
  • mksquashfs命令
  • php封装app打包
  • 公司有收入可不交社保吗
  • hashmap 面试
  • 政府奖励需要缴纳增值税吗
  • 公允价值怎么记账
  • 营改增分录
  • 大华摄像头海康威视录像机
  • mongodb基础知识
  • discuz设置门户
  • 法人治理结构是指明确
  • 现金存入银行如何做账
  • 差旅费报销相关政策
  • 预算收入支出
  • sqlserver存储过程if语句
  • 企业所得税征收方式有哪些?
  • 一般纳税人账务不健全是否处罚
  • 新收入准则确认收入的条件
  • 计提工资是计提哪个月的
  • 进项税销项税抵扣分录
  • 一般纳税人证明在哪里开具
  • 过路费怎么抵扣进项税额报表怎么填
  • 用友作废的凭证怎么恢复
  • mysql查询包含
  • mysql5.7.19 winx64安装配置方法图文教程(win10)
  • mac系统如何隐藏文件
  • xp开始菜单栏怎么还原
  • 2016年Win10 RedStone将重大改版 微软小娜可以浮动
  • linux中关闭系统命令
  • win7系统怎么禁用win键
  • 原生js添加css样式
  • 批处理命令修改ip
  • 使用div+css进行网页布局的三种方式
  • perl删除文件夹
  • unity udim
  • 完美解决雷电模拟器卡顿
  • js实现@功能
  • node.jsexpress
  • python读取一个文件并写入另一个文件
  • python中的迭代器
  • 什么是城建税和土地税
  • 发票查询结果打印怎么弄
  • 网上申报增值税纳税申报表怎么填写
  • 建筑施工企业研发中心建设
  • 福建税务局电子
  • 耕地占用税是土地增值税扣除项目吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号