CoreBluetooth 네임스페이스
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
CoreBluetooth 네임스페이스는 Bluetooth 통신을 위한 클래스를 제공합니다.
클래스
인터페이스
ICBCentralManagerDelegate |
프로토콜 CBCentralManagerDelegate의 필수 메서드(있는 경우)를 나타내는 인터페이스입니다. |
ICBPeripheralDelegate |
프로토콜 CBPeripheralDelegate의 필수 메서드(있는 경우)를 나타내는 인터페이스입니다. |
ICBPeripheralManagerDelegate |
프로토콜 CBPeripheralManagerDelegate의 필수 메서드(있는 경우)를 나타내는 인터페이스입니다. |
열거형
CBATTError |
GATT 서버에서 반환된 오류입니다. |
CBAttributePermissions |
특성 값에 대한 읽기, 쓰기 및 암호화 권한을 열거합니다. |
CBCentralManagerState |
의 가능한 상태를 열거합니다 CBCentralManager. |
CBCharacteristicProperties |
특성의 가능한 속성입니다. 특성에는 여러 속성이 있을 수 있습니다. |
CBCharacteristicWriteType |
특성의 값에 가능한 쓰기 형식을 열거합니다. |
CBError |
Bluetooth LE 트랜잭션 중에 오류가 발생할 수 있습니다. |
CBManagerState |
CoreBluetooth 네임스페이스는 Bluetooth 통신을 위한 클래스를 제공합니다. |
CBPeripheralManagerAuthorizationStatus |
의 가능한 상태를 열거합니다 CBPeripheralManager. |
CBPeripheralManagerConnectionLatency |
의 CBPeripheralManager연결 대기 시간입니다. |
CBPeripheralManagerState |
의 가능한 상태를 열거합니다 CBPeripheralManager. |
CBPeripheralState |
의 가능한 연결 상태를 열거합니다 CBPeripheral. |
설명
CoreBluetooth 네임스페이스를 사용하면 개발자가 Bluetooth LE(Bluetooth Low Energy) 디바이스로 작업할 수 있습니다.
Bluetooth LE 모델은 개체를 중심으로 CBPeer 회전합니다. 두 가지 종류 CBPeerCBCentral 가 있습니다. 데이터 제공 Bluetooth LE 디바이스에 CBPeripheral 해당하는 개체에서 제공하는 데이터를 검색하고 사용하는 개체입니다.
일반적으로 iOS 디바이스는 CBCentral 역할에 있지만 디바이스가 인 앱을 만들 수도 있습니다 CBPeripheral.
다음 예제에서는 외부 Bluetooth LE 디바이스의 데이터를 사용하는 앱의 일반적인 초기화 동작을 보여 줍니다. 가 있는 애플리케이션에는 CBCentral 연결된 CBCentralManagerDelegate 대리자 개체가 있어야 하며 메서드를 재정의 UpdatedState 해야 합니다. 재정의는 의 CBCentralManager 상태를 검사 및 가 인지 PoweredOn확인해야 합니다.
일반적으로 애플리케이션은 Bluetooth LE 주변 장치를 검색하려고 합니다. 이는 고에너지 기능이므로 개발자는 관심 있는 를 찾 CBPeripheral 은 후 또는 일정 시간 후에 M:CoreBluetooth.CBManager.StopScan*을 호출해야 합니다.
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...
}
메서드는 DiscoveredPeripheral 단일 물리적 디바이스에 대해 여러 번 호출될 수 있습니다. 애플리케이션 개발자가 관심 있는 에 대한 참조 CBPeripheral 가 있으면 추가 작업을 위해 해당 참조를 유지하고 를 호출 StopScan해야 합니다.
개발자는 검색된 CBPeripheral에 대한 참조를 사용하여 다음 예제와 같이 연결할 수 있습니다.
CBPeripheral 에는 각각 0개 이상의 CBServiceCBCharacteristics가 있습니다. 특성이 측정값(예: 하트비트, 시간, 온도 등)을 나타내는 경우 값은 속성에 Value 있습니다.
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);