2013-04-22 276 views
3

我想找出一种方法来做一个AIR for iOS应用程序的互联网连接检查。在此之前,我使用了一个URLMonitor(针对我的判断),每30秒检查一次Google。我不喜欢把这个负载放到谷歌上,他们也没有;今天早上,我们的网络被简单地从测试应用程序中标记为可能的DDoS攻击者。所以我不得不禁用这种类型的检查并继续前进。检测互联网连接

我曾考虑过使用Adobe的NetworkInfo ANE,但这在确定互联网连接方面存在其自身问题。我能想到的唯一方法是检查接口“en0”和“pdpxx”(分别对应于WiFi和Cellular接口)并检查它们的IP以确保它们不在192.168.xx,10.10.xx中,或127.0.xx范围。但是,我不完全确定这些是唯一的静态路由器/本地主机IP,并且总有可能网络接口名称将在未来发生变化,这将导致此显示器无用。 IPv6的问题也可能引发这种方法的问题。

是否有另一种方法来检查用户是否连接到互联网?我搜索了多次,似乎这是唯一的两种方法来检查。如果是这样的话,最好的检查方法是什么?

+0

一个简单的方法是轮询实际的服务器。当轮询请求失败时,请设置一个标志来指示用户处于脱机状态。脱机时,使用缓存数据**和**以较低的频率(即:每隔30秒)轮询服务器。当轮询请求成功时,您可以以更快的频率恢复轮询并使用实时数据。 – 2013-04-28 18:46:52

回答

0

我很惊讶你被标记为DDoS攻击者,你确定发生了什么?

在任何情况下,如果您不喜欢将负载放到其他人的服务器上,那么创建您自己的服务器,只需使用URLMonitor的基本设置即可。你不必在URLMonitor中使用谷歌的URL,你可以传递给它另一个URLRequest,它可以指向你自己的服务器。

monitor = new URLMonitor(new URLRequest("http://www.you-own-server.com")); 

如果您决定要在应用程序和服务器之间传递更多数据,这可能也很有用。这是你的服务器,所以可以做你想要的。

我不认为有任何其他方式来检查用户是否连接到互联网。说实话,我不明白为什么会有。检查用户界面/ wan0等......可能会是可能的,但你需要另一个程序,可能是一个简单的python或C++程序,Air可以用它来检查这些事情,但这听起来很漫长。

+0

这不是一个选项。客户预计该应用的80k活跃用户。他们没有处理这种负载的基础设施。我们正在使用他们的服务器进行各种数据轮询,但是在我们进行轮询之前我们需要知道是否应该使用缓存数据或轮询服务器,并且他们无法每隔30秒处理如此多的页面点击次数。 – 2013-04-22 21:31:05

+0

是的,我可以使用接口(通过Adobe构建的本地扩展)。但正如我在我的问题中所描述的那样,存在灵活性问题。不过,这可能是最好的选择。我做了一些挖掘我们的路由器,并确认唯一主要的Google ping是来自我的测试设备,所以它肯定让我们被标记。 – 2013-04-22 21:32:05

+0

我明白了。我不认为客户可以期望拥有8万用户,而不需要拥有某种基础设施。不幸的是,作为开发者,你处于一个尴尬的境地。你的网络被暂停或任何事情?它可能是一些来自ISP的自动响应或其他?请记住,几乎所有使用过URLMonitor的人都在使用google作为测试。它当然可以处理另一个80k用户ping它的服务器,所以如果客户端不愿意实现他们自己的服务器,我只会咬紧牙关并使用Google服务器。 – 2013-04-22 21:48:42