【问题标题】:How to check if WIFI button is enabled (iOS)如何检查WIFI按钮是否启用(iOS)
【发布时间】:2015-06-25 12:06:05
【问题描述】:

我希望能够检查用户是否连接到 WiFi,但未连接到网络。所以基本上我想检查设备设置页面上WiFi按钮的状态,以检查按钮是启用还是禁用。

目前我可以通过以下方式检查 Wifi 是否已连接到网络或未连接到网络:

BOOL hasWiFiNetwork = NO;
NSArray *interfaces = CFBridgingRelease(CNCopySupportedInterfaces());
for (NSString *interface in interfaces)
{
    NSDictionary *networkInfo = CFBridgingRelease(CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interface)));
    if (networkInfo != NULL)
    {
        hasWiFiNetwork = YES;
        break;
    }
    else
    {
        hasWiFiNetwork = NO;
        break;
    }
}

【问题讨论】:

  • @Dan Reachability 只是和我上面的代码一样,我实际上想在设置页面上检查 Wifi 按钮的状态
  • 好吧,从下面的答案来看,我想不同意你的看法。
  • @Dan 下面的答案没有给我我需要的东西,请再次阅读我的问题。
  • 看看这个:stackoverflow.com/a/25956280/1587449 但我不知道它是否仍然是最新的。

标签: ios objective-c xcode wifi


【解决方案1】:

试试这个代码并使用可达性类。

BOOL isConnectedProperly = ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == ReachableViaWiFi);

【讨论】:

  • 我喜欢这个答案,可达性非常适合这类任务。
  • 这个答案只给出 1 或 0(真或假)的值,这是如果该人连接到 WiFi 网络。
【解决方案2】:

更新

事实证明这是不可能的,没有 API/Framework/BOOL 值可以做到这一点,因为 Apple 没有为开发人员添加任何检查 WiFi 是否打开或关闭的功能.正如这里很好解释的那样:https://stackoverflow.com/a/12906461/4657588


那么这个 SO 帖子应该是你想要的:https://stackoverflow.com/a/7938778/4657588

Reachability *reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];

NetworkStatus status = [reachability currentReachabilityStatus];

if (status == ReachableViaWiFi) {
    // WiFi
}

else {
    // Either WiFi is off or we are not connected to a WiFi network.
}

【讨论】:

  • 我知道这会给你 WiFi 的状态,但是如果你连接到 WiFi 但你没有连接到实际的网络。就像您的家庭网络一样,它不会给您任何回报。因为它只检查您是否连接到网络。
  • @ChrisBeckett 好吧,如果它什么也没回,那么您不能假设用户没有打开 WiFi 或没有连接到网络。对于您想要执行的任何警报或测试,这应该足够了。
  • 好吧,我已经测试过了,WiFi 已打开,但未连接到网络,我无法显示消息,因为我可以检查 iOS 上实际 WiFi 设置的状态 - 我正在尝试为 GPS 定位而执行此操作
  • @ChrisBeckett 我更新了我的答案以向您展示我的意思。代码现在应该或多或少地做你想做的事。
  • 这不能满足我的需要,因为 ReachableViaWiFi 表示它是否连接到 WiFi 网络。我不想检查连接/未连接到 WiFi 网络的状态。在检查与 WiFi 网络有关的任何内容之前,我只想检查是否在设置页面上启用了 iPad 上的 WiFi。
【解决方案3】:

首先你需要从apple developer site下载可达性文件 然后每次你想检查的地方添加这些代码。

-(BOOL)isConnectedTointernet{
BOOL status = NO;
Reachability *reachability = [Reachability reachabilityForInternetConnection];
int networkStatus = reachability.currentReachabilityStatus;
status = (networkStatus != NotReachable)? YES:NO;
return status;}

【讨论】:

  • 我不是要查找用户是连接到网络还是未连接。我只是想在 iPad 上找到实际 WiFi 的状态。因此,如果 WiFi 按钮已启用,则发送消息,如果已禁用,则发送消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 2023-04-07
相关资源
最近更新 更多