2015-09-23 50 views
6

CBUUIDオブジェクトとNSUUIDオブジェクトの違いは?CBUUIDとNSUUIDの相違点

私はscanForPeripheralsWithServicesを両方のオブジェクトで別々のケースで塗りつぶすのを見ました... AppleはCBUUIDオブジェクトを期待していますので、このタイプを使用したいと思いますか?

マイ例:

let MY_SERVICE_UUID = CBUUID(string: "hdl83h6sd-gl95-bn4f-37gd-jd73hd0tn8za") func scanForPeripheralsWithServices(serviceUUIDs: MY_SERVICE_UUID,nil)

+0

あなたのcbuuidの例は無効です - それは16進数の0から9まででなければなりませんa-f – Paulw11

+0

それは残念です!あなたは完全に正しいです。 – godlyblade

答えて

11

アンNSUUID一意オブジェクト、型および他のアイテムを識別するために使用される128ビットの数値です。バイトとしてアクセスするか、文字列形式(68753A44-4D6F-1226-9C60-0050E4C00067)で一般的に使用されます。このクラスには、ランダムなUUIDと特別な値で初期化されたインスタンスの両方を作成するメソッドが含まれています。

Bluetoothは、特性とサービスに128ビットの識別子も使用します。 Bluetooth SIGは、多くの「よく知られた」サービスと特性を定義しています。これらは16ビットの値として表され、BluetoothベースのUUIDと組み合わされて128ビットの完全な値を取得します。

CBUUIDメソッドは、これらのよく知られた値を認識しており、自動的に16ビット値を128ビット相当値に変換できます。

例えば、CBUUID(string:"180F")でCBUUIDを初期化することはOKです(これはバッテリーです)。これは、CBUUIDを128ビット値で初期化することができます。サービス)であるが、NSUUID(string:"180F")はすべて128ビットを必要とするため失敗する。

コアのBluetoothを使用する場合は、サービスと特性にCBUUIDを使用します。周辺識別子にはNSUUIDが使用されます。これは、特別な値が定義されていない単なるMACであるためです。

+0

さて、もし私がサービスと特性のカスタマイズされた構造を自由に作成されたUUIDで使用するなら、私はNSUUID番号を使うべきですか?この場合、短い16ビットのUUIDを128ビットのUUIDに変換する必要がないからです。しかし、この場合のスキャン方法の予想される入力タイプに注意する必要がありますか?ありがとう! – godlyblade

+0

いいえ、CBUUIDを使用する必要があります。 CBUUIDの初期化子は、16ビットまたは128ビットの値を処理します。すべてのコアBluetooth機能でCBUUIDが使用されています。あなたが持っていた場合、NSUUIDを取るCBUUIDのイニシャライザがあります。 – Paulw11

+0

いいです、ありがとう! – godlyblade

関連する問題