iphone - 专属网络使用

标签 iphone objective-c ios wifi

我正在研究以找到为 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" ]);

最佳答案

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

通常,当您连接到这样的网络时,IOS 设置应用程序会弹出一个网页表单来完成登录。 CN API 的目的是让您的应用程序进行身份验证,而不是放置 Web 表单。

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

另请注意,IOS 不会在网络连接时启动您的应用:此 API 仅在您的应用已在运行时才有效。

关于iphone - 专属网络使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195957/

相关文章:

ios - Swift Avplayer - 当点击 'Play' 时,停止所有其他 tableviewcells 播放

ios - UIScrollView 在 setContentSize 后滚动

iphone - 获取地址簿数据,它的代码在模拟器上运行但没有运行 iPhone 设备。

ios - 如何使用 prepareforsegueue 中的自定义 setter 方法

ios - 在 iOS 中使用选项卡更改容器 View 内容

ios - 如何通过 iOS 中的 objective-c 停止函数递归(在 collectionView 中)

ios - Monocross是否已准备好在iOS设备上进行专业使用?

objective-c - 自动旋转 iOS 8 导航 Controller

ios - 标签栏图标显示不正确

iphone - 使用 CoreData 创建静态库时出现问题 - 无法使用 nil 模型创建 NSPersistentStoreCoordinator