iOS WiFi网络切换

Posted

技术标签:

【中文标题】iOS WiFi网络切换【英文标题】:iOS WiFi network switching 【发布时间】:2011-10-22 19:17:16 【问题描述】:

我的公司正在开发一种 iPhone 配件,该配件需要相对较高的手机连接率。由于 MFi 限制(HOST 模式下的 USB 2 通信仅约 100KBps),我们正在考虑在我们的配件上托管一个 WiFi ad-hoc 网络,并使用 iPhone 的 WiFi 连接到该网络。

这在很多方面都非常有效,只是我们似乎无法找到(Apple 认可的)以编程方式切换 iPhone 的 WiFi 连接的方法。理想情况下,应用会在可见时自动连接到配件的网络,然后在不可见/不需要时重新连接到用户的首选网络。

我们知道 MobileWiFi 框架符合技术要求,但不会通过 Apple 的审批流程。

任何人都可以提出实现我们目标的方法吗?或许有一个系统模型视图可以调用,让用户无需直接使用私有 API 就可以切换 WiFi 网络?

欢迎创造性的解决方案!

【问题讨论】:

您是否进行过任何测试,证明您在使用带有 MFi 的 USB 主机模式时只能获得 100KBps。我遇到了类似的问题,但听说您可以获得 ~500KBps(仅限轶事证据) 【参考方案1】:

不想说,真的没办法。我可以想到两个简单的解决方法。

1. 使其在 Cydia 上可用于越狱设备。 AirServer 刚刚做到了。

2. 不太优雅,使用UIAlertView 切换到设置应用程序的 wifi 窗格,当外围设备连接和断开时显示该窗格。很像location settings prompt。

3.制作安卓应用!

苹果,你真是个麻烦。

【讨论】:

感谢您的回复。选项#2 是我们考虑过的。有没有办法专门直接切换到设置应用的 WiFi 设置部分? 恐怕答案是否定的。 ios 5.0 开始,您可以使用以下命令自动导航到 WIFI 设置:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]]; (除 WIFI 外,还有许多其他首选项可用)。 我知道这个问题/答案很旧,但是为了其他人像我一样搜索这个,iOS 8 及更高版本的 URL 似乎已更改。现在您将使用UIApplication.sharedApplication().openURL(string: UIApplicationOpenSettingsURLString);。您似乎无法再直接进入特定设置页面。【参考方案2】:

很抱歉成为坏消息的承担者,但肯定的答案是否定的。您的方法的主要问题甚至不是 Apple 的批准流程,而是连接到您的设备时无法访问 Internet。 iPhone 甚至在连接到 wifi 时都不会尝试使用蜂窝数据,无论该 wifi 是否连接到互联网。

您可以提交bug report 请求这些功能并祈祷 Apple 听到您的声音,在这种情况下这可能永远不会发生。

我建议使用蓝牙,但如果 USB 速度对你来说不够快,那也不是一个选择。

这几乎让你回到原点并使用 USB。或通过 Cydia 分发您的应用。

【讨论】:

感谢您的回答,菲切克。太糟糕了,Apple 至少不允许为此提供系统对话框。 - 但仅供参考,我们在“死”(无外部访问)WiFi 网络上进行了一些关于蜂窝连接的测试,它工作得很好! // 你有没有关于蓝牙传输率的真实数据?谢谢! 真的吗?我从来没有对它进行过彻底的测试,但是每当我的adsl死机时(过去常常非常发生这种情况),我无法访问任何东西,直到我终止wifi或adsl重新启动。抱歉,我不能提供更多帮助。 我也听说过,但在我的测试中效果很好! (将 iPhone WiFi 连接到非路由的 Ad-Hoc WiFi 网络——3G 工作正常!)我将不得不再试一次。那肯定会破坏交易。 它可能只是在 wifi 连接中断时不会自动切换回蜂窝网络,但如果一开始就没有连接,它会保持在蜂窝网络。 其实我相信这是因为自组网的定义并不像真正的接入点(称为基础架构模式)那样连接到互联网,所以 iPhone 在连接到互联网时继续使用蜂窝网络连接一个 ad-hoc 网络。

以上是关于iOS WiFi网络切换的主要内容,如果未能解决你的问题,请参考以下文章

ios 怎么判断wifi是不是接入了互联网

为 WiFi 连接禁用三星“自动网络切换”

Win10双无线网卡怎么切换无线网卡连接WiFi

debian wifi配置

启用/禁用以太网的批处理,用于一个网卡切换本地网络和wifi使用(Win10)

将网络从 wifi 切换到 3g 时 Android/Xamarin.Android 休息客户端超时