使用 PhoneGap/Cordova 并检测用户是否实际连接到网络
Using PhoneGap/Cordova and detecting if user is actually connected to a network
我们正在将 Cordova 用于混合项目。我们 运行 遇到一个问题,如果 device/app 看到 WiFi 网络,但 WiFi 网络需要身份验证或接受其条款和条件(最常见于咖啡馆、酒店等)。
PhoneGap/Cordova 只看到 WiFi 网络,所以检查网络实际上是不可靠的,因为应用程序正在看到网络,用户只是没有登录才能从应用程序获取远程数据。
有没有人处理过这个或处理过这些类型的情况?您是如何接近或解决解决方案的。有代码片段吗?
我不认为有这方面的插件。
如果依赖特定的后端服务器:
仅仅检查设备是否在线可能不够,因为服务器(无论出于何种原因)可能处于离线状态。
所以我最终得到了一个 RESTful 服务,例如 (node.js/express):
app.get('/', function(req, res) {
res.jsonp({status: 'OK'});
});
这只是 returns "OK" 并在几种情况下检查连接。
如果您只需要知道您是否在线:
在这种情况下,我会检查一些普遍可用的网站,看看是否可以访问。也许 cordova-plugin-inappbrowser 可以帮助解决这个问题,因为它可以在后台加载网站并报告错误(如果有)。
如果该应用在线,请为已知的 URL 打开 HEAD 请求。如果请求有效,则一切就绪。如果失败,则用户可能处于强制门户中。
我们正在将 Cordova 用于混合项目。我们 运行 遇到一个问题,如果 device/app 看到 WiFi 网络,但 WiFi 网络需要身份验证或接受其条款和条件(最常见于咖啡馆、酒店等)。
PhoneGap/Cordova 只看到 WiFi 网络,所以检查网络实际上是不可靠的,因为应用程序正在看到网络,用户只是没有登录才能从应用程序获取远程数据。
有没有人处理过这个或处理过这些类型的情况?您是如何接近或解决解决方案的。有代码片段吗?
我不认为有这方面的插件。
如果依赖特定的后端服务器:
仅仅检查设备是否在线可能不够,因为服务器(无论出于何种原因)可能处于离线状态。
所以我最终得到了一个 RESTful 服务,例如 (node.js/express):
app.get('/', function(req, res) {
res.jsonp({status: 'OK'});
});
这只是 returns "OK" 并在几种情况下检查连接。
如果您只需要知道您是否在线:
在这种情况下,我会检查一些普遍可用的网站,看看是否可以访问。也许 cordova-plugin-inappbrowser 可以帮助解决这个问题,因为它可以在后台加载网站并报告错误(如果有)。
如果该应用在线,请为已知的 URL 打开 HEAD 请求。如果请求有效,则一切就绪。如果失败,则用户可能处于强制门户中。