iOS应用内获取WiFi SSID

iOS如何在应用中连接WIFI

1、打开Hotspot Configuration权限。
2、在info.plist中添加"Required background modes",在item0赋值为"network-authentication"。注意,当添加完成后,App会打开"Background Modes"能力。
3、导入头文件"#import "。
4、通过代码连接指定SSID的WIFI。

NEHotspotConfiguration* config = [[NEHotspotConfiguration alloc] initWithSSID:@"WIFI SSID" passphrase:@"WIFI 密码" isWEP:NO];
    
    NEHotspotConfigurationManager* manager = [NEHotspotConfigurationManager sharedManager];
    [manager applyConfiguration:config completionHandler:^(NSError * _Nullable error) {
        NSLog(@"%@",error);
    }];

如何在应用中获取已经连接的WIFI SSID

1、iOS14以上版本,获取当前系统已经连接的WiFi SSID可通过以下方法

NEHotspotConfigurationManager* manager = [NEHotspotConfigurationManager sharedManager];
[NEHotspotNetwork fetchCurrentWithCompletionHandler:^(NEHotspotNetwork * _Nullable currentNetwork) {
    NSLog(@"current :%@", currentNetwork.SSID);
    //打印结果:current :UKeeper-5G
}];

iOS14以下,可以使用以下方式获取当前连接的WiFi SSID

+ (NSString*)wifSsid{
    NSArray *interfaces = (__bridge_transfer NSArray*)CNCopySupportedInterfaces();
    NSDictionary *info = nil;
    for (NSString *ifname in interfaces) {
        info = (__bridge_transfer NSDictionary*)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);
        if (info && [info count]) {
            break;
        }
        info = nil;
    }
    
    NSString *ssid = nil;
    
    if ( info ){
        ssid = [info objectForKey:@"SSID"];
    }
    info = nil;
    return ssid? ssid:@"";
}

2、由于iOS12对获取WiFi做了限制,App需要打开”Access WiFi Infomation“权限后才能获取已经连接的WiFi SSID。注意:该权限只有付费帐号才能打开。
3、iOS13系统对WiFi SSID获取又进行了限制,需要开启定位服务后才能获取已经连接的WiFi SSID。打开定位权限如下:

NSLocationAlwaysUsageDescription

NSLocationAlwaysAndWhenInUseUsageDescription

NSLocationUsageDescription

NSLocationWhenInUseUsageDescription

4、iOS14系统及以上,需要开启精准定位服务后才能获取已经连接的WiFi SSID。获取精准定位的方法如下:

self.manager = [[CLLocationManager alloc] init];
BOOL isFullAccuracy = (self.manager.accuracyAuthorization == CLAccuracyAuthorizationFullAccuracy);
if(!isFullAccuracy){
    [self.manager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"WantsToGetWiFiSSID"];
}

你可能感兴趣的:(iOS应用内获取WiFi SSID)