在iOS中是否有一种编程方法可以切换WiFi开关?

8
3个回答

8

使用任何公开(文档化)API都无法关闭或打开WiFi。

即使在非越狱设备上,使用私有函数也可能实现此功能。

请参阅Apple80211Functions - 其中有一个名为Apple80211SetPower的私有函数非常适合此工作。但是,使用它也会干扰自动TX功率设置 - 可能会导致电池使用量增加或WiFi链接质量降低(或两者兼而有之)。

当然,使用此方法,您的应用程序肯定无法通过App Store审核

如果您下载Stumbler源代码,可以看到如何使用Apple80211函数。

使用以下命令进行Stumbler SVN检出:

svn checkout http://iphone-wireless.googlecode.com/svn/trunk/ iphone-wireless-read-only

还有两个项目可能会帮助您开始使用低级WiFi功能:

web-login-helper

BECHA


不错。谢谢。我在想苹果是否曾考虑过向公众发布这个。但我认为不会。让我们拭目以待未来。 - nembleton
你能否创建一个具体的示例?我不太明白是否只能使用该源代码控制Wifi的开/关... - Idan
这个函数没有文档说明,所以你需要做一些试验。我只是在说这个函数可能是最适合这项工作的候选人。 - Rok Jarc

2

我相当肯定的是,这个SDK不允许使用公共框架来开启或关闭WiFi连接,很抱歉。你可以使用私有框架,但是这样可能无法通过苹果的审核。


是的,我非常确定未越狱的设备不允许这样做。这仅仅是因为苹果没有通过SDK将设备的控制权交给开发者。苹果是硬件及其设置的唯一控制者。 - nembleton
1
@nembleton / @Ste:上面那位(user1071887)关于WiFi的问题说他已经通过编程实现了蓝牙的开关。而你们在回答中提到这是不可能的,苹果不会将硬件控制权交给开发者。能否请你们详细解释一下?我想知道蓝牙是否不包含任何硬件部分。谢谢。 - taus-iDeveloper
是的,你说得对。但我认为苹果公司认为蓝牙是他们试图保护的“不太重要”的关键用户体验的一部分。请不要误解我的先前陈述,但是苹果公司仍然对设备保持着大部分的控制。 - nembleton
我问的是如何使用私有函数来实现。我知道它不是公开的,因为这个应用程序是我自己使用的,而不是用于应用商店... - Idan

1
在iOS 2.x中,您可以使用一些私有API来实现此功能,但在iOS 4.x、5.x中不起作用。希望苹果能公开用于管理WiFi的API,目前仅由设置应用程序使用。

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