首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当didUpdateLocations被调用时didEnterRegion不再被调用

当didUpdateLocations被调用时didEnterRegion不再被调用
EN

Stack Overflow用户
提问于 2017-12-16 06:45:36
回答 1查看 571关注 0票数 2

我在同时处理Geofence和用户当前位置时遇到了问题。

当应用程序开始工作时,didUpdateLocations调用得很完美,我有用户所需的位置。

代码语言:javascript
复制
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

但一旦didEnterRegion代表被召唤,

代码语言:javascript
复制
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {}

didUpdateLocations不会再开火了。他们有血缘关系吗?

我还检查了

代码语言:javascript
复制
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {}

在调用didEnterRegion之后,状态没有更改。我还添加了

代码语言:javascript
复制
locationManager?.startUpdatingLocation()

didEnterRegion中,但是仍然没有调用didUpdateLocations

有人知道问题出在哪里吗?如何跟踪区域内的位置?

PS:在调用EnterRegion时自动停止更新位置,在调用ExitRegion时自动启动

Update:我使用xCode9、iOS 10、server 4。EnterRegionExitRegion都是空的,我现在只需在它们中打印一个日志,它们将在将来向服务器发布一些数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-16 13:15:15

didUpdateLocations不会再开火了。他们有血缘关系吗?

不!这里

didChangeAuthorizationStatus在这里毫无意义。授权保持不变。它刚刚被阻止了。

正常跟踪不会对regionMonitoring产生任何影响。它由操作系统管理。

只有在应用程序被挂起时,更新才会停止,从而防止应用程序被唤醒来处理这些事件。

我的猜测是,当你进入一个区域,你的应用程序不再暂停,可以开始跟踪再次,所以你必须确保你的应用程序没有被暂停。要跟踪您可以使用UIApplication.shared.backgroundTimeRemaining。请参阅这个例子

  • 避免使用模拟器进行测试。因为应用程序的生命周期有点混乱。见这篇文章来自苹果公司的一位员工。你必须断开你的mac,使用日志记录,这样你才能有一个真正的体验。
  • 确保你看到了这个问题。它帮助你克服了一些地理限制,我不知道苹果从那以后有多大的进步

但老实说,我仍然认为你只是犯了一个简单的错误,最终却让你的locationTracking停止了.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47843269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档