解读AndroidPN的离线消息处理

本人在项目中用到AndroidPN,达到通过服务器给终端推送消息通知的功能。下面讲下个人对AndroidPN的离线消息处理的理解。

AndroidPN的离线消息需要处理以下几种情况:

1.客户端刚上线的时候,AndroidPN服务器需要在根据上线的用户去检索该用户是否在通知消息表中有未发送(state=0)的消息,如果有,则调用NotificationManager中的sendOfflineNotification方法,发送离线消息;


当时我还没看到AndroidPN中的离线消息这块的处理代码,自己就自己写了一段代码在IQAuthHandler中的handleIQ处理成功后加上了离线消息的处理 ;后来接着研究的时候发现AndroidPN已经加上了跟我一样的处理代码,不过他放的位置跟我的不一样,我的是放在登陆成功后的位置,而源码是放在StanzaHandler处理消息类中的processPresence方法中,同样是对session作了判断,如果session的状态为已经验证,则查询该用的离线消息,再发送离线消息。当时我没明白为什么要放在这个位置,为什么不放在IQAuthHandler中的handleIQ处理登陆成功后,后来我在我解决第二种需要处理AndroidPN的离线消息的时候,才明白源码中为什么要把对离线消息的处理放在StanzaHandler处理消息类中的processPresence方法中。以下就是第二种需要处理离线消息的情况:


2.客户端在线的时候,服务器发送的消息因为某些原因,未能成功发送给客户端,或客户端未能给服务器一个消息接收回执。这时,这条消息在服务器就是state=0,被认为是未发送的消息,这时该怎么处理呢。服务器

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值