强制网络使用

Gre*_*ice 9 iphone objective-c wifi ios

我正在研究找到使用iOS专属网络的最佳方法.看来这样做,如果我错了就纠正我,允许用户输入不同的ssid和密码,当网络可用时,可以用于自动登录.如果是这样,那么完成以下操作的最佳方法是什么,从用户读取ssid和密码并将他连接到该wifi网络,或者甚至是可能的.

到目前为止,我所做的就是用这个来拉出当前连接的网络:

NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
id info = nil;

for (NSString *ifnam in ifs) {

    NSLog(@"ifnam = %@", ifnam);

    info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge_retained CFStringRef)ifnam);

    if (info && [info count]) {
        break;
    }
}

NSLog (@"SSID: %@", [ info objectForKey"@"SSID" ]);
Run Code Online (Sandbox Code Playgroud)

Bry*_*yan 13

"强制网络"就像您在酒店或星巴克中找到的那样,WiFi连接已打开,但您需要通过登录或"我接受条件"页面才能连接到任何网站.

通常,当您连接到这样的网络时,IOS设置应用程序将建立一个Web表单来完成登录.CN API的目的是允许您的应用进行身份验证,而不是使用Web表单.

您的问题询问是否从用户那里读取SSID:这似乎不太有用,因为"设置"应用已允许用户指定任意SSID,然后使用密码登录.只有当您的应用确切知道如何登录网络时,Captive Network API才有用,在这种情况下,它也可以知道SSID.您可以使用常用的NSTextField从用户那里获取密码.

另请注意,只要网络连接,IOS就无法启动您的应用:此API仅在您的应用已在运行时才有效.