2014-02-14 13 views
8

Die CBCentralManagerScanOptionSolicitedServiceUUIDsKey Option ist verfügbar, wenn das Scannen nach Geräten in CoreBluetooth, die Dokumentation wirdZweck der CBCentralManagerScanOptionSolicitedServiceUUIDsKey

diese Scan-Option Festlegen des zentralen Manager verursacht auch für Peripheriegeräte scannen jede der in der Anordnung enthaltenen Dienste erbittet .

Was ist der Zweck dieser Option? Was ist ein "angeforderter Service"? Wie unterscheidet es sich von der Angabe der Service-UUID im Services-Array?

+2

"Was ist der Zweck dieser Option?" Sie wollten sehen, wie lange ein Identifikator sie bekommen konnte. – Kevin

Antwort

13

Wie ich verstehe, bedeutet Service Solicitation, dass das Peripheriegerät angeben kann, welche Dienste es in der Zentrale verwenden soll, wenn die Verbindung stattfindet. Zum Beispiel haben Sie eine ANCS Peripherie (eine Smartwatch oder was auch immer), die sich selbst ankündigt und den ANCS-Dienst als angeforderten Dienst zu der Werbung hinzufügt. Dies zeigt der Zentrale an, dass dieses Peripheriegerät nach dem Verbinden nach dem ANCS-Dienst suchen wird. Im Fall von iOS führt dies dazu, dass der Benutzer eine Verbindung zu dem Peripheriegerät aus der Bluetooth-Geräteliste herstellen kann, ohne dass Apps ausgeführt werden müssen.

Im aktuellen Core Bluetooth Implementierung dieses zwischen zwei iOS-Geräten nicht wirklich machbar ist. Aber wenn Sie einen CBPeripheralManager mit den angeforderten Diensten initialisieren (keine Notwendigkeit, diese zu werben) und eine CBCentralManager verwenden, um nach Peripheriegeräten zu suchen, die diese angeforderten Dienste verwenden möchten, dann wird das gescannte Peripheriegerät am Ende wahrscheinlich die von Ihre CBPeripheralManager sobald die Verbindung hergestellt ist. Zwei iOS-Geräte können dies derzeit nicht tun, da es keine API gibt, um die angeforderten Dienste zu der Werbung hinzuzufügen. (Connecting zurück von der peripheren Seite kann möglich sein, wenn die retrieveConnectedPeripheralsWithServices Methode auf den CBCentralManager das andere Ende als CBPeripheral zurückgegeben, wenn es seine hat CBPeripheralManager initialisiert.)

Verwandte SO Frage: Bluetooth LE and ANCS in iOS
referenzierte Blog-Post: http://blog.punchthrough.com/post/63658238857/the-apple-notification-center-service-or-wtf-is

Bluetooth-Spezifikation V4.0 Vol 3. Teil C Abschnitt 11.1.9

11.1.9 Service-Solicit

Einer der Service Solicitation AD-Typen kann gesendet werden, um andere Geräte einzuladen, die einen oder mehrere der in den Service Solicitation-Daten für die Verbindung angegebenen -Dienste bereitstellen. Das Gerät sollte sich im ungerichteten Modus und in einem der aufrufbaren Modi befinden. Dies ermöglicht eine Zentrale Bereitstellung von einem oder mehreren der diese Dienste zu diesem Peripheral zu verbinden, so dass der Peripheral die Dienste auf dem Zentral nutzen können.