iOS Wifi编程要点总结

作者: 蓝点工坊 | 来源:发表于2016-03-13 20:55 被阅读1336次

    一.Wifi热点取得

    头文件

    #import <SystemConfiguration/CaptiveNetwork.h>

    引入框架

    SystemConfiguration.framework

    代码段

    +(NSString *) currentWifiSSID
    {
    #if TARGET_OS_SIMULATOR
        return @"(simulator)";
    #else
        NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
        
        id info = nil;
        for (NSString *ifnam in ifs) {
            info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
            if (info && [info count]) {
                break;
            }
        }
        NSDictionary *dctySSID = (NSDictionary *)info;
        NSString *ssid = [dctySSID objectForKey:@"SSID"] ;
        
        return ssid;
    #endif
    }
    

    二.打开系统设置

    早期版本能直接跳入某项具体设置,后来iOS取消这个功能,现在iOS8下能,直接跳入系统设置总入口.

    +(void)openSystemSetting:(NSString *)settingName{
        //iOS8 才有效
        float version = [[[UIDevice currentDevice] systemVersion] floatValue];
        
    #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_8_0
    #define SETTING_URL @"app-settings:"
    #else
    #define SETTING_URL   UIApplicationOpenSettingsURLString
    #endif
        
        //  NSLog(UIApplicationOpenSettingsURLString);
        if (version >= 8.0){
            [[UIApplication sharedApplication] openURL:
             [NSURL URLWithString:SETTING_URL]];
        }
    }
    
    

    三.取得本机Wifi IP地址

    #include <arpa/inet.h>
    #include <netdb.h>
    #include <net/if.h>
    #include <ifaddrs.h>
    #import <dlfcn.h>
    
    +(NSString *) localWiFiIPAddress
    {
        BOOL success;
        struct ifaddrs * addrs;
        const struct ifaddrs * cursor;
        
        success = getifaddrs(&addrs) == 0;
        if (success) {
            cursor = addrs;
            while (cursor != NULL) {
                // the second test keeps from picking up the loopback address
                if (cursor->ifa_addr->sa_family == AF_INET && (cursor->ifa_flags & IFF_LOOPBACK) == 0)
                {
                    NSString *name = [NSString stringWithUTF8String:cursor->ifa_name];
                    if ([name isEqualToString:@"en0"])  // Wi-Fi adapter
                        return [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)];
                }
                cursor = cursor->ifa_next;
            }
            freeifaddrs(addrs);
        }
        return nil;
    }
    
    

    相关文章

      网友评论

      • sun_dev:朋友你好,有个Wi-Fi方面的问题咨询一下,

        腾讯的wifi管家,双击home键干掉应用进程后,切换Wi-Fi它还可以检测到wifi变化,Wi-Fi能否上网,发送通知。

        这是如何实现的?
        蓝点工坊:@sun_dev 应用用 网络辅助接口
      • 哎呦我去叫什么呢:这样是获取了手机当前的WiFi,怎么获取附近全部的WiFi啊
        凯文Kevin21:@哎呦我去叫什么呢 楼主,这个问题解决了没。 苹果不支持获取wifi列表,不过市面上的app确实是做到了,应该也不是使用的私有方法,不然上架会被拒的。。
      • 188baaafd568:我这边想抓去用户wifi密码可以吗?
      • 码畜中的渣渣:您好,我们现在要做智能设备,需要通过设备上的wifi实现与设备的交互,这样要怎么实现呢?
        蓝点工坊:@fukang 问一下Wifi模块的FAE,它们会提供一些封装的库给App,让它能与设备通讯
        叶舞清风:@fukang 应该可以

      本文标题:iOS Wifi编程要点总结

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