【发布时间】:2016-03-11 18:25:10
【问题描述】:
我的聊天应用有以下方法:
- 当用户登录应用程序时,他的状态变为在线。 “状态 = 1”
- 当用户退出应用程序时,他的状态变为离线“最后可用”。 “状态 = 0”
这个想法是,当登录的用户与互联网断开连接时,他的状态保持为 1。此外,如果用户删除应用程序,他的状态保持为 1。
是否有代码或方法可以检测用户在删除/删除应用程序后最后一次在线的时间?许多删除该应用的用户仍然处于在线状态。
【问题讨论】:
我的聊天应用有以下方法:
这个想法是,当登录的用户与互联网断开连接时,他的状态保持为 1。此外,如果用户删除应用程序,他的状态保持为 1。
是否有代码或方法可以检测用户在删除/删除应用程序后最后一次在线的时间?许多删除该应用的用户仍然处于在线状态。
【问题讨论】:
在您的 Activity 中,onStart() 和 onResume(),您可以将在线状态消息发送到服务器:
1(表示在线)
0(表示离线),
但问题是如果应用程序进入前台或互联网停止或用户卸载应用程序会发生什么?
您的服务器仍将保持最后一次在线状态。解决它的一种方法是使用MQTT。
在Activity、onStart()和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);
最后遗嘱消息在 MQTT 中用于通知其他客户端有关不正常断开连接的客户端。
在此处阅读更多信息:
http://www.hivemq.com/blog/mqtt-essentials-part-9-last-will-and-testament
【讨论】:
您基本上必须跟踪他们上次访问您的服务器的时间。如果上次访问时间超过 X 分钟(X 由您决定),那么您将其设为离线。
【讨论】: