Question

Je suis sûr à 99 % d'avoir suivi les instructions de configuration CoreBluetooth correctement.Quoi que je fasse, lorsque j'exécute cette application sur mon iPad mini, le Bluetooth indique qu'il est activé.Il dit qu'il recherche des appareils, mais il ne trouve absolument aucun appareil.Si je vais dans le menu Bluetooth de l'appareil, je vois d'autres appareils découverts.J'initialise le CBCentralManager.J'ai configuré centralManagerDidUpdateState.Quand c'est sûr, le Bluetooth est prêt, il appelle centralManager.scanForPeripheralsWithServices.Tout cela se passe correctement.Mais ma fonction de délégué centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) on ne l'appelle jamais.Mon code est très simple.Il me manque peut-être quelque chose, mais j'ai pu confirmer que mon Macbook est un appareil BTLE et que mon iPad mini est également un appareil BTLE.Voici mon code.

import UIKit
import CoreBluetooth

class ViewController: UIViewController, CBCentralManagerDelegate {

    var centralManager:CBCentralManager!
    var blueToothReady = false

    override func viewDidLoad() {
        super.viewDidLoad()
        startUpCentralManager()
    }

    func startUpCentralManager() {
        println("Initializing central manager")
        centralManager = CBCentralManager(delegate: self, queue: nil)
    }

    func discoverDevices() {
        println("discovering devices")
        centralManager.scanForPeripheralsWithServices(nil, options: nil)
    }

    func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {
        println("Discovered \(peripheral.name)")
    }

    func centralManagerDidUpdateState(central: CBCentralManager!) {
        println("checking state")
        switch (central.state) {
            case .PoweredOff:
            println("CoreBluetooth BLE hardware is powered off")

            case .PoweredOn:
            println("CoreBluetooth BLE hardware is powered on and ready")
            blueToothReady = true;

            case .Resetting:
            println("CoreBluetooth BLE hardware is resetting")

            case .Unauthorized:
            println("CoreBluetooth BLE state is unauthorized")

            case .Unknown:
            println("CoreBluetooth BLE state is unknown");

            case .Unsupported:
            println("CoreBluetooth BLE hardware is unsupported on this platform");

        }
        if blueToothReady {
            discoverDevices()
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
Était-ce utile?

La solution

J'ai dû faire de la publicité pour mon MacBook.Une fois que j'ai fait ça en utilisant https://github.com/mttrb/BeaconOSX cela a fonctionné exactement comme je l'avais écrit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top