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.
"Was ist der Zweck dieser Option?" Sie wollten sehen, wie lange ein Identifikator sie bekommen konnte. – Kevin