わふうの人が書いてます。

iOSアプリケーション開発、BLEのファームウェアとハードウェア試作のフリーランスエンジニア。

CBCentralManagerクラスリファレンス、日本語訳

これは、Apple社のCBCentralManagerクラスドキュメント http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBCentralManager_Class/から、CoreBluetooth開発の理解に必要最低限の情報を日本語に意訳したものです。

プロパティ

@property(assign, nonatomic) id delegate;

セントラル・マネージャのイベントを受け取るデリゲートを設定します。

@property(readonly) CBCentralManagerState state;

セントラル・マネージャの状態を表します。セントラル・マネージャをインスタンスしたときは初期値CBCentralStateUnknownです。この値が変化した瞬間に、デリゲートのコールバック - (void)centralManagerDidUpdateState:(CBCentralManager *)central が呼ばれます。

CBCentralManagerState列挙型は、以下の値を取ります。

1
2
3
4
5
6
7
8
typedef NS_ENUM(NSInteger, CBCentralManagerState) {
CBCentralManagerStateUnknown = 0,
CBCentralManagerStateResetting,
CBCentralManagerStateUnsupported,
CBCentralManagerStateUnauthorized,
CBCentralManagerStatePoweredOff,
CBCentralManagerStatePoweredOn
};
  • CBCentralManagerStateUnknown = 0,
    • 初期値です。すぐに更新されます。
  • CBCentralManagerStateResetting,
    • システムサービスとの接続が一時的に失なわれました。すぐに更新されます。
  • CBCentralManagerStateUnsupported,
    • Bluetooth Low EnergyのCentral/Clientをサポートしていません。
  • CBCentralManagerStateUnauthorized,
    • このアプリケーションは、Bluetooth Low EnergyのCentral/Client使う認可がありません。
  • CBCentralManagerStatePoweredOff,
    • Bluetoothがオフになっています。
  • CBCentralManagerStatePoweredOn
    • Bluetoothがオンで、かつ、いま利用できます。

インスタンスメソッド

- (void)cancelPeripheralConnection:(CBPeripheral *)peripheral;

ペリフェラルへの、ペンディング状態もしくは接続している接続を、キャンセルします。

connectPeripheral:options:
Establish a connection to the peripheral.

- (void)connectPeripheral:(CBPeripheral )peripheral options:(NSDictionary )options;

ペリフェラルへの接続を確立します。引数optionsで接続のオプションを指定出来ます。
CBConnectPeripheralOptionNotifyOnIiscoonectionKey を参照してください。

このメソッドはタイムアウトをしません。ペンディングされた接続をキャンセルするには、cancelPeripheralConnections: を使います。

- (CBCentralManager *)initWithDelegate:(id)delegate queue:(dispatch_queue_t)queue;

指定したデリゲートとディスパッチキューで、セントラルマネージャを初期化します。

  • queue
    • イベントを処理するキューを指定します。nilならばメインキューがデフォルトでつかわれます。

- (void)retrieveConnectedPeripherals;

システムに今在接続しているペリフェラルの一覧を取得するようにセントラルに問い合わせます。
問い合わせ結果はデリゲートを通して通知されます。

- (void)retrievePeripherals:(NSArray *)peripheralUUIDs;

UUIDで指定したペリフェラルの一覧をセントラルに問い合わせます。

  • peripheralUUIDs
    • 取得するCBPeripheralの CFUUIDRef のリスト。

問い合わせ結果はデリゲートを通して通知されます。

- (void)scanForPeripheralsWithServices:(NSArray )serviceUUIDs options:(NSDictionary )options;

セントラルにペリフェラルのスキャンを要求します。

  • serviceUUIDs
    • アプリケーションが興味があるサービスの CBUUIDs の配列。
  • options
    • スキャンを指定するオプションを指定した辞書。 CBCentralManagerScanOptionAllowDuplicatesKey を参照。

ペリフェラルそれぞれを発見する都度、デリゲートのコールバックが呼ばれます。”serviceUUIDs”でCBUUIDの配列が指定されている場合は、セントラルはそのサービス、もしくはそれらのサービスをアドバタイズしているペリフェラルのみを返します(推奨)。
“seriviceUUIDs”がnilの場合は、発見したすべてのペリフェラルを返します(非推奨)。
セントラルが、すでに異なるパラメータでスキャンしている場合は、指定したパラメータがそれを置換します。

- (void)stopScan;

セントラルにペリフェラルのスキャンを停止するよう問い合わせます。

定数

CBCentralManagerScanOptionAllowDuplicatesKey

このキーにはNSNumber(Boolean)の値が対応します。値がYESのとき、
ペリフェラルのスキャンで、重複したデバイスをフィルタリングをしません。デフォルトでは、同じペリフェラルを複数回発見したときは、1回の発見イベントに集約します。このフィルタリングを無効にすると、バッテリーの稼働時間に不利な影響をもたらすかもしれませんから、必要なときにだけ利用します。

scanForPeripheralsWithServices:options: を参照してください。

CBConnectPeripheralOptionNotifyOnConnectionKey

iOS6から有効です。

このキーには、NSNumber(Boolean)の値が対応します。値は、アプリケーションがサスペンドしている時に、
あるペリフェラルとの接続が確立したならば、
それをシステムがアラート表示すべきことを示します。

この設定は、アプリケーションが
bluetooth-central バックグラウンド・モード
を指定していないために、アプリケーションが自分でアラート表示できないときに便利です。

あるペリフェラルに対して、2つ以上のアプリケーションがこの通知を要求していたならば、フォアグラウンドで最も最近に要求をしたアプリケーションが、通知を受け取ります。

CBConnectPeripheralOptionNotifyOnDisconnectionKey

このキーには、NSNumber(Boolean)の値が対応します。この値は、アプリがサスペンドしている時に、
あるペリフェラルが切断したならば、それをシステムがアラート表示すべきことを示します。

この設定は、アプリケーションが
bluetooth-central バックグラウンド・モード
を指定していないために、アプリケーションが自分でアラート表示できないときに便利です。

あるペリフェラルに対して、2つ以上のアプリケーションがこの通知を要求していたならば、フォアグラウンドで最も最近に要求をしたアプリケーションが、通知を受け取ります。

CBConnectPeripheralOptionNotifyOnNotificationKey

このキーには、NSNumber(Boolean)の値が対応します。この値は、アプリがサスペンドしている時に、
あるペリフェラルから受信したすべてののティフィケーション(ここでのノティフィケーションは、iOSのそれではなく、Bluetooth Low Energyの規格でいうノティフィケーションを示す)に対して、
それをシステムがアラート表示すべきことを示します。

この設定は、アプリケーションが
bluetooth-central バックグラウンド・モード
を指定していないために、アプリケーションが自分でアラート表示できないときに便利です。

あるペリフェラルに対して、2つ以上のアプリケーションがこの通知を要求していたならば、フォアグラウンドで最も最近に要求をしたアプリケーションが、通知を受け取ります。