2

28 バイトのペリフェラルの名前キー広告データを送信し、セントラルで受信するにはどうすればよいですか?

通常、UUID では、ペリフェラル名キーの広告データには 8 文字しかありません。

しかし、このトリックがあります:
名前キーが 28 文字で、中央の広告データが空である場合、28 文字すべてが中央の didDiscoverPeripheral の peripherl.name 変数に 1 回表示されることを発見しました。しかし、次にセントラルが同じデバイスをスキャンすると、代わりに「iPad」の GATT 値が取得されます (セントラルとペリフェラルが 2 台の iPad mini にあるためです)。

アップルドキュメント。は、通常は GATT を送信すると言いますが、28 文字の名前を常に 1 回送信することに気付きました。

背景: 読み取り値の交換を避けるために、周辺機器の広告データに識別データを入れたいと考えています。その理由は、デバイス間の通信交換を最短にして、時間とバッテリーを節約するためです。

スキャンをオフにしてから再びオンにし、広告を停止して再開しようとしました。同じ問題。

4

2 に答える 2

1

残念ながら、これは機能しません。接続すると、デバイス名の特性が CoreBluetooth によって読み取られ、後で周辺機器の名前として使用されます。設定した名前が常に表示される唯一の場所は、広告データです。

(lldb)po advertisementData

{
    kCBAdvDataChannel = 37;
    kCBAdvDataIsConnectable = 1;
    kCBAdvDataLocalName = MyPeripheral;
    kCBAdvDataServiceUUIDs =     (
        "Unknown (<e20a39f4 73f54bc4 a12f17d1 ad07a961>)"
    );
}

デバイス名特性は、iOS デバイスではどのような方法でもアクセスできません。

于 2013-09-23T20:46:41.833 に答える