2014-12-07 126 views
0

我想从使用Swift的iOS 8.1+设备进行广播。当我运行该应用程序时,它确实成功地播出了 ...但只有一秒钟。我知道这一点,因为从具有“扫描仪”应用的其他设备,我看到信标出现; “打开电源”的打印语句也按预期显示。iBeacon广播开始,立即停止

我在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") 
    } 
} 

UPDATE

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

  1. 重新启动设备清除问题。

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

  3. 更多关于,行为发生在各个应用程序之间。如果我重新启动(并清除问题,请参阅#1),然后导致此问题(请参阅#2)...问题会通过其他发射器/扫描仪应用程序出现。

回答

2

我诊断出这个问题,因为某种低级蓝牙与"Knock to Unlock" app冲突。

“敲打打开”使用BLE用于计算机的双向通信。我卸载应用程序的那一刻,问题就解决了。我希望这可以为同一案件中的某个人省点小事。

+0

很高兴你找到它。是的,敲击应用程序可能会有问题,因为它试图连接它所看到的每个蓝牙广告设备。之前我没有注意到它会阻止iOS设备进行广告。 – davidgyoung 2014-12-08 23:24:50

0

的一点想法:

  1. 你确定你的CBPeripheralManager实例不会超出范围或被覆盖和垃圾收集,您的ViewController仍在前台和屏幕没有被锁定?

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

  3. 如果定位应用程序在同一个设备上工作,那么在您的应用程序中必须有其他的东西在晚些时候干扰广播。也许你可以在Github或其他地方分享代码,以便其他人可以测试。

+0

我刚刚尝试从另一个应用程序发射并观察到相同的行为。将此添加到主线程。 – Dan 2014-12-07 16:19:33

+0

我还没有亲眼目睹iPhone iOS 6上的这一行为。其他应用可能会干扰您的传输。您可以尝试暂时卸载您认为可能使用蓝牙的任何其他应用程序。 – davidgyoung 2014-12-07 21:34:45