如何知道如果应用程序用户是离线安卓应用程序


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查询get离线用户的最后访问时间大于2 -

MQTT有一个称为最后遗嘱(Last Will and Testament, LWT)的函数,这是客户机连接超时时由代理发布的消息。

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

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