如何知道应用用户是否离线 android 应用?

How to know if app user is offline android app?

目前我正在开发一个出租车预订应用程序。 现在我正在开发驱动程序应用程序。 现在我的任务是,当互联网断开或连接时,我想让他离线和在线。

在我的数据库中,我有一列 is_online 当他在线时该值变为 1,当他离线时该值变为 0。

现在我知道如何让他在线但如何让他离线?如果互联网断开连接!我怎样才能更新数据库中的值。它仍然是 1 永远不会变成 0;

目前我正在使用广播接收器,当互联网断开或连接时通知我。

<?PHP
require_once 'include/DB_Settings_Functions.php';
$db = new DB_Functions();

// json response array
$response = array("error" => FALSE);

if(isset($_POST['driver_id'])&&isset($_POST['status']))
{  
$driver_id= $_POST['driver_id'];
$status= $_POST['status'];  




     $user = $db->makeOnline($driver_id,$status);





        }



?>

我听说可以通过使用 mqtt 任何工作示例来解决它?谁能帮我?我正在使用本地主机 wamp 服务器。

编辑: 简而言之,我想在连接中断之前在服务器中发送值,知道如何使用 mqtt 完成吗?

您可以从移动应用程序每分钟触发一次请求并将其日期和时间存储到数据库中。如果用户在线,这意味着上次访问时间将在数据库中每分钟更新一次,如果用户离线,那么最后一次访问时间将不会在数据库中更新,因此您只需要触发一个 sql 查询以获取离线用户上次访问时间大于 2 减去。

MQTT 有一个名为 Last Will and Testament (LWT) 的功能,这是当客户端连接超时时由代理发布的消息。

这意味着客户端可以在上线时将保留消息发布到唯一主题(例如发布 1 到 /status)。然后它可以设置一个 LWT 以在连接断开时将 0 发布到同一主题。它还应该在手动关闭连接之前手动发布 0,因为 LWT 仅在连接意外断开时才会触发。

您可以根据需要调整超时值。