王瑞彬 發表於 2020-12-8 16:20:00

iOS 开发,判断手机WiFi是否打开及获取WiFi名称

<p><strong>作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:812157648,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!</strong></p>
<h3 id="判断手机wifi是否打开">判断手机WiFi是否打开</h3>
<pre><code>- (BOOL)isWiFiEnabled {
    NSCountedSet * cset = ;
    struct ifaddrs *interfaces;
    if(!getifaddrs(&amp;interfaces)){
      for( struct ifaddrs *interface = interfaces; interface; interface = interface-&gt;ifa_next) {
            if ( (interface-&gt;ifa_flags &amp; IFF_UP) == IFF_UP ) {
                ];
            }
      }
    }
    return &gt; 1 ? YES : NO;
}
</code></pre>
<h3 id="获取wifi名称">获取WiFi名称</h3>
<pre><code>- (NSString *)getWiFiName {
    if (@available(iOS 13.0, *)) {
      //用户明确拒绝,可以弹窗提示用户到设置中手动打开权限
      if ( == kCLAuthorizationStatusDenied) {
            NSLog(@"User has explicitly denied authorization for this application, or location services are disabled in Settings.");
            //使用下面接口可以打开当前应用的设置页面
            //[ openURL:];
            return nil;
      }
      CLLocationManager* cllocation = [ init];
      if(! || == kCLAuthorizationStatusNotDetermined){
            //弹框提示用户是否开启位置权限
            ;
            usleep(50);
            //递归等待用户选选择
            //return ;
      }
    }
    NSString *wifiName = nil;
    CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();
    if (!wifiInterfaces) {
      return nil;
    }
    NSArray *interfaces = (__bridge NSArray *)wifiInterfaces;
    for (NSString *interfaceName in interfaces) {
      CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));

      if (dictRef) {
            NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;
            NSLog(@"network info -&gt; %@", networkInfo);
            wifiName = ;
            CFRelease(dictRef);
      }
    }

    CFRelease(wifiInterfaces);
    return wifiName;
}
</code></pre>
<h5 id="注意">注意</h5>
<h6 id="需要引入的头文件">需要引入的头文件</h6>
<pre><code>#import &lt;ifaddrs.h&gt;
#import &lt;net/if.h&gt;
#import &lt;SystemConfiguration/CaptiveNetwork.h&gt;
</code></pre>
<h6 id="infoplist-文件需要配置获取的权限">info.plist 文件需要配置获取的权限</h6>
<pre><code>Privacy - Location Always Usage Description
Privacy - Location When In Use Usage Description
</code></pre>
<p>iOS 13 以后<br>
获取WiFi名称,必须要先允许获取定位信息</p>
<p>原文作者:深海谢先生</p>
<p>原文地址:https://blog.csdn.net/m0_50752541/article/details/110481171?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160741070019215668868668%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&amp;request_id=160741070019215668868668&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2<sub>all</sub>first_rank_v2~rank_v29-6-110481171.pc_search_result_cache&amp;utm_term=iOS%E5%BC%80%E5%8F%91</p><br><br>
来源:https://www.cnblogs.com/fadaijun/p/14103303.html
頁: [1]
查看完整版本: iOS 开发,判断手机WiFi是否打开及获取WiFi名称