BLE Status
CoreBluetooth提供的Framework物件内容都是以CB
开头命名,以下内容以CB
代表CoreBluetooth,CB提供CBCentralManagerDelegate让我们得知目前Bluetooth的状态,从之后可以做一些互动机制提供使用者参考。
在使用CBCentralManagerDelegate之前我们要先宣告CBCentralManager,这物件用来管理在Central模式时,也提供Bluetooth状态及一些功能,这个章节可以完成读取Bluetooth的状态,并利用NSLog印出来。
ViewController.h
//-----------start----------- @interface ViewController : UIViewController <CBCentralManagerDelegate> { } @property (nonatomic,strong) CBCentralManager *CM; @property (nonatomic,strong) CBPeripheral *connectedPeripheral; @end //------------end------------
ViewController.m
初始化CBCentralManager,并将delegate设定为ViewController
//-----------start----------- #import "ViewController.h" @interface ViewController () { } @end @implementation ViewController @synthesize CM; @synthesize connectedPeripheral; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CM= [[CBCentralManager alloc] initWithDelegate:self queue:nil]; } //------------end------------
增加状态的Delegate 「centralManagerDidUpdateState」,Bluetooth状态有改变时都会呼叫此method,总共有六种状态。
//-----------start----------- -(void)centralManagerDidUpdateState:(CBCentralManager*)cManager { NSMutableString* nsmstring=[NSMutableString stringWithString:@"UpdateState:"]; BOOL isWork=FALSE; switch (cManager.state) { case CBCentralManagerStateUnknown: [nsmstring appendString:@"Unknown\n"]; break; case CBCentralManagerStateUnsupported: [nsmstring appendString:@"Unsupported\n"]; break; case CBCentralManagerStateUnauthorized: [nsmstring appendString:@"Unauthorized\n"]; break; case CBCentralManagerStateResetting: [nsmstring appendString:@"Resetting\n"]; break; case CBCentralManagerStatePoweredOff: [nsmstring appendString:@"PoweredOff\n"]; break; case CBCentralManagerStatePoweredOn: [nsmstring appendString:@"PoweredOn\n"]; isWork=TRUE; break; default: [nsmstring appendString:@"none\n"]; break; } NSLog(@"%@",nsmstring); } //------------end------------
除了可以利用Delegate方式在状态变动时立即知道目前的状态,当然也可以在当下直接使用Method的方式取得讯息
CM.state
加上这些功能后,执行一下看看结果:
2014-01-20 14:44:50.689 BluetoothLE Status[13633:70b] UpdateState:Unsupported
如果您是iPhone4或iPad2之前的机器,那执行的结果就会是** CBCentralManagerStateUnsupported**,无法支援的状态,在您的机器有支援下,大部分都会是「CBCentralManagerStatePoweredOff/CBCentralManagerStatePoweredOn」,有开Bluetooth与未开Bluetooth。