Zweck von CBCentralManagerScanOptionSolicitedServiceUUIDsKey

8

Die Option CBCentralManagerScanOptionSolicitedServiceUUIDsKey ist verfügbar, wenn nach Geräten in CoreBluetooth gesucht wird, die Dokumentation besagt

  

Wenn Sie diese Scanoption angeben, scannt der zentrale Manager ebenfalls   für Peripheriegeräte, die einen der in dem Array enthaltenen Dienste anfordern.

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

    
Nick 14.02.2014, 17:15
quelle

1 Antwort

13

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

In der aktuellen Core Bluetooth-Implementierung ist dies zwischen zwei iOS-Geräten nicht wirklich möglich. Wenn Sie jedoch einen CBPeripheralManager mit den angeforderten Diensten initialisieren (müssen diese nicht ankündigen) und eine CBCentralManager verwenden, um nach Peripheriegeräten zu suchen, die diese angeforderten Dienste verwenden möchten, wird das gescannte Peripheriegerät am Ende wahrscheinlich in der Lage sein, die Dienste zu verwenden Wird von Ihrer CBPeripheralManager bereitgestellt, sobald die Verbindung hergestellt wurde. Zwei iOS-Geräte können dies derzeit nicht tun, da es keine API gibt, um die angeforderten Dienste zu der Werbung hinzuzufügen. (Eine Verbindung von der Peripherie her ist möglich, wenn die Methode retrieveConnectedPeripheralsWithServices für CBCentralManager das andere Ende als CBPeripheral zurückgegeben hat, wenn CBPeripheralManager initialisiert wurde.)

Verwandte SO Frage: Bluetooth LE und ANCS in iOS Referenzierter Blogpost: Ссылка

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

  

11.1.9 Serviceanfrage

     

Einer der Service Solicitation-AD-Typen kann gesendet werden, um andere Geräte einzuladen, die einen oder mehrere der folgenden anzeigen   Dienste, die in den Service Solicitation-Daten angegeben sind, um eine Verbindung herzustellen. Das   Gerät sollte in der ungerichteten Verbindung Modus und in einem der sein   erkennbare Modi. Dies ermöglicht eine zentrale Bereitstellung von einem oder mehreren von   Diese Dienste verbinden sich mit diesem Peripheriegerät, so dass das Peripheriegerät   kann die Dienste auf dem Central verwenden.

    
allprog 15.02.2014, 22:07
quelle