Проверьте, включен ли Bluetooth? - PullRequest
6 голосов
/ 12 июля 2011

Я просто хочу проверить, включен ли Bluetooth на устройстве или нет.

Я не хочу менять статус внутри приложения (или вообще), использовать частные API, делать джейлбрейк устройства или делать что-либо, что заставит Apple отклонить приложение.

Все, что я хочу, это знать, включен ли Bluetooth или нет.

Кто-нибудь может пролить свет на это? Есть ли какой-нибудь Apple, способ сделать это?

После прочтения бесчисленных постов и документации я полностью осознаю, что Apple очень ограничена в отношении Bluetooth (среди прочего).

Если вы можете внести свой вклад в этот вопрос только с помощью ссылки на документацию и / или небольшого замечания о цели обучения c, чтении документации и т. Д., Тогда, пожалуйста, не отвечайте.

Ответы [ 5 ]

3 голосов
/ 22 июля 2011

Единственный способ, который я когда-либо нашел, это сделать с помощью частных платформ (например, Bluetooth Manager), которые полезны только для приложений с джейлбрейком ... и Apple отклонит любое приложение, используя частную платформу.Я полагаю, что это даже против их ToS делать что-либо с Bluetooth, так что вам не повезло.

3 голосов
/ 27 сентября 2012

Здесь, кажется, есть ответ здесь - Использование Core bluetooth framework

Однако этот ответ будет работать только для iOS 5.0 и выше.Я не проверял это сам, но вернусь и добавлю отзыв, если обнаружу, что это работает.

2 голосов
/ 23 апреля 2014

Теперь вы можете проверить это с помощью CBCentralManager в iOS 7 и инициализировать его с установленным параметром CBCentralManagerOptionShowPowerAlertKey.

Ключ CBCentralManagerOptionShowPowerAlertKey, который можно передать методу initWithDelegate:queue:options: в CBCentralManager, который заставит iOS запустить Central Manager и не предложит пользователю включить Bluetooth.

Опубликовано здесь: http://chrismaddern.com/determine-whether-bluetooth-is-enabled-on-ios-passively/

2 голосов
/ 22 июля 2011

К сожалению, нет, SDK не предоставляет методы Bluetooth.

Может быть способ сделать это, используя недокументированные методы, однако мы все знаем о проблеме там.

0 голосов
/ 19 января 2017

Для iOS9 +, вы можете проверить мой ответ здесь .

#import <CoreBluetooth/CoreBluetooth.h>

@interface ShopVC () <CBCentralManagerDelegate>

@property (nonatomic, strong) CBCentralManager *bluetoothManager;

@end

@implementation ShopVC

- (void)viewDidLoad {
    [super viewDidLoad];

    if(!self.bluetoothManager)
    {
        NSDictionary *options = @{CBCentralManagerOptionShowPowerAlertKey: @NO};
        self.bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];
    }
}

#pragma mark - CBCentralManagerDelegate

- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
    NSString *stateString = nil;
    switch(self.bluetoothManager.state)
    {
        case CBCentralManagerStateResetting: stateString = @"The connection with the system service was momentarily lost, update imminent."; break;
        case CBCentralManagerStateUnsupported: stateString = @"The platform doesn't support Bluetooth Low Energy."; break;
        case CBCentralManagerStateUnauthorized: stateString = @"The app is not authorized to use Bluetooth Low Energy."; break;
        case CBCentralManagerStatePoweredOff: stateString = @"Bluetooth is currently powered off."; break;
        case CBCentralManagerStatePoweredOn: stateString = @"Bluetooth is currently powered on and available to use."; break;
        default: stateString = @"State unknown, update imminent."; break;
    }
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Bluetooth state"
                                                    message:stateString
                                                   delegate:nil
                                          cancelButtonTitle:@"ok" otherButtonTitles: nil];
    [alert show];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...