Я пробовал Базовая инфраструктура Bluetooth, представленная в iOS 5.0. По многим темам (один из многих) по самому StackOverflow:
- Базовая структура Bluetooth может использоваться для связи с ЛЮБОЙ аппаратное обеспечение, поддерживающее Bluetooth Low Energy (4.0).
- Мы можем забыть о программе Made For iPhone/iPod (MFI), если вы используя технологию Core Bluetooth.
У меня есть iPhone 5, iPhone 4S, Google Android Nexus 7, и я уверен, что, по крайней мере, у первых 2 есть аппаратная поддержка BLE.
Мой вопрос
Ну, я попробовал приведенный ниже код на моем iPhone 4S/iPhone 5, но он не смог отсканировать и найти iPhone5/iPhone 4S, сидящий рядом. Я могу подтвердить, что оба устройства включили Bluetooth. Метод делегата didDiscoverPeripheral
никогда не будет вызван.
Каковы могут быть причины? Я что-то пропустил?
Это мой код (урезанный до небольшого тестового проекта).
ViewController.h
@interface ViewController:UIViewController<CBCentralManagerDelegate, CBPeripheralDelegate{
}
@property (strong, nonatomic) CBCentralManager *mCentralManager;
@end
ViewController.m
@implementation ViewController
@synthesize mCentralManager;
- (void)viewDidLoad{
[super viewDidLoad];
mCentralManager = [[CBCentralManager alloc]initWithDelegate:self queue:nil];
[self scanForPeripherals];
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
NSLog(@"Received periferal :%@",peripheral);
}
- (int) scanForPeripherals {
if (self.mCentralManager.state != CBCentralManagerStatePoweredOn)
{
NSLog(@"self.mCentralManagerState : %d",self.mCentralManager.state);
return -1;
}
//Getting here alright.. bluetooth is powered on.
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
//Documentation says passind nil as device UUID, scans and finds every peripherals
[self.mCentralManager scanForPeripheralsWithServices:nil options:options];
return 0;
}
@end