首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在因特网上使用Reachability *或*本地WiFi?

在因特网上使用Reachability *或*本地WiFi?
EN

Stack Overflow用户
提问于 2010-04-15 18:11:07
回答 4查看 12.2K关注 0票数 11

我已经搜索了这个问题的答案,但它并没有得到真正的解决,至少没有达到我能让它发挥作用的程度。

我最初只检查Internet的可达性,使用:

代码语言:javascript
复制
self.wwanReach = [Reachability reachabilityWithHostName:@"www.apple.com"];
[wwanReach startNotifer];

现在我需要支持本地的WiFi连接(在一般情况下无法访问互联网),当我找到+reachabilityForLocalWiFi时,我还注意到有+reachabilityForInternetConnection。我想我可以使用这些,而不是硬编码的"www.apple.com",但唉,当我使用:

代码语言:javascript
复制
self.wwanReach = [Reachability reachabilityForInternetConnection];
[wwanReach startNotifer];
self.wifiReach = [Reachability reachabilityForLocalWiFi];
[wifiReach startNotifer];

我设置为“从不”的可达回调将被调用,其值为“从不”,最多可达10、12、15分钟左右(只要我的耐心持续多久)。(我敢肯定,用户的耐心会大大降低。)切换回+reachabilityWithHostName:在几秒钟内工作。我还分别尝试了每个“对”,以防两个通知程序同时出现问题,但这并没有什么区别。

因此:确定到因特网/WWAN或本地Wifi网络(一个或两者)的可达性的适当方法是什么?

这个特殊的用例是连接到Mac微型计算机到计算机网络的iPhone或iPad;我相信其他情况也适用。

EN

回答 4

Stack Overflow用户

发布于 2010-11-15 16:30:42

使用此函数检查wifi是否打开。

代码语言:javascript
复制
- (BOOL)isWifiOn {
    Reachability* wifiReach = [Reachability reachabilityForLocalWiFi];

    NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
    return (netStatus==ReachableViaWiFi);
}

类似的代码可以用于检查reachabilityForInternetConnection,但您必须检查

代码语言:javascript
复制
(netStatus==ReachableViaWiFi)

如果你关心的是无线网络

代码语言:javascript
复制
(netStatus==ReachableViaWWAN)

如果你在乎它已经过去了

票数 21
EN

Stack Overflow用户

发布于 2012-02-20 08:37:23

我也遇到了同样的问题。最后我发现,对于WWAN或WiFi可达性,只有在发生网络更改时才会调用通知回调。

换句话说,在创建可达对象后立即检查当前可达性。不要等待通知,因为只有在下一次网络更改发生时才会发布通知。

互联网/广域网:

代码语言:javascript
复制
self.wwanReach = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [wwanReach currentReachabilityStatus];
if (networkStatus == ReachableViaWWAN) {
    // do something
}

对于WiFi:

代码语言:javascript
复制
self.wifiReach = [Reachability reachabilityForLocalWiFi];
NetworkStatus networkStatus = [wifiReach currentReachabilityStatus];
if (networkStatus == ReachableViaWiFi) {
    // do something
}
票数 7
EN

Stack Overflow用户

发布于 2011-09-30 02:06:59

来自apple的可达性示例向您展示了如何使用通知,这是一种事件推送模型,被认为是有效的,但我发现通知并不总是对我有效。有时他们不会开火,有时他们会提供错误的信息。所以我用了2秒的重复计时器来进行轮询,然后用上面的一个described by stinkbutt程序来检查wifi。这是一个good reference for timer implementation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2647855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档