[ios] Wie man den Status von Bluetooth (ON / OFF) im iphone programmatisch erhält



2 Answers

Um die Standard-Warnmeldung zu deaktivieren, müssen Sie beim Instanziieren des CBPeripheralManager nur ein Optionswörterbuch durchlaufen:

SWIFT getestet auf iOS8 +

import CoreBluetooth

//Define class variable in your VC/AppDelegate
var bluetoothPeripheralManager: CBPeripheralManager?

 //On viewDidLoad/didFinishLaunchingWithOptions
let options = [CBCentralManagerOptionShowPowerAlertKey:0] //<-this is the magic bit!
bluetoothPeripheralManager = CBPeripheralManager(delegate: self, queue: nil, options: options)

Natürlich müssen Sie auch die CKManagerDelegate-Delegate-Methode peripheralManagerDidUpdateState wie oben beschrieben implementieren:

func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager!) {

    var statusMessage = ""

    switch peripheral.state {
    case .poweredOn:
        statusMessage = "Bluetooth Status: Turned On"

    case .poweredOff:
        statusMessage = "Bluetooth Status: Turned Off"

    case .resetting:
        statusMessage = "Bluetooth Status: Resetting"

    case .unauthorized:
        statusMessage = "Bluetooth Status: Not Authorized"

    case .unsupported:
        statusMessage = "Bluetooth Status: Not Supported"

    case .unknown:
        statusMessage = "Bluetooth Status: Unknown"
    }

    print(statusMessage)

    if peripheral.state == .poweredOff {
        //TODO: Update this property in an App Manager class
    }
}
Question

Ich versuche, den Status von iPhone / iPod Bluetooth zu erhalten, ob es programmgesteuert oder ausgeschaltet ist. Ist es möglich, eine Apple API oder eine API von Drittanbietern zu verwenden?




Einige Updates zur BadPirate-Antwort, mit iOS7 können Sie festlegen, dass der zentrale Manager die Warnung nicht anzeigt, wenn das Manager-Objekt zugewiesen wird, indem ein NSDictionary mit dem Schlüssel "CBCentralManagerOptionShowPowerAlertKey" auf 0 gesetzt wird.

self.cbManager = [[CBCentralManager alloc] initWithDelegate:self
                                                          queue:nil
                                                        options:
                      [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0]
                                                  forKey:CBCentralManagerOptionShowPowerAlertKey]];



Diese Lösung ist etwas alt, bevor Apple Core Bluetooth eingeführt

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // Override point for customization after application launch.


        Class BluetoothManager = objc_getClass( "BluetoothManager" ) ;
        id btCont = [BluetoothManager sharedInstance] ;
        [self performSelector:@selector(status:) withObject:btCont afterDelay:1.0f] ;

        return YES ;
    }


    - (void)status:(id)btCont
    {
        BOOL currentState = [btCont enabled] ;
        //check the value of currentState 

    }





Related