CoreBluetooth Namespace
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
The CoreBluetooth namespace provides classes for Bluetooth communication.
Classes
| Name | Description |
|---|---|
| AdvertisementData | |
| CBAdvertisement |
Keys used to lookup dictionary values from the NSDictionary received as a parameter in DiscoveredPeripheral(CBCentralManager, CBPeripheral, NSDictionary, NSNumber). |
| CBAncsAuthorizationUpdateEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBATTErrorExtensions |
Extension methods for the CBATTError enumeration. |
| CBATTRequest |
An Attribute Protocol request for reading or writing. |
| CBATTRequestEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBATTRequestsEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBAttribute |
Class that uniquely identifies a Bluetooth device. |
| CBCentral |
Used to identify centrals (that are not the current device). |
| CBCentralInitOptions |
Contains options for initializing a Bluetooth central manager. |
| CBCentralManager |
Represents the local central device in Bluetooth LE. Use the CBCentralManager to scan, discover and connect to remote peripherals. |
| CBCentralManagerDelegate |
Delegate objects for CBCentralManager objects. |
| CBCentralManagerDelegate_Extensions |
Extension methods to the ICBCentralManagerDelegate interface to support all the methods from the CBCentralManagerDelegate protocol. |
| CBCharacteristic |
Characteristics of a remote peripheral. |
| CBCharacteristicEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBConnectionEventMatchingOptions | |
| CBConnectPeripheralOptions | |
| CBDescriptor |
An immutable description of a peripheral's characteristic. See also CBMutableDescriptor. |
| CBDescriptorEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBDiscoveredPeripheralEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBErrorExtensions |
Extension methods for the CBError enumeration. |
| CBL2CapChannel | |
| CBManager | |
| CBMutableCharacteristic |
A mutable CBCharacteristic. |
| CBMutableDescriptor |
A mutable CBDescriptor. |
| CBMutableService |
A mutable CBService. |
| CBPeer |
Class that represents a central or perhipheral Bluetooth device. |
| CBPeripheral |
Represents a CoreBluetooth peripheral. |
| CBPeripheralConnectionEventEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralDelegate |
Delegate object for CBPeripheral. Provides methods called on events relating to discovery, exploration, and interaction with a remote peripheral. |
| CBPeripheralDelegate_Extensions |
Extension methods to the ICBPeripheralDelegate interface to support all the methods from the CBPeripheralDelegate protocol. |
| CBPeripheralDiconnectionEventEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralErrorEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralManager |
Manages published services per the CBPeripheral device's GATT database. |
| CBPeripheralManagerDelegate |
Delegate object for CBPeripheralManager. Adds methods for events relating to availability, publishing, advertising, and subscription. |
| CBPeripheralManagerDelegate_Extensions |
Extension methods to the ICBPeripheralManagerDelegate interface to support all the methods from the CBPeripheralManagerDelegate protocol. |
| CBPeripheralManagerL2CapChannelOperationEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralManagerOpenL2CapChannelEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralManagerServiceEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralManagerSubscriptionEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralOpenL2CapChannelEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBPeripheralServicesEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBRssiEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBService |
Represents the services of a remote peripheral. |
| CBServiceEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| CBUUID |
Universal Unique Identifiers for the Bluetooth stack. |
| CBWillRestoreEventArgs |
Provides data for an event based on an Objective-C protocol method. |
| PeripheralConnectionOptions |
Peripheral connection options. |
| PeripheralScanningOptions |
Possible values for the options parameter in calls to ScanForPeripherals(CBUUID[], NSDictionary). |
| RestoredState | |
| StartAdvertisingOptions |
Manages access to options used by StartAdvertising(StartAdvertisingOptions). |
Interfaces
| Name | Description |
|---|---|
| ICBCentralManagerDelegate |
Delegate objects for CBCentralManager objects. |
| ICBPeripheralDelegate |
Delegate object for CBPeripheral. Provides methods called on events relating to discovery, exploration, and interaction with a remote peripheral. |
| ICBPeripheralManagerDelegate |
Delegate object for CBPeripheralManager. Adds methods for events relating to availability, publishing, advertising, and subscription. |
Enums
| Name | Description |
|---|---|
| CBATTError |
Errors returned by a GATT server. |
| CBAttributePermissions |
Enumerates the read, write, and encryption permissions for a characteristic's values. |
| CBCentralManagerFeature | |
| CBCentralManagerState |
Enumerates possible states of a CBCentralManager. |
| CBCharacteristicProperties |
The possible properties of a characteristic. A characteristic may have multiple properties. |
| CBCharacteristicWriteType |
Enumerates the possible types of writes to a characteristic's value. |
| CBConnectionEvent | |
| CBError |
Errors possible during Bluetooth LE transactions. |
| CBManagerAuthorization | |
| CBManagerState | |
| CBPeripheralManagerConnectionLatency |
The connection latency of the CBPeripheralManager. |
| CBPeripheralManagerState |
Enumerates the possible states of the CBPeripheralManager. |
| CBPeripheralState |
Enumerates the possible connection states of a CBPeripheral. |
Remarks
The CoreBluetooth namespace allows developers to work with Bluetooth Low Energy (Bluetooth LE) devices.
The Bluetooth LE model revolves around CBPeer objects. There are two kinds of CBPeer: CBCentral objects that scan and consume data, and CBPeripheral objects that correspond to data-providing Bluetooth LE devices.
Generally, the iOS device will be in the CBCentral role, but it is also possible to create apps in which the device is a CBPeripheral.
The following example shows the typical initialization behavior of an app that consumes data from external Bluetooth LE devices. Applications that have a CBCentral must have an associated CBCentralManagerDelegate delegate object and must override its UpdatedState method. The override must check the state of the CBCentralManager and confirm that it is PoweredOn.
Typically, applications will want to scan for Bluetooth LE peripherals. This is a high-energy function, so developers should call StopScan after finding the CBPeripheral in which they are interested or after a certain amount of time.
public class MySimpleCBCentralManagerDelegate : CBCentralManagerDelegate
{
override public void UpdatedState (CBCentralManager mgr)
{
if (mgr.State == CBCentralManagerState.PoweredOn) {
//Passing in null scans for all peripherals. Peripherals can be targeted by using CBUIIDs
CBUUID[] cbuuids = null;
mgr.ScanForPeripherals (cbuuids); //Initiates async calls of DiscoveredPeripheral
//Timeout after 30 seconds
var timer = new Timer (30 * 1000);
timer.Elapsed += (sender, e) => mgr.StopScan();
} else {
//Invalid state -- Bluetooth powered down, unavailable, etc.
System.Console.WriteLine ("Bluetooth is not available");
}
}
public override void DiscoveredPeripheral (CBCentralManager central, CBPeripheral peripheral, NSDictionary advertisementData, NSNumber RSSI)
{
Console.WriteLine ("Discovered {0}, data {1}, RSSI {2}", peripheral.Name, advertisementData, RSSI);
}
}
public partial class HelloBluetoothCSharpViewController : UIViewController
{
MySimpleCBCentralManagerDelegate myDel;
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
//Important to retain reference, else will be GC'ed
myDel = new MySimpleCBCentralManagerDelegate ();
var myMgr = new CBCentralManager (myDel, DispatchQueue.CurrentQueue);
}
//...etc...
}
The DiscoveredPeripheral method may be called multiple times for a single physical device. Once application developers have a reference to the CBPeripheral in which they are interested, they should maintain that reference for further work and call StopScan.
With a reference to a discovered CBPeripheral, developers can then connect to it, as shown in the following example.
A CBPeripheral has zero or more CBServices, each of which has zero or more CBCharacteristics. If the characteristic represents a measurement (such as a heartbeat, time, temperature, etc.), the value will be in the Value property.
public class SimplePeripheralDelegate : CBPeripheralDelegate
{
public override void DiscoveredService (CBPeripheral peripheral, NSError error)
{
System.Console.WriteLine ("Discovered a service");
foreach (var service in peripheral.Services) {
Console.WriteLine (service.ToString ());
peripheral.DiscoverCharacteristics (service);
}
}
public override void DiscoveredCharacteristic (CBPeripheral peripheral, CBService service, NSError error)
{
System.Console.WriteLine ("Discovered characteristics of " + peripheral);
foreach (var c in service.Characteristics) {
Console.WriteLine (c.ToString ());
peripheral.ReadValue (c);
}
}
public override void UpdatedValue (CBPeripheral peripheral, CBDescriptor descriptor, NSError error)
{
Console.WriteLine ("Value of characteristic " + descriptor.Characteristic + " is " + descriptor.Value);
}
public override void UpdatedCharacterteristicValue (CBPeripheral peripheral, CBCharacteristic characteristic, NSError error)
{
Console.WriteLine ("Value of characteristic " + characteristic.ToString () + " is " + characteristic.Value);
}
}
//...
mgr = new CBCentralManager (myCentralDelegate, DispatchQueue.CurrentQueue);
mgr.ConnectedPeripheral += (s, e) => {
activePeripheral = e.Peripheral;
System.Console.WriteLine ("Connected to " + activePeripheral.Name);
if (activePeripheral.Delegate == null) {
activePeripheral.Delegate = new SimplePeripheralDelegate ();
//Begins asynchronous discovery of services
activePeripheral.DiscoverServices ();
}
};
//Connect to peripheral, triggering call to ConnectedPeripheral event handled above
mgr.ConnectPeripheral (myPeripheral);