YMSCBCentralManager Class Reference
| Inherits from | NSObject |
|---|---|
| Conforms to | CBCentralManagerDelegate |
| Declared in | YMSCBCentralManager.h YMSCBCentralManager.m |
Overview
Base class for defining a Bluetooth LE central.
YMSCBCentralManager holds an instance of CBCentralManager (manager) and implements the CBCentralManagerDelgate messages sent by manager.
This class provides ObjectiveC block-based callback support for peripheral scanning and retrieval.
YMSCBCentralManager is intended to be subclassed: the subclass would in turn be written to handle the set of BLE peripherals of interest to the application.
The subclass is typically implemented (though not necessarily) as a singleton, so that there is only one instance of CBCentralManager that is used by the application.
All discovered BLE peripherals are stored in the array ymsPeripherals.
Legacy Note: This class was previously named YMSCBAppService.
Properties
delegate
Pointer to delegate.
@property (nonatomic, weak) id<CBCentralManagerDelegate> delegateDiscussion
Pointer to delegate.
The delegate object will be sent CBCentralManagerDelegate messages received by manager.
Declared In
YMSCBCentralManager.h
manager
The CBCentralManager object.
@property (atomic, strong) CBCentralManager *managerDiscussion
The CBCentralManager object.
In typical practice, there is only one instance of CBCentralManager and it is located in a singleton instance of YMSCBCentralManager. This class listens to CBCentralManagerDelegate messages sent by manager, which in turn forwards those messages to delegate.
Declared In
YMSCBCentralManager.h
knownPeripheralNames
Array of NSStrings to search to match CBPeripheral instances.
@property (atomic, strong) NSArray *knownPeripheralNamesDiscussion
Array of NSStrings to search to match CBPeripheral instances.
Used in conjunction with isKnownPeripheral:. This value is typically initialized using initWithKnownPeripheralNames:queue:.
Declared In
YMSCBCentralManager.h
ymsPeripherals
Array of YMSCBPeripheral instances.
@property (atomic, readonly, strong) NSArray *ymsPeripheralsDiscussion
Array of YMSCBPeripheral instances.
This array holds all YMSCBPeripheral instances discovered or retrieved by manager.
Declared In
YMSCBCentralManager.h
count
Count of ymsPeripherals.
@property (atomic, readonly, assign) NSUInteger countDiscussion
Count of ymsPeripherals.
Declared In
YMSCBCentralManager.h
version
API version.
@property (atomic, readonly, assign) NSString *versionDiscussion
API version.
Declared In
YMSCBCentralManager.h
discoveredCallback
Peripheral Discovered Callback
@property (atomic, copy) YMSCBDiscoverCallbackBlockType discoveredCallbackDiscussion
Peripheral Discovered Callback
Declared In
YMSCBCentralManager.h
retrievedCallback
Peripheral Retreived Callback
@property (atomic, copy) YMSCBRetrieveCallbackBlockType retrievedCallbackDiscussion
Peripheral Retreived Callback
Declared In
YMSCBCentralManager.h
useStoredPeripherals
If YES, then discovered peripheral UUIDs are stored in standardUserDefaults.
@property (atomic, assign) BOOL useStoredPeripheralsDiscussion
If YES, then discovered peripheral UUIDs are stored in standardUserDefaults.
Declared In
YMSCBCentralManager.h
Initializing YMSCBCentralManager
– initWithKnownPeripheralNames:queue:delegate:
Constructor with array of known peripheral names.
- (instancetype)initWithKnownPeripheralNames:(NSArray *)nameList queue:(dispatch_queue_t)queue delegate:(id<CBCentralManagerDelegate>)delegateParameters
nameList |
Array of peripheral names of type NSString. |
|---|---|
queue |
The dispatch queue to use to dispatch the central role events. If its value is nil, the central manager dispatches central role events using the main queue. |
delegate |
Delegate of this class instance. |
Discussion
Constructor with array of known peripheral names.
By default, this constructor will not use stored peripherals from standardUserDefaults.
Declared In
YMSCBCentralManager.h
– initWithKnownPeripheralNames:queue:useStoredPeripherals:delegate:
Constructor with array of known peripheral names.
- (instancetype)initWithKnownPeripheralNames:(NSArray *)nameList queue:(dispatch_queue_t)queue useStoredPeripherals:(BOOL)useStore delegate:(id<CBCentralManagerDelegate>)delegateParameters
nameList |
Array of peripheral names of type NSString. |
|---|---|
queue |
The dispatch queue to use to dispatch the central role events. If its value is nil, the central manager dispatches central role events using the main queue. |
useStore |
If YES, then discovered peripheral UUIDs are stored in standardUserDefaults. |
delegate |
Delegate of this class instance. |
Discussion
Constructor with array of known peripheral names.
Declared In
YMSCBCentralManager.h
Peripheral Management
– isKnownPeripheral:
Determines if peripheral is known by this app service.
- (BOOL)isKnownPeripheral:(CBPeripheral *)peripheralParameters
peripheral |
found or retrieved peripheral |
|---|
Return Value
YES is peripheral is to be managed by this app service.
Discussion
Determines if peripheral is known by this app service.
Used in conjunction with knownPeripheralNames.
Declared In
YMSCBCentralManager.h
– handleFoundPeripheral:
Handler for discovered or found peripheral. This method is to be overridden.
- (void)handleFoundPeripheral:(CBPeripheral *)peripheralParameters
peripheral |
CoreBluetooth peripheral instance |
|---|
Discussion
Handler for discovered or found peripheral. This method is to be overridden.
Declared In
YMSCBCentralManager.h
– peripheralAtIndex:
Returns the YSMCBPeripheral instance from ymsPeripherals at index.
- (YMSCBPeripheral *)peripheralAtIndex:(NSUInteger)indexParameters
index |
An index within the bounds of ymsPeripherals. |
|---|
Discussion
Returns the YSMCBPeripheral instance from ymsPeripherals at index.
Declared In
YMSCBCentralManager.h
– addPeripheral:
Add YMSCBPeripheral instance to ymsPeripherals.
- (void)addPeripheral:(YMSCBPeripheral *)yperipheralParameters
yperipheral |
Instance of YMSCBPeripheral |
|---|
Discussion
Add YMSCBPeripheral instance to ymsPeripherals.
Declared In
YMSCBCentralManager.h
– removePeripheral:
Remove yperipheral in ymsPeripherals and from standardUserDefaults if stored.
- (void)removePeripheral:(YMSCBPeripheral *)yperipheralParameters
yperipheral |
Instance of YMSCBPeripheral |
|---|
Discussion
Remove yperipheral in ymsPeripherals and from standardUserDefaults if stored.
Declared In
YMSCBCentralManager.h
– removePeripheralAtIndex:
Remove YMSCBPeripheral instance at index
- (void)removePeripheralAtIndex:(NSUInteger)indexParameters
index |
The index from which to remove the object in ymsPeripherals. The value must not exceed the bounds of the array. |
|---|
Discussion
Remove YMSCBPeripheral instance at index
Declared In
YMSCBCentralManager.h
– removeAllPeripherals
Remove all YMSCBPeripheral instances
- (void)removeAllPeripheralsDiscussion
Remove all YMSCBPeripheral instances
Declared In
YMSCBCentralManager.h
– findPeripheral:
Find YMSCBPeripheral instance matching peripheral
- (YMSCBPeripheral *)findPeripheral:(CBPeripheral *)peripheralParameters
peripheral |
peripheral corresponding with YMSCBPeripheral |
|---|
Return Value
instance of YMSCBPeripheral
Discussion
Find YMSCBPeripheral instance matching peripheral
Declared In
YMSCBCentralManager.h
Scanning for Peripherals
– startScan
Start CoreBluetooth scan for peripherals. This method is to be overridden.
- (void)startScanDiscussion
Start CoreBluetooth scan for peripherals. This method is to be overridden.
The implementation of this method in a subclass must include the call to scanForPeripheralsWithServices:options:
Declared In
YMSCBCentralManager.h
– scanForPeripheralsWithServices:options:
Wrapper around the method scanForPeripheralWithServices:options: in CBCentralManager.
- (void)scanForPeripheralsWithServices:(NSArray *)serviceUUIDs options:(NSDictionary *)optionsParameters
serviceUUIDs |
An array of CBUUIDs the app is interested in. |
|---|---|
options |
A dictionary to customize the scan, see CBCentralManagerScanOptionAllowDuplicatesKey. |
Discussion
Wrapper around the method scanForPeripheralWithServices:options: in CBCentralManager.
If this method is invoked without involving a callback block, you must implement handleFoundPeripheral:.
Declared In
YMSCBCentralManager.h
– scanForPeripheralsWithServices:options:withBlock:
Scans for peripherals that are advertising service(s), invoking a callback block for each peripheral that is discovered.
- (void)scanForPeripheralsWithServices:(NSArray *)serviceUUIDs options:(NSDictionary *)options withBlock:(void ( ^ ) ( CBPeripheral *peripheral , NSDictionary *advertisementData , NSNumber *RSSI , NSError *error ))discoverCallbackParameters
serviceUUIDs |
An array of CBUUIDs the app is interested in. |
|---|---|
options |
A dictionary to customize the scan, see CBCentralManagerScanOptionAllowDuplicatesKey. |
discoverCallback |
Callback block to execute upon discovery of a peripheral. The parameters of discoverCallback are:
|
Discussion
Scans for peripherals that are advertising service(s), invoking a callback block for each peripheral that is discovered.
Declared In
YMSCBCentralManager.h
– stopScan
Stop CoreBluetooth scan for peripherals.
- (void)stopScanDiscussion
Stop CoreBluetooth scan for peripherals.
Declared In
YMSCBCentralManager.h
Retrieve Peripherals
– retrievePeripheralsWithIdentifiers:
Retrieves a list of known peripherals by their UUIDs.
- (NSArray *)retrievePeripheralsWithIdentifiers:(NSArray *)identifiersParameters
identifiers |
A list of NSUUID objects. |
|---|
Return Value
A list of peripherals.
Discussion
Retrieves a list of known peripherals by their UUIDs.
Declared In
YMSCBCentralManager.h
– retrieveConnectedPeripheralsWithServices:
Retrieves a list of the peripherals currently connected to the system and handles them using handleFoundPeripheral:
- (NSArray *)retrieveConnectedPeripheralsWithServices:(NSArray *)serviceUUIDSParameters
serviceUUIDS |
A list of NSUUID services |
|---|
Return Value
A list of CBPeripheral objects.
Discussion
Retrieves a list of the peripherals currently connected to the system and handles them using handleFoundPeripheral:
Retrieves all peripherals that are connected to the system and implement any of the services listed in serviceUUIDs. Note that this set can include peripherals which were connected by other applications, which will need to be connected locally via connectPeripheral:options: before they can be used.
Declared In
YMSCBCentralManager.h