我正在开发一个iPhone应用程序,每当我打电话给我的Web服务我想确保用户连接到互联网。iOS可访问性说在3g没有互联网连接可到达
我使用了Tony Million在github上提供的Reachability类,链接是她想要抓住它的人。 https://github.com/tonymillion/Reachability
的我只是跟着例子,设置好一切,并有下面的代码
Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability*reach)
{
// call web service here
};
reach.unreachableBlock = ^(Reachability*reach)
{
// alert user not reachable
};
[reach startNotifier];
现在我测试这个在模拟器,一切工作完全正常,当连接到WiFi我的服务被称为。如果我关闭无线网络,我会看到显示的警报正是我所需要的。
现在我在设备上测试这个并获得相当不错的结果,但不完全是我所需要的。请注意,我的手机没有数据包,这一点很重要。
因此,这里有我的手机连接到WiFi和运行应用程序的情况下的
- ,完美,调用到Web服务进行。这里没什么可担心的。
- 我断开我的手机从WiFi并再次运行应用程序,我期望警报来告诉我,它没有连接,但然后我看到在我的应用程序旋转的UI活动指示器,这意味着该应用程序检测到连接某种形式,并试图连接到我的网络服务。但是这绝不会发生,我知道当我进入settings-> general-> usage-> cellular usage时,它正在检测蜂窝3G,并将统计重置为0.一段时间后,我可以看到数据正在发送和接收。
- 我转到settings-> general-> cellular->关闭3g,运行该应用程序,现在它显示没有连接的警报。
我知道很多人都有数据包,并且还我已经看到应用程序打市场与我所提到的可达性的水平,我只是觉得这可能在我刚才解释的情况得到改善。
我有一个3G连接,但我不知道
[Reachability reachabilityWithHostname:@"www.google.com"];
如何被ping通,或许它不是?
虽然我做了我的开关关闭的wifi,打开Safari浏览器,它的工作方式,充分显示了其装载了好一阵子,然后只是说,Safari浏览器无法打开......
这只是一些无法完成?
最后,我甚至在github页面上看到了Tony Million提供的示例,在我的手机上运行时,尽管无线网关闭,但我没有数据包,但它显示可达。
我看了一些关于流量回答的堆栈,用户询问了有关互联网连接的问题,但大多数答案都是围绕“类型”wifi,wwan等旋转,而不是检测它是否是有效的Internet连接而不是连接到一个网络。
谢谢你的时间。
必须有一些与你没有一个数据计划......您是否尝试过在手机上有一个数据计划,并打开飞行模式,并尝试连接?然后会发生什么? –
现在,如果我打开飞行模式,它会说没有连接。没事儿。但是我说的是没有在世界这个地方并不罕见的数据。 当用户没有连接时,它不会是好的体验,它表明只有当他们没有加载5分钟后,他们才会加载失望。 我不知道3g和运营商是如何工作的,也许运营商只是限制了一个不购买数据计划的人的带宽量,因此一个连接被检测到足以ping通谷歌,但还不足以做其他任何事情? –
@ShawnFrank你找到了你的问题的答案? –