如何知道app用户是否是脱机Android应用程序?

时间:2016-09-09 08:23:09

标签: java php android mqtt

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

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

现在我知道如何让他上网,但如何让他离线?如果互联网断开连接!我怎样才能更新db中的值。它仍然是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完成它吗?

2 个答案:

答案 0 :(得分:1)

您可以在移动应用的每一分钟发出请求,并将其日期和时间存储到数据库中。如果用户在线,则意味着上次访问时间将在数据库中每分钟更新一次,如果用户处于脱机状态,那么上次访问时间不会在数据库中更新,因此您只需要为具有上次访问时间的离线用户激活SQL查询然后是2减去更重要的。

答案 1 :(得分:1)

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

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

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