判断iPhone的WiFi是否打开的两种方法

判断WiFi是否连接可以使用Reachability进行判断,那么WiFi是否打开应该怎么判断呢?

下面是两种完全基于不同思路的方法:

方法一:

使用SystemConfiguration.framework 库进行判断

#import <ifaddrs.h>
#import <net/if.h>
#import <SystemConfiguration/CaptiveNetwork.h>
- (BOOL) isWiFiEnabled {
NSCountedSet * cset = [NSCountedSet new];
struct ifaddrs *interfaces;
if( ! getifaddrs(&interfaces) ) {
for( struct ifaddrs *interface = interfaces; interface; interface = interface->ifa_next)
{
if ( (interface->ifa_flags & IFF_UP) == IFF_UP ) {
[cset addObject:[NSString stringWithUTF8String:interface->ifa_name]];
}
}
}
return [cset countForObject:@"awdl0"] > 1 ? YES : NO;
}

方法二:

使用KVC对StatusBar进行判断

- (BOOL)isWiFiConnected {
UIApplication *app = [UIApplication sharedApplication];
NSArray *children = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
//获得到网络返回码
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
int netType = [[child valueForKeyPath:@"dataNetworkType"] intValue];
NSLog(@"type:%@",@(netType));
if (netType == 1) {
NSLog(@"2G");
return NO;
}
else if (netType == 2) {
NSLog(@"3G");
return NO;
}
else if (netType == 3) {
NSLog(@"4G");
return NO;
}
else if (netType == 5){
NSLog(@"Wifi");
return YES;
}
// 1,2,3,5 分别对应的网络状态是2G、3G、4G及WIFI。(需要判断当前网络类型写个switch 判断就OK)
}
}
NSLog(@"not open network or no net work");
return NO;
}

实际上,方法二也是对网络连接状态的判断,不能判断WiFi是否打开。不同的网络连接状态下,StatusBar展示不同的图标,当WiFi打开而没连接时,方法二得到的结果依然会是NO。

以上所述是小编给大家介绍的判断iPhone的WiFi是否打开的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • android编程实现设置、打开wifi热点共享供他人连接的方法

    本文实例讲述了android编程实现设置.打开wifi热点共享供他人连接的方法.分享给大家供大家参考,具体如下: 用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi热点,然后另一台便连接这个热点再进行传输.快牙传输速度惊人应该跟它的这种机制有关系吧.不知道它的搜索机制是怎样的,但我想应该可以通过热点的名字来进行判断吧.下面我们就来探讨一下如何自动创建一个wifi热点吧 创建wifi热点首先需要手机支持,建议开发的哥们整个好点的手机,我们公司那些个山寨设备,几近有一半是不支持热

  • 判断iPhone的WiFi是否打开的两种方法

    判断WiFi是否连接可以使用Reachability进行判断,那么WiFi是否打开应该怎么判断呢? 下面是两种完全基于不同思路的方法: 方法一: 使用SystemConfiguration.framework 库进行判断 #import <ifaddrs.h> #import <net/if.h> #import <SystemConfiguration/CaptiveNetwork.h> - (BOOL) isWiFiEnabled { NSCountedSet *

  • 使用JavaScript判断用户输入的是否为正整数(两种方法)

    在项目开发中,需要使用JavaScript验证用户输入的是否为正整数. 方法一: var type="^[0-9]*[1-9][0-9]*$"; var r=new RegExp(type); var flag=r.test(subjectHour.value); if(!flag){ alert("课时应为正整数"); subjectHour.focus(); return false; } 方法二: var type="^[0-9]*[1-9][0-9

  • vbs打开ie两种方法 在VBScript中启动IE浏览器的实现代码

    第一种方法 InternetExplorer.Application 复制代码 代码如下: StartURL = "www.jb51.net" set IE = CreateObject("InternetExplorer.Application") IE.Visible = true IE.Navigate StartURL 第二种方法 WScript.Shell 复制代码 代码如下: dim Wsh Set Wsh=WScript.CreateObject(&q

  • unity 如何判断鼠标是否在哪个UI上(两种方法)

    第一种 可以得到UI,再根据名字判断是不是自己自己要点击的UI 其中参数canvas拖入此UI的canvas /// <summary> /// 获取鼠标停留处UI /// </summary> /// <param name="canvas"></param> /// <returns></returns> public GameObject GetOverUI(GameObject canvas) { Poin

  • PHP代码判断设备是手机还是平板电脑(两种方法)

    现在移动互联网越来越发达,很多的网站都普及了手机端浏览,为了更好的让网页在手机端显示,我们都选择了使用CSS媒体查询制作响应式模版,但这也有弊端,例如某些网站的结构是CMS类型的,太多的内容要显示,而使用CSS媒体查询设计响应式,只会隐藏但还是加载了,为了让手机端更快速的显示出内容,我们可以使用这个PHP判断手机设备代码,使用这个代码可以很方便的显示或不显示自定义的内容. 在做WEB开发的时候经常会需要用到对移动设备的页面匹配,当然可以直接把网站做成响应式的,但如果不想这么做的话,可以使用PHP

  • js中判断文本框是否为空的两种方法

    复制代码 代码如下: //用户名非空验证 function checkUserName(){ var name = document.myform.txtUser; //在这里我认为: name 代表的name 为 txtUser 的文本框 if(name.value.length==0){ alert("请输入用户名"); name.focus(); return false; }else{return true;} } //密码非空验证+确认验证 function checkPas

  • 通过JS和PHP两种方法判断用户请求时使用的浏览器类型

    在进行微信公众账号开发的时候,其中很大一块是微站点的开发,我们需要知道当前的浏览器是微信内置的浏览器,那么如何判断呢? 微信内置浏览器的 User Agent 如何判断微信内置浏览器,首先需要获取微信内置浏览器的User Agent,经过在 iPhone 上微信的浏览器的检测,它的 User Agent 是: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko)

  • C# 打开蓝牙设置界面的两种方法

    蓝牙设置相关界面,以下是通过C#方式打开的几个方式,记录一下 蓝牙设置界面 1.控制面板命令bthprops.cpl 可以用控制面板 control+bthprops.cpl,也可以直接bthprops.cpl.更多的命令见:所有运行命令指令大全.CMD & CPL:快捷系统命令和控制面板命令 bthprops.cpl,可以打开蓝牙的连接设置界面 //打开蓝牙设置 var process = new Process {StartInfo = {FileName = "control&qu

  • selenium判断元素是否存在的两种方法小结

    在selenium中没有对应的方法,需要自己去写. 元素存在,但不唯一,操作元素会报错 元素不存在,操作元素也会报错 第一种:捕获异常 弊端:只要页面上有元素,不几个,都返回True from selenium import webdriver import unittest class Test1(unittest.TestCase): # 一.准备浏览器驱动.网站地址 # setUp在每个测试函数运行前运行,注意大小写:self不能省略 def setUp(self): self.drive

  • PHP判断字符串长度的两种方法很实用

    php程序中字符串长度判断,可以使用strlen. 方法一: $str = 'aaaaaa'; if(strlen($str) > 6){ echo "字符串大于6"; } 方法二: if(isset($str{6}){ } 以上两种方法,第二种效率更高些. 在PHP中,所有的变量都是用一个结构-zval来保存的,strlen虽然是直接获取其中的len,但是仍然有一次函数调用,而isset是PHP的语法结构,所以更快!所以在判断字符串是否大于或小于多少个字符时可以使用第二种方法.

随机推荐