CoreBluetooth 名前空間
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Core Bluetooth 名前空間には、Bluetooth 通信用のクラスが用意されています。
クラス
インターフェイス
ICBCentralManagerDelegate |
プロトコル CBCentralManagerDelegateの必要なメソッド (存在する場合) を表すインターフェイス。 |
ICBPeripheralDelegate |
プロトコル CBPeripheralDelegateの必要なメソッド (存在する場合) を表すインターフェイス。 |
ICBPeripheralManagerDelegate |
プロトコル CBPeripheralManagerDelegateの必要なメソッド (存在する場合) を表すインターフェイス。 |
列挙型
CBATTError |
GATT サーバーによって返されるエラー。 |
CBAttributePermissions |
特性の値の読み取り、書き込み、および暗号化のアクセス許可を列挙します。 |
CBCentralManagerState |
の考えられる状態を CBCentralManager列挙します。 |
CBCharacteristicProperties |
特性の可能なプロパティ。 特性には複数のプロパティが含まれる場合があります。 |
CBCharacteristicWriteType |
特性の値に対して可能な書き込みの種類を列挙します。 |
CBError |
Bluetooth LE トランザクション中に発生する可能性のあるエラー。 |
CBManagerState |
Core Bluetooth 名前空間には、Bluetooth 通信用のクラスが用意されています。 |
CBPeripheralManagerAuthorizationStatus |
の考えられる状態を列挙します CBPeripheralManager。 |
CBPeripheralManagerConnectionLatency |
の接続待機時間 CBPeripheralManager。 |
CBPeripheralManagerState |
の考えられる状態を列挙します CBPeripheralManager。 |
CBPeripheralState |
の可能な接続状態を CBPeripheral列挙します。 |
注釈
Core Bluetooth 名前空間を使用すると、開発者は Bluetooth Low Energy (Bluetooth LE) デバイスを操作できます。
Bluetooth LE モデルは、オブジェクトを中心 CBPeer に回転します。 次の CBPeerCBCentral 2 種類があります。データ提供 Bluetooth LE デバイスに対応するオブジェクトによってCBPeripheral提供されるデータをスキャンして使用するオブジェクト。
一般に、iOS デバイスは ロールに CBCentral 含まれますが、デバイス CBPeripheralが であるアプリを作成することもできます。
次の例は、外部 Bluetooth LE デバイスからのデータを使用するアプリの一般的な初期化動作を示しています。 を持つ CBCentral アプリケーションでは、デリゲート オブジェクトが関連付けられている CBCentralManagerDelegate 必要があり、その UpdatedState メソッドをオーバーライドする必要があります。 オーバーライドは のCBCentralManager状態をチェックし、それが PoweredOnであることを確認する必要があります。
通常、アプリケーションは Bluetooth LE 周辺機器をスキャンする必要があります。 これは高エネルギー関数であるため、開発者は関心のある を見つけたCBPeripheral後、または一定時間後に M:Core Bluetooth.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 、1 つの物理デバイスに対して複数回呼び出すことができます。 アプリケーション開発者は、関心のある への CBPeripheral 参照を取得したら、その参照を維持してさらに作業を行い、 を呼び出す StopScan必要があります。
検出された CBPeripheralへの参照を使用すると、開発者は次の例に示すように、それに接続できます。
には CBPeripheral 0 個以上 CBServiceの s があり、それぞれが 0 個以上 CBCharacteristicの s を持っています。 特性が測定値 (ハートビート、時間、温度など) を表す場合、値は プロパティ内 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);