iBeacon广播开始,立即停止

时间:2014-12-07 13:46:32

标签: ios swift ibeacon

我正在尝试使用Swift从iOS 8.1+设备进行广播。当我运行应用程序时,它成功广播 ...但只有一秒钟。我知道这是因为,从另一台带有'扫描仪'应用程序的设备,我看到了灯塔出现; “开机”的打印声明也按预期显示。

我在peripheralManagerDidUpdateState中有其他打印语句,但它们从未被调用过,所以我不知道为什么广播停止这么快。

尝试做任何花哨的事情(监视区域,确定接近度,在后台广播等) - 这只是一个普通的,普通的iBeacon从前台发送。

import CoreBluetooth

class ViewController: UIViewController, CBPeripheralManagerDelegate {
    var beaconRegion = CLBeaconRegion()
    var beaconData = NSDictionary()
    var beaconManager = CBPeripheralManager()

    ...

随后:

self.beaconRegion = CLBeaconRegion(proximityUUID: bleUuid, 
                                   major: bleMajor, 
                                   minor: bleMinor, 
                                   identifier: "com.please.work")

稍后,发起广播:

self.beaconData = self.beaconRegion.peripheralDataWithMeasuredPower(nil)
self.beaconManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)

代表:

func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager!) {
    if(peripheral.state == CBPeripheralManagerState.PoweredOn) {
        println("powered on")
        self.beaconManager.startAdvertising(self.beaconData)
    } else if(peripheral.state == CBPeripheralManagerState.PoweredOff) {
        println("powered off")
        self.beaconManager.stopAdvertising()
    }
    else {
        println("something else changed")
    }
}

更新

这可能是由于我的设备(iPhone 6)出现问题;这是我的观察:

  1. 重新启动设备可以解决问题。

  2. 我在普通应用中看到了现象。首先,我开始发布:iBeacon Emitter app。然后(在另一台设备上),我用这个iBeacon Scanner app注册UUID和监视器。设备出现,但在〜分钟后,它会消失。此后,如果我切换发射设备,我会看到我正在排除故障的快速开/关行为。

  3. 更多关注,这种行为发生在各种应用中。如果我重新启动(并清除问题,请参阅#1),然后导致问题(请参阅#2)......然后通过其他发射器/扫描仪应用程序显示问题。

2 个答案:

答案 0 :(得分:2)

我将此问题诊断为"Knock to Unlock" app与某种低级蓝牙冲突。

"敲开解锁"使用BLE与计算机进行双向通信。在我卸载应用程序的那一刻,问题就解决了。我希望这可以使同一案件中的某人有点恶化。

答案 1 :(得分:0)

一些想法:

  1. 您确定CBPeripheralManager实例不会超出范围或被覆盖并进行垃圾回收,您的ViewController是否仍在前台并且屏幕未锁定?

  2. 尝试使用免费Locate应用程序之类的其他发射器应用程序来验证它不是设备特定问题。

  3. 如果定位应用在同一设备上运行,那么您的应用中必须有其他内容在以后干扰广播。也许您可以在Github或其他地方共享代码,以便其他人可以测试。