iOS开发 App内自动连接指定Wi-Fi

目前很多智能设备配置网络的时候都有app内部直连Wi-Fi的功能(iOS11之前需要用户跳到Wi-Fi设置界面去连),iOS11后苹果提供 NEHotspotConfigurationManager 类用于app内直连周边的Wi-Fi;具体步骤:
1、向开发者中心申请使用NEHotspotHelper的权限(理由要充分,详述app使用NEHotspotHelper的理由,一般两周给结果);
2、给App ID的entitlements file配置权限:在这里插入图片描述
3、在Xcode-Build Phases中导入NetworkExtension.framework框架:
在这里插入图片描述
4、在Xcode - Capabilities 中开启Hostpot Configuration:
在这里插入图片描述
5、代码实现:

 //导入头文件
    #if TARGET_IPHONE_SIMULATOR
    #else
    #import <NetworkExtension/NetworkExtension.h>
    #endif
//1、app内直连Wi-Fi:
NEHotspotConfiguration * hotmode = [[NEHotspotConfiguration alloc] initWithSSID:@"wifiSSID" passphrase:@"password" isWEP:NO];
            __weak typeof(self) weakSelf = self;
            [[NEHotspotConfigurationManager sharedManager] applyConfiguration:hotmode completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    if (error.code == NEHotspotConfigurationErrorAlreadyAssociated) {
                        //已连接
                    }
                    else if (error.code == NEHotspotConfigurationErrorUserDenied) {
                        //用户点击取消
                    }
                    else{
                        //注:这个方法存在一个问题,如果你加入一个不存在的WiFi,会弹出无法加入WiFi的弹框,但是本方法的回调error没有值。在这里,我是通过判断当前wifi是否是我要加入的wifi来解决这个问题的
                    }
                }
            }];
//2、获取配置过的WIFI列表:
if (@available(iOS 11.0, *)) {
        [[NEHotspotConfigurationManager sharedManager] getConfiguredSSIDsWithCompletionHandler:^(NSArray * array) {
            
        }];
    }
//3、获取当前手机连接的wifi:
//导入 
#import<SystemConfiguration/CaptiveNetwork.h>
- (NSString *)getWifiName {
    NSArray *ifs = (__bridge id)CNCopySupportedInterfaces();
    id info = nil;
    for (NSString *ifnam in ifs) {
        info = (__bridge id)CNCopyCurrentNetworkInfo((CFStringRef)CFBridgingRetain(ifnam));
        if (info && [info count]) {
            break;
        }
    }
    if ([info isKindOfClass:[NSDictionary class]]) {
        NSString *wifiSsid = [info objectForKey:@"SSID"];
        return wifiSsid;
    }
    return nil;
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值