2014-10-09 40 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