簡體   English   中英

使用CoreLocation和iBeacons的問題

[英]Problems using CoreLocation and iBeacons

我想構建一個具有室內本地化的應用程序(我知道藍牙不是那么精確,但是起初值大概就足夠了)。 我的問題是,在關閉和打開藍牙后,我只能對放置在房間中的信標進行10秒的定位。 奇怪的是,打開和關閉藍牙可以解決問題(同樣持續10秒鍾)。

這是我的簡單測試應用程序的代碼片段:

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
   BOOL beaconFound = NO;
   for(CLBeacon *beacon in beacons)
   {
       if(beacon.proximity == CLProximityNear)
       {
           _textView.text = @"A Beacon is Near!";
           beaconFound = YES;
       }
   }
   if(!beaconFound)
       _textView.text = @"No Beacon is Near";
}

是iOS上的某種節能方式嗎? 我對此沒有其他解釋,但是似乎沒有其他人有這個問題。 我還嘗試在iPad上對模擬iBeacon進行測距,但結果卻相同。

我希望能夠不斷地對信標進行測距,我做錯了嗎?

提前致謝

我不確定您是在前台還是在后台進行測距。 我相信,如果您在后台執行此操作,iOS將僅允許您在locationManager停止之前的一段時間內進行測距。

另一件事是,您僅檢查CLProximityNear。 您可能要嘗試檢查三個區域。 我確實測試了startRangingBeaconsInRegion,結果是在Near和Far之間有時在Instant之間來回跳躍。 希望能有所幫助。

switch (beacon.proximity) {
     case CLProximityImmediate:
          _textView.text = @"A Beacon is Immediate!";
          beaconFound = YES;
          break;
     case CLProximityNear:
          _textView.text = @"A Beacon is Near!";
          beaconFound = YES;
          break;
     case CLProximityFar:
          _textView.text = @"A Beacon is Far!";
          beaconFound = YES;
          break;
     default:
          break;
}

嘗試刪除此限定符:

if(信標。鄰近度== CLProximityNear)

我懷疑您與信標的距離通常返回不同的值(也許是CLProximityFar或CLProximityImmediate)。 如果為true,則您會在最初的10秒鍾內看到結果的原因是,在此期間,接近值會反彈很多。 這可能會導致您在距離估算值穩定之前的這段時間內與CLProximityNear匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM