如何知道app用户是否处于离线状态?

时间:2016-03-11 18:25:11

标签: android ios iphone

我的聊天应用有以下方法:

  • 当用户登录App时,其状态将更改为Online。 “状态= 1”
  • 当用户退出应用程序时,其状态将更改为“脱机”“上次可用”。 “状态= 0”

这个想法是当记录的用户与互联网断开连接时,他的状态仍为1.此外,如果用户删除应用程序,他的状态仍为1.

在删除/删除应用后,是否有代码或方法来检测用户上次上线的时间?删除应用程序的许多用户仍然具有在线状态。

2 个答案:

答案 0 :(得分:2)

在您的活动onStart()onResume()中,您可以将在线状态消息发送到服务器:

  • 1 (在线表示)

  • 0 (分别表示离线),

但问题是如果应用程序到达前台或互联网停止或用户卸载应用程序会发生什么?

您的服务器仍然只有在线状态。解决问题的一种方法是使用MQTT

ActivityonStart()onResume()中,将在线状态消息分别以1,0的形式发送给代理。在进行mqtt连接时,设置最后一条消息:

 MqttConnectOptions options = new MqttConnectOptions();
                options.setConnectionTimeout(60);
                options.setWill(STATUS, ("PASS_OFFLINE_STATUS_OF_USER").getBytes(), 0, true);
                client.setCallback(ApplozicMqttService.this);

                client.connect(options);
  

来源: https://github.com/AppLozic/Applozic-Android-SDK/blob/b7337f8d43c9e4df8927c77b34903c7762670cbf/mobicomkit/src/main/java/com/applozic/mobicomkit/api/ApplozicMqttService.java

最后将消息在MQTT中用于通知其他客户端有关非正常断开连接的客户端。

在此处阅读更多内容:

  

http://www.hivemq.com/blog/mqtt-essentials-part-9-last-will-and-testament

答案 1 :(得分:0)

您基本上必须跟踪他们上次访问您的服务器的时间。如果上次访问超过X分钟(X是您决定的),那么您将它们设置为脱机。