首页 > 解决方案 > CoreBluetooth peripheralManager 广告在后台停止

问题描述

我想将 ıos 手机用作 ibeacon。我使用了以下代码。广告在应用程序在前台时开始,但在屏幕锁定或应用程序在后台时不起作用。我使用了 BackgroundModes“充当蓝牙 LE 配件”和“蓝牙外设使用说明”。

  var localBeacon: CLBeaconRegion!
  var beaconPeripheralData: NSDictionary!
  var peripheralManager: CBPeripheralManager!
  let localBeaconUUID = "XXX"
  let localBeaconMajor: CLBeaconMajorValue = 0
  let localBeaconMinor: CLBeaconMinorValue = 0
  let identifier = "allbeacons"

  override init() {
    super.init()

  }
  func initLocalBeacon() {
    if localBeacon != nil {
      stopLocalBeacon()
    }
    let uuid = UUID(uuidString: localBeaconUUID)!
    localBeacon = CLBeaconRegion(proximityUUID: uuid, major: localBeaconMajor, minor: localBeaconMinor, identifier: identifier)
    beaconPeripheralData = localBeacon.peripheralData(withMeasuredPower: nil)
    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: Any])
    }
    else if peripheral.state == .poweredOff {
      peripheralManager.stopAdvertising()
    }
}

标签: swiftcore-bluetooth

解决方案


推荐阅读