2011-12-29 3 views
9

私はCFUUIDがMACアドレスと他のいくつかのものから生成されることを知っています。では、CFUUIDからMACアドレスを取得する方法はありますか?iOSがCFUUIDをMACアドレスに変換する

私たちはいくつかのBluetoothデバイスを持っていて、すべてのユーザーが知っているのは、デバイスに書き込まれたMACアドレスの最後の3つの部分です。だから私たちは、正しいデバイスを選択するためのユーザーとオプションを提供したい。 iOS側では、私たちがCFUUIDを持っているように見えます。では、UUIDをMACアドレスに変換する方法はありますか?あなたがあなたの質問にコメントから学んだ可能性があるとして

Or even better would be if there's a way to get a peripheral's MAC address directly instead of UUID, but doesn't seem like that's possible

おかげ

+2

CFUUIDはMACから生成されません。どのようにそれを派生させますか?MACを取得してHTTPや他のプロトコル経由で送る方が簡単だと私は確信しています。 – Eimantas

+0

私はiPhoneのUUIDについて話しているわけではありません。私はPeripheralのUUIDについて話しています。私はUUIDがMACアドレスと現在の時刻の組み合わせから作成されていることをオンラインで読んでいます。 – user1122025

+0

CoreBluetoothのコンテキストでCFUUID、さらにはCBPeripheralのコンテキストでより具体的に話をしていることが、はっきりしているはずです。 CBPeripheralsがアドレスプロパティではなくUUIDプロパティを持っていることは奇妙です。なぜなら、それらが表現するブルートゥースデバイスはアドレスを持ち、UUIDではないからです。したがって、CBPeripheralに接続された特定のUUIDは、Bluetoothデバイスのアドレスに基づいていますが、これについての確認はありませんでした。 – barrycburton

答えて

1

まあ、答えは明らかです:NO。特定のUUIDを生成したシードを取得することは(実際上は)不可能です。あなたのUUIDを生成したアルゴリズムでは、あなたのデバイスのMACアドレスを使ってそれを生成していましたが、あなたがUUID Generatorコードにアクセスできない限り、使用しているUUIDジェネレータの場合は保証できませんアルゴリズム(UUID Version 1 probably?)であり、あなたには不透明な操作ではありません(直ちにUUID生成アルゴリズムの目的を破ってください)。

UUIDの生成時に、デバイスのMACアドレス、タイムスタンプ、ハッシュ、UDID(iOSデバイス)などの他のコンポーネントが使用される場合があります。実際、MACアドレスは、UUIDを生成するために使用された多くの要素の1つに過ぎません。そのため、同じシステムで生成されたUUIDの大きなサンプルから解体しようとすると、同じ条件。おそらく、コンピューティングパワーを浪費する量子コンピュータについて、観察可能な宇宙の粒子と同じくらい多くの組み合わせを探そうとしているので、あなたが望むならばBluetooth周辺機器の特性として得られるかもしれないMACアドレスを得て、もう一度UUIDを取得する目的です。

あなたの質問に誰かがコメントしたこと:さらに、UUIDsがとても退屈で、前の段落のアイデアの上に構築されている理由は、衝突を避けることができるからです。あなたのコンピュータによって生成されますが、毎日あらゆるデバイスによって生成された他のすべてのもの(リクエストの認証、データベース内の文字列インデックスキーの作成、またはサービスと特性の識別のために生成される)から、

AAAAAAAA-BBBB-CCCC-DDDD-EEEEFFFF6666 

同じUUIDを持つ別のクールなfooサービスまたは特性と混同されることはありません。

詳細については、wikipediaまたはCore Bluetoothプログラミングガイドを参照してください。開発者ポータルを作成してください。それはまだNDAの下にありますので、あなたはそれを読むためのアクティブな開発者プログラムの資格を持つ登録済みのiOS開発者でなければなりません。

1

私は、BLEデバイスのプラットフォームに依存しない静的な設定を展開する方法を探していました。私は落胆していた(AppleのUUIDは+/-無意味で、ほとんどの/他のすべてのプラットフォームで入手できるMAC/BDADDRはCoreBluetoothからアクセスできない)。幸いにも、私は、 "デバイス情報サービス"プロファイル(0x180A)に、デバイス固有のMAC/BDADDRアドレスをエンコードする "システムID"属性(0x2A23)が含まれていることに気付きました。ただし、BLEデバイスがこのサービスを公開することが必須かどうかはわかりません。

関連する問題