3 votes

Dispositif iOS en tant qu'iBeacon, pourquoi cela ne fonctionne-t-il pas?

Je suis en train de créer une application iOS qui utilise PeripheralManager pour diffuser un UUID à un Central.

Je pense que mes permissions et Capacités sont en ordre, mais je ne trouve toujours pas mon balise lorsque je la recherche avec le central.

Est-ce que j'ai oublié quelque chose?

import UIKit
import CoreBluetooth
import CoreLocation

class ViewController: UIViewController, CBPeripheralManagerDelegate {

var localBeacon: CLBeaconRegion!
var beaconPeripheralData: NSDictionary!
var peripheralManager: CBPeripheralManager!

override func viewDidLoad() {
    super.viewDidLoad()
    initLocalBeacon()

}

func initLocalBeacon() {

    if localBeacon != nil {
        stopLocalBeacon()
    }

    let localBeaconUUID = "e276c0c0-d740-52e8-b778-9ae6e514269e"
    let localBeaconMajor: CLBeaconMajorValue = 1
    let localBeaconMinor: CLBeaconMinorValue = 1

    let uuid = UUID(uuidString: localBeaconUUID)!
    localBeacon = CLBeaconRegion(proximityUUID: uuid, major: localBeaconMajor, minor: localBeaconMinor, identifier: "Balise de Kristers")

    beaconPeripheralData = localBeacon.peripheralData(withMeasuredPower: -45)

    peripheralManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)

}

func stopLocalBeacon() {

    peripheralManager.stopAdvertising()
    peripheralManager = nil
    beaconPeripheralData = nil
    localBeacon = nil
}

func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {

    if peripheral.state == .poweredOn {
        peripheralManager.startAdvertising(beaconPeripheralData as! [String: AnyObject]!)

    } else if peripheral.state == .poweredOff {
        stopLocalBeacon()
    }
}

}

0voto

Krister Moen Points 293

Le problème était le scanner Bluetooth, il ne recherchait pas l'UUID de proximité spécifique. L'application Localiser balise est super, merci paul

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X