2013-05-07 5 views
11

Das Szenario ist wie folgt. Ich habe eine bereits eingerichtete App, die von Leuten benutzt wird. Ich bin unter Berücksichtigung einige experimentelle Bluetooth Low Energy Funktionen implementieren, aber bevor ich es tue, möchte ich eine "in der Wildnis" Umfrage der Anzahl der Benutzer, die bereits Bluetooth eingeschaltet/verlassen Bluetooth auf die ganze Zeit führen. Also möchte ich das im Hintergrund überprüfen und an einen Server Statistiken über die Anzahl der Benutzer mit Bluetooth senden, ohne Bluetooth zu verwenden.iOS CoreBluetooth überprüft passiv, ob Bluetooth aktiviert ist, ohne den Benutzer aufzufordern, Bluetooth einzuschalten

Ich habe instanziiert erfolgreich ein CBCentralManager in meiner Anwendung und kann den Bluetooth-Status abrufen sowohl unmittelbar nach der Instanziierung und wenn die Bluetooth Statusaktualisierungen über centralManagerDidUpdateState:. Das ist alles gut. Das Problem, das ich habe, ist, dass, wenn der Zustand CBCentralManagerStatePoweredOff ist, das Gerät eine Warnung anzeigt, die den Benutzer auffordert, Bluetooth einzuschalten, damit [App-Name] mit Zubehör verbinden kann. Es ist diese Aufforderung, die ich vermeiden möchte. In diesem Stadium möchte ich nur die Anzahl der Benutzer beobachten, die Bluetooth eingeschaltet haben - ich möchte die Bluetooth Verbindung nicht benutzen.

So, gibt es eine Möglichkeit, den Bluetooth-Status ohne Aufforderung des Benutzers zu überprüfen, wenn Sie nicht beabsichtigen, die Bluetooth-Verbindung zu verwenden?

Antwort

10

iOS 7 hat einen neuen options Parameter in der Erstellung von CBCentralManager, um dies auszuschalten.

Ich würde eine Lösung für frühere iOS lieben.

+1

Schöne finden. Beziehen Sie sich auf 'CBCentralManagerOptionShowPowerAlertKey'? Wenn Sie sich entscheiden, Ihre Antwort zu erweitern, um anzugeben, welcher Anruf an/weitergeleitet wird, werde ich dies als akzeptierte Antwort markieren. Ansonsten werde ich diese Antwort bearbeiten, wenn ich die Möglichkeit habe, sie noch einmal genauer zu betrachten. –

+2

Ja, benutze CBCentralManagerOptionShowPowerAlertKey, versuche myCentralManager = [[CBCentralManager Alloc] initWithDelegate: Selbstwarteschlange: keine Optionen: @ {CBCentralManagerOptionShowPowerAlertKey: [NSNummer numberWithBool: NO]}]; –

8

Sie können Folgendes verwenden, wenn Sie die CBCentralManager initialisieren.

NSDictionary *options = @{CBCentralManagerOptionShowPowerAlertKey: @NO}; 
self.manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options]; 

Ich habe es vielleicht nicht richtig erklärt, bitte rechts in den Kommentar, wenn es irgendeine Sorge ist.

+0

Dies funktioniert nicht für iOS 8.0 und höher – maxisme

+0

@Maximilian Sind Sie sicher? Es funktioniert auf meinem iOS 8.4.1 iPad Mini 2. –

+0

Wie ist der Weg, dass es in swift getan werden sollte? – po5i