4

CoreBluetooth Framework に関する問題に直面しました。

例として、2 つのデバイスがあり、各デバイスが広告とスキャンの両方を実行します。だから、私はそれぞれにCBCentralManagerandを使いCBPeripheralManagerます。

したがって、問題を単純化するために、Device1がブロードキャストを行い、 Device2がスキャンを行っていると仮定しましょう。

Device2CBCentralManagerDevice1を検出する、コールバック centralManager:didDiscoverPeripheral:advertisementData:RSSI: が呼び出され、 を呼び出してDevice1識別子を取得できます[peripheral.identifier UUIDString]

ローカル デバイス ( Device2 ) 識別子を取得するにはどうすればよいですか? 両方のデバイスがアドバタイズしている場合、Device1もDevice2を検出して周辺機器の識別子を取得しますが、 Device2でこの識別子 (ある種の自己アドレス) を正確に取得するにはどうすればよいですか?

PS この識別子はデバイスごとに一意ではなく、時間の経過とともに変化する可能性があることを知っていますが、それは問題ではありません。

4

1 に答える 1

11

残念ながら、これはできません。によって返される識別子は[peripheral.identifier UUIDString]、受信デバイスの iOS によって自動生成されます。これは、送信機の Mac アドレス (変更されない) と、デバイスが iOS によって認識されるようになった時間 (変更される) によってシードされます。

2 番目の要因は予測できず、ID 生成アルゴリズムが公開されていないため、送信機側でこの ID がどうなるかを予測できません。

要するに、予測可能な一意の ID が必要な場合、このフィールドは使用できません

于 2014-11-14T13:43:27.393 に答える