gpt4 book ai didi

ios - 使用 iBeacons 在 iOS 中长时间运行后台任务

转载 作者:行者123 更新时间:2023-11-28 08:32:22 25 4
gpt4 key购买 nike

我想做以下事情:

如果用户长时间(大约 15 分钟)保持在 CLBeaconRegion 中,我希望能够执行一些代码。如果应用程序在前台,这个问题是微不足道的,但我无法将后台时间延长到分配的时间。因为我使用的是定位服务,所以运行这么长的后台任务应该是允许的。

只有当用户移动时,didEnterRegiondidExitRegion 才会在后台调用。似乎没有任何特定于位置的 API 允许您根据时间执行后台任务。

确实出现了其他类似的问题想要实现同样的事情,例如提到的所有线程 here .但是,所提议的解决方案似乎不适用于 CLBeaconManager(这主要涉及在 backgroundTimeRemaining 足够时禁用和启用 CLLocationManager小,但我最初尝试使用此解决方案没有成功)

我可以在有限范围内执行此操作的另一种方法是在 15 分钟内安排通知,并在 didExitRegion 中取消通知。

但是,上面的解决方案感觉要么很老套,要么不够充分。是否有一种“优雅”的方式来完成我想要的?

最佳答案

只要您在 Info.plist 中请求了位置背景模式,您的 backgroundTimeRemaining 就应该返回一个非常大的值,基本上表示无限的背景运行时间。这应该允许您在 didEnterRegion 方法中放入这样的代码块并使其关闭。

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(15*60 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
print("It's been 15 minutes since we entered the beacon region.")
}

我注意到在研究将后台线程运行到 extend beacon ranging in the background 的技术时,通过在 Info.plist 中放置位置后台模式,您可以获得无限的后台运行时间。 .您可以查看链接中的代码,了解我是如何启动后台线程的。

关于ios - 使用 iBeacons 在 iOS 中长时间运行后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com