2014-10-09 86 views
1

我們正在做一些與信標和iOS的工作,並研究在我們第一次進入信標範圍和我們向用戶發出通知時之間應用去抖動的選項。iOS位置背景模式運行時間

因此,流量爲,

  1. 走了燈塔的範圍。
  2. 啓動計時器。
  3. 計時器到期,發佈通知。

當應用程序處於前臺狀態時,它們似乎沒有任何複雜性,但我不確定這將如何在應用程序關閉時起作用。

如果我們註冊位置背景模式,那麼當我們進入燈塔範圍時,應用程序就會開始工作,但我不清楚應用程序允許我們運行多長時間。如果應用程序只允許運行很短的時間,那麼我們將沒有時間啓動計時器並使其到期。

任何人都可以擺脫位置背景模式允許應用程序在這樣的背景下啓動多少執行時間?

回答

1

我建議您一旦進入信標區域,即可開始測距信標 - 即使您的應用程序位於後臺,您也可以以每秒一次的速率提供範圍內的回傳。您可以計數這些事件並使用它來確定何時發佈通知。此時您可以停止對燈塔進行測距。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { 
    [manager startRangingBeaconsInRegion:(CLBeaconRegion *)region]; 
    self.beaconCount=0; 
} 

-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region { 
    [manager stopRangingBeaconsInRegion:(CLBeaconRegion*)region]; 
} 

- (void)locationManager:(CLLocationManager *)manager 
     didRangeBeacons:(NSArray *)beacons 
       inRegion:(CLBeaconRegion *)region { 
     self.beaconCount++; 
     if (self.beaconCount > SOME_THRESHOLD) { 
      [manager stopRangingBeaconsInRegion:region]; 
      [self postLocalNotification]; 
     } 
} 

因爲這是使用所述位置背景模式沒有整體限制到可用的背景時間量,但對在幾秒鐘的委託方法的每一次調用的限制 - 但這代碼贏得」在那附近的任何地方。

+0

不等背景也不會永遠持續下去。當後臺執行時間到期時,測距將停止。 – dadalar 2014-10-09 08:28:23

+0

不,如果您指定了位置背景模式(並且在iOS 8上請求「始終」授權),那麼您可以無限期地在後臺進行範圍調整,就像您可以監視區域一樣。無論您只需要幾秒鐘的時間就可以確定您處於信標範圍內,然後您就可以顯示警報和結束測距。我會用一些示例代碼更新我的答案 – Paulw11 2014-10-09 08:37:59

+0

謝謝,這種方法很有意義 – user3617723 2014-10-09 14:06:37