美文网首页网络及安全
ios获取wifi信息和配置wifi

ios获取wifi信息和配置wifi

作者: 张威_9cfe | 来源:发表于2019-08-14 18:08 被阅读0次

    iOS App无需跳转系统设置自动连接Wi-Fi:https://juejin.im/post/5c85cf8ee51d453a637c12df

    ios获取wifi列表:https://www.csdn.net/gather_2f/MtjaIg1sODcwNi1ibG9n.html

    IOS支持的编码类型:https://blog.csdn.net/shang1219178163/article/details/48733791/

    获取当前连接的wifi信息的函数(SSID和SSIDDATA)

    + (NSString*)getCurrentWifi

    {

        NSString*wifiName =nil;

        NSData*SSIDDATA =nil; 

        CFArrayRef myArray = CNCopySupportedInterfaces();

        if(myArray !=nil)

        {

            CFDictionaryRef myDict =CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));

            if(myDict !=nil)

            {

                NSDictionary*dict = (NSDictionary*)CFBridgingRelease(myDict);

                wifiName = [dictvalueForKey:@"SSID"];

                SSIDDATA = [dictvalueForKey:@"SSIDDATA"];//SSIDDATA是ssid的二进制数据,有些路由器使用的GBK编码中文显示乱码,需要拿SSIDDATA转码

            }

        }

        if(wifiName !=nil&& SSIDDATA !=nil)

        {

            NSString *UTF8WifiName = [[NSString alloc] initWithData:SSIDDATA encoding:NSUTF8StringEncoding];

            if(UTF8WifiName == nil)//如果SSIDDATA不是UTF-8格式则把GBK转码为UTF-8

            {

                //用GBK解码

                NSStringEncoding gbkEncoding=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

                NSString*GBKWifiName = [[NSStringalloc]initWithData:SSIDDATAencoding:gbkEncoding];

                //转化为UTF-8

                NSCharacterSet*allowedCharacters = [[NSCharacterSetcharacterSetWithCharactersInString:GBKWifiName]invertedSet];

                NSString*encodedUrl = [GBKWifiNamestringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];

                wifiName = [encodedUrlstringByRemovingPercentEncoding];

            }

        }

        returnwifiName;

    }

    相关文章

      网友评论

        本文标题:ios获取wifi信息和配置wifi

        本文链接:https://www.haomeiwen.com/subject/cgunjctx.html