iOS WiFi网络切换

6

我的公司正在开发一款需要与iPhone连接频率较高的配件。由于MFi的限制(仅在主机模式下进行的USB 2通信大约只有100KBps),我们考虑在配件上托管WiFi ad-hoc网络,并使用iPhone的WiFi连接到该网络。

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

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

有人能建议一种实现我们目标的方法吗?也许有一个系统模型视图可以调用,允许用户在不直接使用私有API的情况下切换WiFi网络?

欢迎提出创意解决方案!


1
你有没有进行过测试来证明使用 MFi 的 USB Host 模式只能获得 100KBps 的速度?我也遇到了类似的问题,但听说可以达到约 500KBps(仅是个人经验)。 - OneGuyInDc
2个回答

7
抱歉,我得说实话,没有方法可以做到。不过我能想到两种简单的解决方法。
1. 为越狱设备在 Cydia 上提供下载。AirServer 已经采取了这个措施。
2. 不够优雅,使用 UIAlertView 并在外围设备连接和断开时切换至“设置”应用程序的 wifi 面板。与 位置设置提示 很像。
3. 制作 Android 应用程序!
苹果,你真让人头疼。

谢谢回复。我们考虑过选项#2。有没有一种方法可以直接切换到设置应用程序中的WiFi设置部分? - mdavis
很抱歉,对此的答案也是否定的。 - Filip Radelic
3
从iOS 5.0开始,您可以使用以下代码自动导航到无线网络设置:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];(除WIFI之外,还有许多其他首选项可用)。 - paiego
1
我知道这个问题/答案已经很老了,但是为了像我一样寻找答案的其他人着想,URL似乎在iOS 8及更高版本中已经更改。现在你可以使用UIApplication.sharedApplication().openURL(string: UIApplicationOpenSettingsURLString);。看起来你不能直接进入特定的设置页面了。 - c1moore

3
抱歉成为传递坏消息的人,但明确的答案是否定的。你的方法的主要问题甚至不是苹果的审核过程,而是在连接设备时无法访问互联网。当iPhone连接到wifi时,它甚至不会尝试使用蜂窝数据,无论wifi是否连接到互联网。
你可以提交错误报告请求这些功能,并祈求苹果听取你的声音,但在这种情况下可能永远不会发生。
我建议使用蓝牙,但如果USB速度不够快,那就不是一个选项。
这基本上让你回到原点并使用USB,或通过Cydia分发你的应用程序。

我听说过这个问题,但是在我的测试中它运行良好!(将iPhone连接到非路由的Ad-Hoc WiFi网络-- 3G正常工作!)我必须再试一次。那绝对是个致命问题。 - mdavis
实际上我认为原因是,按定义,临时网络不像真正的访问点(称为基础设施模式)那样连接到互联网。因此,当iPhone连接到临时网络时,它仍然使用蜂窝网络进行互联网连接。 - Larry S
@LarryS,iOS 6有一些变化,所以这个问题/答案现在不再相关了。 - Filip Radelic
@FilipR 谢谢更新。iOS 6 允许在编程中选择 WiFi 网络吗?这对我们来说将非常有用。 - Larry S
@LarryS 很遗憾,如果没有通过WiFi连接到互联网,它将自动使用蜂窝数据。 - Filip Radelic
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接