iphone - 有没有办法在 iOS 中以编程方式打开和关闭蓝牙和/或 wifi?

标签 iphone ios bluetooth wifi

我正在寻找一种简单的方法来在 iOS 4.x 设备(iPhone 和 iPad)上切换蓝牙和 wifi 的开启和关闭状态。

当我在不同的位置和使用场景之间移动时,我不断地切换这些功能,现在需要多次点击和访问设置应用程序。我想创建一个简单的应用程序,它位于 Springboard 上,我只需轻按它就会关闭 wifi(如果它打开),反之亦然,然后立即退出。与用于切换蓝牙状态的应用程序类似。

我有开发者 SDK,熟悉 Xcode 和 iOS 开发,所以很乐意编写创建应用程序所需的代码。我只是不知道哪个 API(私有(private)与否)具有所需的功能来简单地切换这些设施的状态。

因为这是非常个人的痒,我无意尝试销售该应用程序或在应用程序商店上架它,因此符合应用程序 API 使用指南不是问题。我不想做的是对设备进行越狱,因为我希望核心软件保持出厂状态。

任何人都可以指出一些示例代码或有关实现此目标的更多信息,因为我的 Google-fu 让我失望了,如果有 4.x 设备的信息,我就是找不到。

最佳答案

感谢 Matt Farrugia(Twitter 上的@mattfarrugia),我正在寻找的答案是:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

#if TARGET_IPHONE_SIMULATOR
    exit( EXIT_SUCCESS ) ;
#else
    /* this works in iOS 4.2.3 */
    Class BluetoothManager = objc_getClass( "BluetoothManager" ) ;
    id btCont = [BluetoothManager sharedInstance] ;
    [self performSelector:@selector(toggle:) withObject:btCont afterDelay:0.1f] ;
#endif
    return YES ;
}

#if TARGET_IPHONE_SIMULATOR
#else
- (void)toggle:(id)btCont
{
    BOOL currentState = [btCont enabled] ;
    [btCont setEnabled:!currentState] ;
    [btCont setPowered:!currentState] ;
    exit( EXIT_SUCCESS ) ;
}
#endif

您还需要链接到 Gamekit 框架,但只需将此代码添加到新的 Xcode 项目并在设备上运行即可。这样做会创建一个一键式应用程序,可以打开和关闭蓝牙。

关于iphone - 有没有办法在 iOS 中以编程方式打开和关闭蓝牙和/或 wifi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518406/

相关文章:

iPhone 配置实用程序 - 为 webapp 添加 webclip

iphone - 检测 UIButton 事件何时完成

ios - 在 iOS 中从字符串转换日期?

ios - 在 TableViewCell 中启用 UIButton 可在更多 Cell 中启用

ios - 弹出到根导航 Controller - Swift 3

iphone - UIActionSheet 需要很长时间才能响应

ios - 如何从一维条码图像解码

android - 如何在 Android 4.X 中使用 Broadcom BLE SDK (SMART 4.0)

ios - iOS 中的健康设备配置文件 (HDP) 支持

ios - 使用 iPhone 音频加密狗传输数据