10

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

いくつかの Bluetooth デバイスがあり、ユーザーが知っているのは、デバイスに書き込まれている MAC アドレスの最後の 3 つの部分だけです。そのため、ユーザーに適切なデバイスを選択するオプションを提供したいと考えています。iOS 側では、CFUUID しか持っていないように見えます。UUID を MAC アドレスに変換する方法はありますか?

または、UUIDの代わりに周辺機器のMACアドレスを直接取得する方法があればさらに良いでしょうが、それは可能ではないようです

ありがとう

4

3 に答える 3

1

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

于 2014-02-15T04:12:15.203 に答える
1

あなたの質問へのコメントから学んだかもしれませんが、答えは明らかに NO です。特定の UUID を生成したシードを (実際には) 取得することはできません。実際、UUID を生成したアルゴリズムがデバイスの MAC アドレスを使用してそれを生成したとすると、UUID ジェネレーター コードにアクセスできないか、またはアルゴリズム (おそらく UUID バージョン 1? ) であり、それはあなたにとって不透明な操作ではありません (uuid 生成アルゴリズムの目的そのものを即座に無効にします)。

UUID の生成にデバイスの MAC アドレス、タイムスタンプ、ハッシュ、UDID (iOS デバイス) などの他のコンポーネントが使用される可能性があると言うとき、あなたは明らかに何かを理解しています。実際には、MAC アドレスは UUID を生成するために使用される多くの要因の 1 つにすぎない可能性があるため、同じシステムで生成された UUID の大きなサンプルからそれを分解しようとするために多くの計算能力を費やす場合、同じ条件; おそらく、観測可能な宇宙の粒子と同じ数の組み合わせを探索しようとして計算能力を浪費する量子コンピューターについて話しているので、必要に応じてBluetooth周辺機器から特性として取得することもできるMACアドレスを取得し、偶然に打ち負かしますそもそもUUIDを持つ目的がもう一度あります。

一方、誰かがあなたの質問にコメントしたことに加えて、前の段落のアイデアの上に構築された UUID が非常に退屈だと感じる理由は、衝突を回避できるようにするためです。コンピューターによって生成されたものだけでなく、重複を生成するしかし、あらゆる瞬間にそこにあるすべてのデバイスによって生成される他のすべてのもの (リクエストを認証するため、データベースに文字列インデックス キーを作成するため、またはサービスと特性を識別するため) から、あなたのクールなサービスまたは特性は次のように命名されます:

AAAAAAAA-BBBB-CCCC-DDDD-EEEEFFFF6666 

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

一般に、詳細については、ウィキペディアを確認するか、開発者ポータルからコア Bluetooth プログラミング ガイドを参照してください。これはまだ NDA の下にあるため、それを読むには、アクティブな開発者プログラムの資格情報を持つ登録済みの iOS 開発者である必要があります。

于 2013-09-03T12:19:13.913 に答える