我要做到以下几点:运行的后台任务iOS中长时间与iBeacons
如果用户仍然还处于一个CLBeaconRegion
的时间(大约15分钟)长一段时间,我想能够执行一段代码。如果应用程序处于前台,此问题很简单,但我无法将后台时间延长到分配的时间。因为我正在使用定位服务,所以应该允许运行如此长的后台任务。
仅在用户移动时才在后台调用didEnterRegion
和didExitRegion
。似乎没有任何特定于位置的API允许您根据时间进行后台任务。
确实出现了其他想要达到同样效果的类似问题,例如提到的所有线程here。然而,这似乎并没有使提出的解决方案将用于CLBeaconManager
工作(这主要涉及禁用和启用CLLocationManager
当backgroundTimeRemaining
足够小,但我的这个解决方案最初尝试没有成功)
另一种方式我可以在有限的范围内做到这一点,即在15分钟内安排通知,并取消didExitRegion
中的通知。
但是,上面的解决方案感觉哈克或不足。有没有一种“优雅”的方式来实现我想要的?
我在Info.plist中启用了位置背景模式。检查'didEnterRegion'中的'backgroundTimeRemaining'确实表明它是无限的。但是,一段时间后检查'backgroundTimeRemaining'表明它仍然从180秒倒计时。 –
有趣。我想知道是否有区别,我有范围打开?如果这样做,也许你可以做15分钟,15分钟结束后停止。 – davidgyoung
不幸的是我无法复制你的结果。 (无论如何,我不认为我会在15分钟内离开范围)Ranging给了无限的'backgroundTimeRemaining'大约5秒钟,然后它又开始倒计时了。你是说只是启用位置背景模式会给无限的背景时间?这似乎与许多关于背景模式的文献相反。 –