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;
}

相关文章

  • iOS客户端 获取WIFI ssid等信息资料

    iOS Wifi编程要点总结-获取WIFI名和IP iOS客户端公共WIFI解决方案 iOS开发中WiFi相关功能...

  • iOS Wifi编程要点总结

    一.Wifi热点取得 头文件 #import 引入框架 SystemConfiguration.framework...

  • iOS 图形编程总结

    iOS 图形编程总结 iOS 图形编程总结

  • WiFi

    iOS开发中WiFi相关功能总结 iOS 获取系统wifi列表,wifi信号强度,并给wifi设置密码,标签(副标...

  • iOS13适配

    参考: iOS13 适配踩坑 - 持续更新 iOS 13 适配要点总结 iOS 13 适配要点总结 1、prese...

  • iOS 13 适配要点总结(转)

    转自: iOS 13 适配要点总结 iOS 13适配

  • WiFi直连总结

    WiFi直连iOS端总结 整体流程 功能概述:客户端通过引导用户输入家庭WiFi名称以及密码,将WiFi信息发送给...

  • 线程

    iOS 多线程:『GCD』详尽总结 NSThread详解 IOS 多线程编程 『NSOperation、NSOpe...

  • shell编程要点总结

    统计文件列数:awk -F '列分隔符' '{print NF}' file | head -n1 查看文件最后一...

  • iOS之WiFi IP相关

    Questions在[iOS实现WIFI传书]中有一个获取IP的步骤在此顺带总结一份关于WIFI与IP的常用内容设...

网友评论

  • 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