【问题标题】:How to know if app user is offline?如何知道应用用户是否离线?
【发布时间】:2016-03-11 18:25:10
【问题描述】:

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

  • 当用户登录应用程序时,他的状态变为在线。 “状态 = 1”
  • 当用户退出应用程序时,他的状态变为离线“最后可用”。 “状态 = 0”

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

是否有代码或方法可以检测用户在删除/删除应用程序后最后一次在线的时间?许多删除该应用的用户仍然处于在线状态。

【问题讨论】:

    标签: android ios iphone


    【解决方案1】:

    在您的 Activity 中,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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 如果应用在后台运行,有没有办法向用户显示在线?
      • 会的。如果他们正在访问服务器,他们的最后一次访问时间会得到更新。这将使他们保持在线。如果他们的最后访问时间太旧,您会将他们显示为离线。至于主动使用应用程序与后台 - 您可以区分用户发起的请求和服务 api 中的自动请求,这将为您提供足够的信息。
      • 所以检测用户是否在线并且应用程序在后台打开,我每隔几分钟发送一个自动请求?有什么例子可以检查吗?
      猜你喜欢
      • 2011-10-17
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多