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

  • 当用户登录App时,其状态更改为“在线”。 “状态= 1”
  • 当用户退出App时,其状态将更改为“最近可用”。 “状态= 0”

  • 这个想法是,当登录的用户断开与Internet的连接时,其状态仍为1。此外,如果用户删除了该应用程序,则其状态仍为1。

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

    最佳答案

    在Activity,onStart()onResume()中,您可以通过以下方式将在线状态消息发送到服务器:

  • 1 (表示在线)
  • 0 (表示离线),

  • 但是问题是如果应用程序出现在前台,互联网停止或用户卸载了该应用程序,将会发生什么?

    您的服务器仍将只有在线状态才能显示最后一次状态。解决它的一种方法是使用MQTT

    ActivityonStart()onResume()中,将在线状态消息分别作为1、0发送给代理。建立mqtt连接时,设置最后一个will消息:
     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

    关于android - 如何知道应用程序用户是否离线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35947316/

    10-14 16:51
    查看更多