Есть ли способ включить и выключить Bluetooth и / или Wi-Fi программно в iOS? - PullRequest
20 голосов
/ 23 декабря 2010

Я ищу простой способ переключения между Bluetooth и Wi-Fi между состояниями включения и выключения на устройствах iOS 4.x (iPhone и iPad).

Я постоянно переключаю эти функции при перемещении между различными местоположениями и сценариями использования, и сейчас требуется несколько нажатий и посещений приложения настроек. Я пытаюсь создать простое приложение, которое работает на Springboard, к которому я могу просто прикоснуться, и оно отключит Wi-Fi, если он включен, и наоборот, а затем сразу же закроется. Аналогично с приложением для переключения состояния Bluetooth.

У меня есть SDK для разработчиков, и я доволен Xcode и разработкой для iOS, поэтому я рад написать необходимый код для создания приложения. Я просто в растерянности относительно того, какой API, частный или нет, обладает необходимой функциональностью для простого переключения состояния этих средств.

Поскольку это царапает очень личный зуд, я не собираюсь пытаться продать приложение или поставить его в магазине приложений, поэтому соблюдение руководящих принципов приложения по использованию API не является проблемой. Чего я не хочу делать, так это делать джейлбрейк устройств, поскольку я хочу, чтобы основное программное обеспечение было поставлено.

Может кто-нибудь указать мне пример кода или дополнительную информацию о достижении этой цели, так как мой Google-фу подводит меня, и если есть информация для устройств 4.x, я просто не могу ее найти.

1 Ответ

25 голосов
/ 19 апреля 2011

Благодаря Мэтту Фарругии (@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 и запустите на устройстве. При этом создается приложение с одним нажатием, которое включает и выключает Bluetooth.

...