Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从服务器检查Android设备是否在线_Android_Push Notification_Android C2dm - Fatal编程技术网

从服务器检查Android设备是否在线

从服务器检查Android设备是否在线,android,push-notification,android-c2dm,Android,Push Notification,Android C2dm,tl;dr如何从服务器上了解Android设备在任何给定时间是否在线 我有一个应用程序,它需要在任何时候都与互联网连接才能进行预订。用户也可以从网站上独立预订 然而,如果安卓设备上的互联网连接消失了(edge案例)-我仍然希望该设备继续离线运行(并在本地离线进行预订),而网站将停止接受预订-因为安卓设备不再连接到互联网,可能会发生各种同步错误 换句话说,Android设备离线预订比网站预订更具优势 所以,在设备上恢复互联网连接后,网站将继续正常运行 建议的解决方案 我考虑了一些解决方案,包括从服

tl;dr如何从服务器上了解Android设备在任何给定时间是否在线

我有一个应用程序,它需要在任何时候都与互联网连接才能进行预订。用户也可以从网站上独立预订

然而,如果安卓设备上的互联网连接消失了(edge案例)-我仍然希望该设备继续离线运行(并在本地离线进行预订),而网站将停止接受预订-因为安卓设备不再连接到互联网,可能会发生各种同步错误

换句话说,Android设备离线预订比网站预订更具优势

所以,在设备上恢复互联网连接后,网站将继续正常运行

建议的解决方案


我考虑了一些解决方案,包括从服务器向设备发送推送,并在合理的时间段内等待响应(对某个端点的HTTP调用)。若响应并没有返回—设备处于脱机状态,否则它处于联机状态。还有其他更可靠的建议吗?

除了使用在Android上运行的一些代理并通知服务器其已启动之外,别无选择

另一种更复杂的方法是使用“推送通知”(例如,技术服务器端)

关于服务器端cron作业:

在数据库中的所有客户机上运行的独立过程,比如说每1天一次,并将每个客户机的最后一个“im-alive”消息(请求)与当前时间进行比较


如果差异等于1周,则将客户端状态设置为“僵尸”。

如果您首先提出一个更健壮的协议并避免“各种同步错误”,不是更好吗?我该怎么做?要求用户可以在线(网站)预订&运营商可以通过设备(离线或在线)预订。用户和操作员都必须知道(在进行实际预订之前)哪些插槽可用/打开。如果设备上没有互联网连接,很容易要求预订是不可能的——但事实并非如此。“我怎么能做到?”——嗯,通过编程。毕竟,你无论如何都需要这样做。设备频繁地运行和离线,网络浏览器也不能幸免这些问题。根据您的计划,如果您能够确定设备在时间
T
时处于在线状态,那么您希望整个世界都停止运行,以确保设备保持在线(并且Web浏览器不会出现问题),直到所有工作完成时间
T+X
。这完全是不现实的。如果这意味着需要对您的“需求”进行更改,那么就这样吧。现在,在同步算法方面已经做了大量的工作。一种方法是说,在双方完成工作之前,保留并不完全“真实”。这往往要求在事务进行时将资源(例如,“插槽”)置于“挂起”状态,以便在事务进行时没有其他人可以窃取这些资源。它通常还涉及某种超时,因此最终会清理放弃的事务,并将资源从“挂起”状态移回“空闲”状态。这种方法的问题是,用户可以到达网站,并在代理调用(在线->离线)之间进行预订。所以时间线应该是:设备在线->通知服务器->设备离线->在离线模式下对设备进行预订->用户在线预订。可能会发生冲突。完全不是,为服务器(一些cron作业作为服务)创建策略,如果客户端在一周内没有通知您,比如说,将客户端的数据库作为僵尸更新。我确信你们在数据库中记录了所有客户端请求的时间戳