2014-12-07 124 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