我尝试了蓝牙核心框架中的iOS 5.0中引入的。 根据许多线程( 多的一个 StackOverflow上本身):
- 蓝牙核心框架可以使用任何硬件,它具有低功耗蓝牙(4.0)硬件支持通信。
- 我们可以忘掉专为iPhone / iPod的(MFI)的程序,如果你正在使用的核心蓝牙技术。
我有一个iPhone 5,iPhone 4S,谷歌Android的Nexus 7和我在一起,我相信至少第一2具有的BLE的硬件支持。
我的问题是
好吧,我试着下面给出我的iPhone 4S / iPhone 5的代码,但它无法扫描,找到的iPhone5 / iPhone 4S的坐在附近。 我可以证实,这两个设备必须开启蓝牙功能。 委托方法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