iOS--开发技巧i0SiOS Wi-Fi

iOS Wifi编程要点总结

2016-03-13  本文已影响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;
}

上一篇下一篇

猜你喜欢

热点阅读