iOS位置后台模式运行时间

标签 ios cllocationmanager ibeacon

我们正在使用信标和 iOS 进行一些工作,并研究在我们首次进入信标范围和向用户发出通知之间应用去抖动的选项。

所以流程是,

  1. 进入信标范围。
  2. 开始计时。
  3. 计时器到期,发布通知。

当应用程序在前台时,他们似乎没有任何复杂的做法,但我不确定这将如何在应用程序关闭时工作。

如果我们注册位置背景模式,那么当我们进入信标范围时应用程序将启动,但我不清楚我们将允许应用程序运行多长时间。如果只允许应用程序运行很短的时间,那么我们将没有时间启动计时器并让它过期。

任何人都可以阐明位置后台模式允许应用程序在这样的后台启动时执行多少时间吗?

最佳答案

我建议,一旦您进入信标区域,您就开始对信标进行测距 - 这将以每秒一次的速率为您提供测距回调 - 即使您的应用程序处于后台。您可以计算这些事件并使用它来确定何时发布通知。此时您可以停止对信标进行测距。

- (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];
        }
}

因为这是使用位置后台模式,所以对可用后台时间量没有总体限制,但是每次调用委托(delegate)方法有几秒钟的限制 - 但这段代码不会接近那个。

关于iOS位置后台模式运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273316/

相关文章:

ios - Kontakt iBeacon 返回零

ios - 在信标区域内每 10 分钟更新一次应用程序

ios - 什么时候使用 NSDecimal、NSDecimalNumber 而不是 double 更好?

ios - didSelectItemAt 和 didDeselectItemAt 在 swift 3.0 中没有按预期工作

iphone - 如何将图像和数据传递到另一个 View ?

ios - 如何在ios中以终止状态获取每200米的位置

ios - 在 Objective-C 中动态创建对象

ios - 打印到标签的距离

ios - Mapkit中有没有什么函数可以一直跟踪当前可见区域?

ios - 如何将数据发送到变成 iBeacon 的 iphone?