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

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

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

これはCBPeripheralManagerクラスのリファレンスを、CoreBluetoothを理解するために必要最小限の部分を日本語訳したものです。

CBPeripheralManagerクラスは、peripheral roleへの入り口です。
コマンドは、その状態がCBPeripheralManagerStatePoweredOn のときにだけ、発行されるべきです。
2つ以上のCBPeripheralManagerを同時に使うことはサポートされませんし、そうした場合には不定の振る舞いをするでしょう。

CBperipheralManagerクラスは、iOS6以降で利用できます

プロパティ

@property(assign, nonatomic) id delegate;

Peripheralイベントを受信するデリゲート。

@property(readonly) CBPeripheralManagerState state;

Peripheralの現在の状態。初期値はCBPeripheralManagerStateUnknown。
値更新は、required なデリゲートのメソッド
peripheralManagerDidUpdateState:
に提供されます。

@property(readonly) BOOL isAdvertising;

Peripheralが、今データをアドバタイズしているか、いなかを示します。

インスタンス・メソッド

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

イニシャライザです。Peripheral roleのイベントは、指定されたキューで処理されます。
もしもキューがnilならば、メインキューが使われるでしょう。

  • delegate
    • Peripheral roleイベントを受け取るデリゲート。
  • queue
    • イベントを処理するdispatch queue。

- (void)startAdvertising:(NSDictionary *)advertisementData;

アドバタイズメントを開始します。サポートされているアドバタイズメント・データ・タイプは、CBAdvertisementDataLocalNameKey と CBAdvertisementDataServiceUUIDsKey です。

アプリケーションがフォアグランドのときは、
初期のアドバタイズメント・データを、28バイトまで、
サポートされているアドバタイズメント・データ・タイプの任意の組み合わせに使えます。
もしこの領域を使い切ると、scan responseの10バイトを追加の領域として、ローカルネームに対してのみ、使えます。

このサイズは、新しいデータタイプそれぞれに必要な2バイトのヘッダ情報を含まないことに、注意してください。

割り当て領域に収まらなかったサービスUUIDsは、特別な”オーバフロー”領域に追加されます。したがって、それらのサービスUUIDは、
iOSデバイスが、それらを明示的にスキャンしたときにだけ、発見されます。

アプリケーションがバックグラウンドにあるときは、ローカルネームは使われず、すべてのサービスUUIDsは“オーバフロー”エリアに置かれます。

see peripheralManagerDidStartAdvertising:error:

seealso CBAdvertisementData.h

- (void)stopAdvertising;

アドバタイズを停止します。

- (void)setDesiredConnectionLatency:(CBPeripheralManagerConnectionLatency)latency forCentral:(CBCentral *)central;

すでにあるセントラルとの接続の、コネクション・レイテンシを希望する値に設定します。
コネクション・レイテンシの変更は保証されず、したがって結果として得られる遅延は、指定したものとは違うかもしれません。
もしも望むレイテンシが設定されないなら、接続が確立した時にセントラルが選んだレイテンシが使われます。
一般に、レイテンシを変更する必要はありません。

see CBPeripheralManagerConnectionLatency

- (void)addService:(CBMutableService *)service;

サービスと、それに関連付けられたcharacteristic(s)をローカルデータベースに公開します。もしもサービスがincluded serviceを含むなら、
まずincluded serviceが最初に公開されねばなりません。

  • service
    • GATTサービス

see peripheralManager:didAddService:error:

- (void)removeService:(CBMutableService *)service;

ローカルデータベースから、公開されたサービスを削除します。もしもサービスがincluded serviceを含むならば、まず最初にincluded serviceが削除されねばなりません。

- (void)removeAllServices;

ローカルデータベースから、すべての公開されているサービスを削除します。

- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result;

peripheralManager:didReceiveReadRequest: もしくは peripheralManager:didReceiveWriteRequests: のデリゲートのメソッドで受信したリクエストに応答するのに使います。

  • request
    • セントラルから受信されたオリジナルのリクエスト
  • result
    • request を満たそうとした結果

see peripheralManager:didReceiveReadRequest:

see peripheralManager:didReceiveWriteRequests:

- (BOOL)updateValue:(NSData )value forCharacteristic:(CBMutableCharacteristic )characteristic onSubscribedCentrals:(NSArray *)centrals;

1つもしくはそれ以上のセントラルに、更新されたcharacteristicの値を、notificationもしくはindicationで送信します。

返り値は、アップデートが送信されたならばYES、送信キューが満杯ならばNO。
もしNOが返ってきたら、スペースが有効になった時に1度、デリゲートの peripheralManagerIsReadyToUpdateSubscribers: メソッドが呼ばれる。したがって、もしも望むならば、アップデートを再送信する。

  • value
    • notification/indicationで送信される値
  • characteristic
    • 値が変化したcharacteristic。
  • centrals
    • アップデートを受け取るCBCentralオブジェクトのリスト。characteristic を購読していないセントラルは無視されることに注意する。もしもnilならば、characteristicが購読するセントラルすべてが更新される。
      see peripheralManager:central:didSubscribeToCharacteristic:

see peripheralManager:central:didUnsubscribeFromCharacteristic:

see peripheralManagerIsReadyToUpdateSubscribers:

列挙型

CBPeripheralManagerState

CBperipheralManagerの現在の状態を表します。

  • CBPeripheralManagerStateUnknown
    • 不明な状態。すぐに更新されます。
  • CBPeripheralManagerStateResetting
    • システムサービス都の接続が、一時的に失われました。すぐにアップデートされます。
  • CBPeripheralManagerStateUnsupported
    • そのプラットフォームはBluetooth Low Energy Peripheral/Server roleをサポートしません。
  • CBPeripheralManagerStateUnauthorized
    • アプリケーションはBluetooth Low Energy Peripheral/Server roleを使う権限がありません。
  • CBPeripheralManagerStatePoweredOff
    • Bluetoothは現在電源がオフです。
  • CBPeripheralManagerStatePoweredOn
    • Bluetoothは現在電源がオンで、利用できます。

CBPeripheralManagerConnectionLatency

Peripheral-central接続の遅延時間は、メッセージがどれほどの頻度で交換できるか、を制御します。

  • CBPeripheralManagerConnectionLatencyLow
    • バッテリーの持ち時間よりも、素早い通信を優先します。
  • CBPeripheralManagerConnectionLatencyMedium
    • 通信の頻度とバッテリーの持ち時間とのバランスを取ります。
  • CBPeripheralManagerConnectionLatencyHigh
    • 素早い通信よりも、バッテリーの持ち時間を伸ばすことを優先します。