2013-03-04 5 views
0

Я не могу получить базовое bluetooth, работающее на моем iPad.Не может показаться, что ядро ​​bluetooth работает

ViewController.h

@interface ViewController : UIViewController <CBCentralManagerDelegate, CBPeripheralDelegate> 
{ 
    CBCentralManager *manager; 
} 
@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@property (strong, nonatomic) IBOutlet UITextView *textField; 

@end 

@implementation ViewController 

@synthesize textField; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)action:(id)sender { 
    textField.text = @""; 

    if (manager.state == CBCentralManagerStatePoweredOn) { 
     textField.text = @"Scanning..."; 
     NSLog(@"scanning"); 
     [manager scanForPeripheralsWithServices:nil options:nil]; 
    } else { 
     textField.text = @"Error"; 
    } 
} 

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { 
    NSLog(@"2"); 
    textField.text = [NSString stringWithFormat:@"%@%@\n", textField.text, peripheral.name]; 
} 

- (void)centralManagerDidUpdateState:(CBCentralManager *)central { 
    NSLog(@"d"); 
} 

@end 

2 никогда не будет регистрироваться и устройства никогда не обнаружены. Я убедился, что bluetooth включен в моих настройках.

Что не так с кодом? Может ли быть так, что не обнаружено никаких применимых устройств? Я могу открыть мой iMac в настройках bluetooth.

Кроме того, может ли Core Bluetooth (работает на устройстве с bluetooth LE) обнаруживать устройства без bluetooth LE? Например, беспроводная гарнитура?

ответ

2

Core Bluetooth работает только с Bluetooth Low Energy, и код, который у вас есть, обнаружит только периферийные устройства BLE, такие как теги BLE, мониторы сердечного ритма, датчики или iOS 6 devices in peripheral mode.

Нет, вы не можете обнаружить ваш iMac (OS X по-прежнему не имеет периферийного режима через Core Bluetooth) или беспроводной гарнитуры таким образом. Или любым другим способом с официальным SDK.

+0

Вы уверены, что это не можете сделать с Mac OS X? У моего MacBookAir есть BLE-чип. И кажется, что CoreBluetooth с Peripheral & Central работает как минимум на 10,7 ... – Larme

+0

Core Bluetooth на Mac OS X 10.7 и iOS 5 поддерживает только центральный режим. iOS 6 поддерживает периферийный режим, но 10.8 все еще не работает. Таким образом, вы можете подключаться к периферийному устройству Bluetooth Low Energy с использованием iOS 5 или более поздней версии или OS X 10.7 или новее, но вы можете действовать только как периферийное устройство с помощью iOS 6. –

+0

Самый простой способ подтвердить это: NS_CLASS_AVAILABLE (NA, 6_0) ' в заголовочном файле 'CBPeripheralManager' (первый аргумент - OS X, второй - версия iOS ->' NA' означает, что он не поддерживается на Mac). Кроме того, вы можете найти видео в формате WWDC в ответ, который я связал выше, где это описано более подробно, поскольку документация на самом деле очень бедна. –