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。