美文网首页
iOS下的WiFi开发

iOS下的WiFi开发

作者: ShineYangGod | 来源:发表于2017-12-15 16:57 被阅读115次

    找资料的时候看到别人写的,记录下,有空自己研究下
     iOS下Wi-Fi开发需要添加依赖库SystemConfiguration.framework,在需要使用Wi-Fi信息的控制器下引入头文件#import <SystemConfiguration/CaptiveNetwork.h>
    1,Wi-Fi热点获取
    +(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

    }
    2,取得本机Wi-Fi的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;
    

    }
    3,获取当前Wi-Fi的名称

    • (void)GetWifiName{

    NSString *wifiName = @"Not Found";

    CFArrayRef myArray = CNCopySupportedInterfaces();

    if (myArray != nil) {

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

    if (myDict != nil) {

    NSDictionary dict = (NSDictionary)CFBridgingRelease(myDict);

    wifiName = [dict valueForKey:@"SSID"];

    }

    NSLog(@"wifiName:%@", wifiName);

    }
     注意:需要真机才能测试!模拟器下返回空。

    4,打开系统设置

    从应用跳到系统设置里的WiFi界面有这个需求存在吗?答案是肯定的。

    在没有网的状态下,你可能想提醒用户去设置界面连接WiFi。如果不能跳到WiFi界面,只能在APP里面做出文字提示。这样很多小白用户可能不会看提示,只会觉得APP没有做好。
    +(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]];
    }
    

    }
    UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root=WIFI")!)
    原文链接地址:http://www.cnblogs.com/xjf125/p/5360550.html

    相关文章

      网友评论

          本文标题:iOS下的WiFi开发

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