1. 程式人生 > >BLE之CentralManager類介紹

BLE之CentralManager類介紹

概述

CBCentralManager物件是被用來管理central發現以及管理遠端裝置(用CBperipheral建立的物件)的。包括尋找、發現、以及連線peripheral。

在使用CBCentralManager方法之前需要使用CBCentralManagerStatePoweredOn常亮來判斷central裝置當前的狀態,指明當前的central裝置是不是支援BLE以及是否處於藍芽開啟、可利用狀態。

任務

初始化central管理器

-initWithDelegate:queue:初始化central管理器以及指定他的代理方法和執行佇列。

-initWithDelegate:queue:options:初始化central管理器以及指定他的代理方法和執行佇列、以及初始化選項。

建立或者取消與peripheral的連線

-connectPeripheral:options:與一個本地的peripheral建立連線。

-cancelPeripheralConnection:取消一個與peripheral正在執行或者掛起的連線。

檢索一系列的peripheral裝置

-retrieveConnectedPeripheralWithService:返回當前系統連線的一系列的有特定Services的peripheral。

-retrivePeripheralsWithIdentifiers:返回一系列的識別符號已知的peripherals。

-retriveConnectedPeripherals:檢索出一系列當前與系統連線的peripherals,但是在IOS 7以後用retrieveConnectedPeripheralWithService方法取代。

-retrievePeripherals:檢索出UUID已知的peripherals,但是在IOS 7之後被-retrivePeripheralsWithIdentifiers方法取代。

開始或者停止找peripherals

-scanForPeripheralsWithServices:options開始找peripheral正在廣播的services。

-stopScan:要求Central管理器停止當前找的動作。

監控引數

state:返回當前centrals管理器的狀態。當central管理者初始化建立了central物件,那麼這個State值預設是CBCentralManagerStateUnknown,當central的狀態改變,會回撥centralManagerDidUndateState:這個代理方法。而state一些可能的值如下(它們是一些列舉的型別):

CBCentralManagerStateUnknown:當前central管理器的狀態未知,馬上會有更新。

CBCentralManagerStateResetting:與系統連線的service回隨時斷開,這個狀態也會馬上更新。

CBCentralManagerStateUnsuported:當前的平臺不支援BLE。

CBCentralManagerStateUnauthorized:當前APP沒被授權使用BLE。(自己覺得應該是在Plist檔案中沒假如BLE的key)。

CBCentralManagerStatePoweredOff:當前裝置的藍芽處於關閉狀態。

CBCentralManagerStatePoweredOn:藍芽已經開啟可以使用了。

delegate:你想要接受centrals時間的代理物件。至於關於central管理者代理的具體介紹請看下篇譯文《BLE之CBCentralManagerDelegate類介紹》

常亮

central管理器初始化選項

這個keys值被用在initWithDelegate:queue:options方法中。

CBCentralManagerOptionShowPowerAlertKey:這個key值是一個NSnumber型別的物件,預設情況為NO,這個值是用來要求系統當藍芽處於關閉狀態時是否彈出一個警告框給使用者,當然前期是central管理器被例項化了。

CBCentralManagerOptionsRestoreIdentifierKey:這個是一個字串,當central管理器被例項化時分配的UID,這個UID相當重要,而且要相同當central被成功修復時。

尋找Peripheral的選項

這個Keys被用在scanForPeripheralsWithServices:options:方法中。

CBCentralManagerScanOptionAllDuplicatesKey:這也是一個NSNUmber型別的物件,當指定其為YES時,說明過濾功能是不啟用的,也就是說central每次都能接受到來自peripherals的廣播包資料,這樣的話對電池的壽命會有很大的影響。當設定為NO是每次尋找都會合並相同的peripheral。如果這個key值不指定則預設為NO。

CBCentralManagerSCanOptionSolicitedServiceUUIDsKey:想要掃描的服務的UUID,以一個數組的形式存在。也就是說指定這個選項後central便會找指定的服務的UUID。

peripheral連線選項

這個選項值被用在connectPeripheral:options方法中。

CBConnectPeripheralOptionNotifyOnConnectionKey:當成功建立連線之後,這個key值說明在不使用bluetooth-central後臺模式的情況下的,APP被掛起時,這時如果APP連線到peripheral時,是否要給APP一個提示框,當然是在APP支援後臺執行的前期下。如果又不止一個peripheral裝置發出NOtification的話,那麼離前臺最近的裝置會接受到這個提示框,如果這個KEy不指定那麼他預設為NO。

CBConnectPeripheralOptionNotifyOnDisconnectionKey:這是一個BOOL值,表明當APP處於掛起狀態時,恰好在這個時候斷開連線,要不要給APP一個斷開提示。這種情況只有指定了該APP指定在後臺能夠執行時才顯示,也是一樣當有多個APP同時請求該通知時,只有離得最近的一個才能夠顯示,如果不設定這個值預設為NO。

CBConnectPeripheralOptionNotifyOnNotificationKey :這個BOOL值說明central在處於掛起狀態時,是否接受到所有的來自peripheral的包都要彈出提示框。當然這個key值也是以APP能夠在後臺執行為前期的。

centralManager類基本上講完了,要是又不對的地方望大神指點。