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

时间:2010-12-23 11:39:56

标签: iphone ios bluetooth wifi

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

当我在不同位置和使用场景之间移动时,我不断切换这些功能,现在需要多次点击并访问Settings App。我希望创建一个简单的应用程序,它存在于Springboard上,我可以点击它,它将关闭wifi,如果它打开,反之亦然,然后立即退出。与用于切换蓝牙状态的应用程序类似。

我有开发人员SDK,并且对Xcode和iOS开发很满意,所以很高兴能够编写创建应用程序所需的代码。关于哪些API(私有或非私有)具有简单切换这些设施状态所需的功能,我感到很遗憾。

因为这是一个非常个人化的问题,我无意尝试销售应用程序或在应用程序商店中获取它,因此符合关于API使用的应用程序指南是没有问题的。我不想做的是越狱设备,因为我想保留核心软件。

任何人都可以向我提供一些示例代码或更多关于实现此目标的信息,因为我的Google-fu让我失望,如果有关于4.x设备的信息,我就找不到它。< / p>

1 个答案:

答案 0 :(得分:25)

感谢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项目并在设备上运行即可。这样做会创建一个应用程序,可以打开和关闭蓝牙。