我有一个Android应用和一个向用户提供相同内容的网站。我正在努力完成以下任务:
如果用户在网站上登录,则Android应用应自动将其注销,如果用户从Android应用登录其帐户,则该网站应将其注销。这是为了确保用户可以同时访问Web应用程序或Android应用程序,而不是一起访问。
我正在寻找实现这一目标的最佳实践和解决方案。
以下是我的想法:
当用户从Android或网站登录时,我更新数据库中名为“login_device”的字段,根据具体情况,这将是“web”或“mobile”。
如果“login_device”为“mobile”且用户从网站登录,则会更改为“web”,Android应用程序将注销该用户。
如果“login_device”是“web”并且用户从Android应用程序登录,则此值将更改为“mobile”,并且用户将从Web注销。
另外,我为Android应用程序创建了一个名为“ping”的Web服务。
但是,在这种方法中,Android应用程序需要与服务器保持持续连接,以检查“login_device”的值。
这是ping服务代码:
<?php
require_once 'transact/info.php';
require_once 'transact/database.php';
require_once 'transact/func.php';
$data = file_get_contents('php://input');
$json = json_decode($data);
$id = mysql_real_escape_string($json->{'user_id'});
$query = 'select login_device from users where id = '.$id;
$result=mysql_query($query) or die('error getting admin details : '.mysql_error());
$row = mysql_fetch_array($result);
$array = array("login_device" => $row['login_device']);
print( json_encode($array));
?>
所以,我的问题是:
问:在这种方法中,如何与服务器保持持续连接以检查“login_device:
的值 问:有没有更好更标准的方法来完成上述工作?感谢您的帮助!
答案 0 :(得分:0)
问:在这种方法中,如何与服务器保持持续连接以检查“login_device:
的值
定义一个标准时间间隔,即使有人登录网站,他们也没有足够的时间来破坏任何规则(根据你的应用程序正在做什么)(例如10秒),并在此网站ping间隔。移动应用程序的体系结构通常基于REST技术。也就是说,没有真正永久的联系。你越接近ping是非常接近的。所以,你只需要定义“对我来说经常是多久”
问:有没有更好更标准的方法来完成上述工作?
不,因为这不是通常的要求。大多数应用程序/网站现在不允许永久使用多个设备。所以你如何开始这样做似乎是最好的解决方案
答案 1 :(得分:0)
您是否考虑过使用node.js建立一个网站,然后通过将其包装在Phone Gap和XCode中将其转换为移动应用程序,将其分别转换为Droid和iOS应用程序。 Node.js将保持同步连接对您的应用程序开放,这将允许在用户的登录状态发生变化时推送事件。