Cordova插件检测互联网连接

时间:2014-09-05 12:11:57

标签: android angularjs cordova

我的cordova应用程序需要互联网连接才能执行某些操作。 我正在使用https://github.com/apache/cordova-plugin-network-information在应用上线或离线时获取活动。 它适用于移动数据,但对于Wifi,它有点奇怪。 无论我的wifi是否连接到互联网,都会报告我在两种情况下都在线。

我期待的行为是说我只有当wifi连接到互联网时才在线。 我正在运行离子框架,angularjs,cordova 3.5.1,并使用Android,Galaxy S3进行测试。

1 个答案:

答案 0 :(得分:6)

插件不会检测用户是否可以访问Internet,但仅限用户在网络上。由于您的手机在WiFi网络上,即使WiFi网络无法访问互联网,该插件仍按设计执行。

为了测试连接性,您必须始终尝试请求 - 这是真正了解设备是否具有Internet访问权限的唯一方法。因此,如果您尝试访问www.google.com,则必须尝试请求并处理导致的任何错误。拥有网络插件的唯一好处是,您可以获得更多关于是否值得尝试请求的信息 - 如果设备未连接到任何网络,您知道几乎没有有利于尝试请求。

  

如果没有路线,您的请求几乎会立即失败。如果还有其他问题,您的请求可能会超时。在长时间请求的情况下,请务必向用户说明一些进展,因为超时可能需要几秒钟(或几分钟)才会发生。

如果您的应用需要定位特定主机,那么这些主机将与您用于验证连接的主机相同。如果您的应用面向通用主机(或用户输入的主机),请使用特定主机进行测试以测试连接。

  • 不要认为因为设备可以到达一个主机,这意味着它可以到达另一个主机 - 某些网络可能会阻止某些主机,同时允许访问其他主机。
  • 请勿使用不属于实际请求的主机进行测试,特别是如果它是您无法控制的主机。也就是说,如果您想测试用户是否可以访问www.example.com,请不要ping www.google.com。您的尝试可能被视为恶意攻击,特别是如果您的应用程序变得流行。

另一个提示:

  

请检查网络类型以确定是否需要限制数据(在蜂窝网络的情况下)    但不要认为网络类型可以用来指示数据传输速度 - 仅仅因为你在4G网络上并不意味着你将保证快速的数据传输。当然,这同样适用于WiFi。