在服务端收到消息后增加如下代码

//保存到离线消息表,客户端收到后调用删除离线消息功能,这样可确保即使网络突然掉线或不好的情况下消息丢失的问题
OfflineMessageStore offlineMessageStore = new OfflineMessageStore();
offlineMessageStore.addMessage(message);

客户端在登录的时候要先设置为离线,收完离线消息后再改成在线模式。

接收方在收到每条消息后自己调用删除离线消息。

注意事项:

1、登录前要将状态设置为离线:

ConnectionConfiguration connectionConfig = new ConnectionConfiguration(192.168.1.82, 5222, "");
connectionConfig.setSendPresence(false);
ASmackMainActivity.connection = new XMPPConnection(connectionConfig);

2、接收完离线数据后,要将离线数据清除:

offlineManager.deleteMessages();

3、最后要将用户状态设置为在线。

ConnectionConfiguration connectionConfig = new ConnectionConfiguration(192.168.1.82, 5222, "");
connectionConfig.setSendPresence(false);
ASmackMainActivity.connection = new XMPPConnection(connectionConfig);

connection.login(用户名,密码);

OfflineMessageManager offlineManager = new OfflineMessageManager(ASmackMainActivity.connection);
        Iterator<org.jivesoftware.smack.packet.Message> it = offlineManager.getMessages();
            while(it.hasNext()){
                org.jivesoftware.smack.packet.Message message = it.next();
                Log.e(TAG, "收到离线消息, Received from 【" + message.getFrom() + "】 message: " + message.getBody());
            }
            //删除离线消息
            offlineManager.deleteMessages();
            //将状态设置成在线
            Presence presence = new Presence(Presence.Type.available);
            ASmackMainActivity.connection.sendPacket(presence);

同时服务器还要修改下脱机消息的配置,不然会收到重复的离线消息,因为openfire默认是自动保存离线消息的。

最新文章

  1. 敏捷开发与jira之研发管理模式
  2. 命令行选项解析函数(C语言):getopt()和getopt_long()
  3. 在ubuntu14.04设置静态ip
  4. OpenCV 3.0 CvMat and cv::Mat Conversion
  5. 274. H-Index
  6. ActiveX控件是什么?
  7. Linux查看端口号
  8. Nginx+keepalived做双机热备加tomcat负载均衡
  9. 如何让asp.net mvc 直接运行mobile页面
  10. JS打印、预览(IE,Chrome)
  11. CATransform3D中m34字段的取值含义
  12. IOS 特定于设备的开发:检查设备接近度和电池状态
  13. delphi如何获得当前操作系统语言环境
  14. Html 小插件6 百度新闻插件
  15. Linux系统监控命令
  16. 如何实现在Windows上运行Linux程序,附示例代码
  17. ISP PIPLINE (三) BPC
  18. Mybatis的学习1
  19. springboot 停止
  20. 故障排查:vsftpd无法用浏览器访问

热门文章

  1. NTP详解-转
  2. 对于JAVA多线程卖票小程序的理解
  3. 获取ios设备系统信息的方法 之 [UIDevice currentDevice]
  4. 高屋建瓴之WebMail攻与防
  5. nodeJs 常用模块(一)
  6. mysql建立自增主键的插入,及自动插入当前时间
  7. C语言的第一天
  8. spring_150910_hibernate_id_auto
  9. yum使用
  10. jquery.autocomplete修改 实现键盘上下键 自动填充