• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 位置更新在后台停止 - iOS

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:11:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在为 iOS 构建一个应用程序,它需要知道用户何时在他们家的 20-30 米范围内。

我使用地理围栏在用户离家 500m 时触发事件,然后我使用 CLLocationManager 开始跟踪实际位置并检查到他们家的距离。

我的问题是,当我在应用程序处于后台时从我的地理围栏事件中调用“startUpdatingLocation”时,它只运行了大约 20 秒,然后停止提供任何回调。 如果我在 20 秒后打开应用程序并将其放回后台,那么它会一直给我回调,直到我停止它。 如果我在应用程序运行时调用“startUpdatingLocation”,然后将其置于后台,它会继续运行。

我的初始化代码如下所示:

init(config: AutounlockConfiguration) {
    super.init()

    self.config = config

    self.locationManager = CLLocationManager()

    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.requestWhenInUseAuthorization()

    self.locationManager.delegate = self
    self.locationManager.pausesLocationUpdatesAutomatically = false
    self.locationManager.allowsBackgroundLocationUpdates = true
    self.locationManager.activityType = .automotiveNavigation
    self.locationManager.distanceFilter = kCLDistanceFilterNone
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
}

当我开始更新位置时,我会这样做:

func startFetchingUserLocation() {
    if (!isFetchingLocation) {
        isFetchingLocation = true
        DanaDebugger.presentDebugPushMessage(message: "fetching new location")
        locationManager.startUpdatingLocation()
    }
}

我已启用位置的后台模式,并在我的 info.plist 文件中包含 NSLocationAlwaysUsageDescription。 我真的不知道从哪里开始,希望有人能够提供帮助。



Best Answer-推荐答案


locationManager.startMonitoringSignificantLocationChanges()

用这一行代替这一行

locationManager.startUpdatingLocation()

它会解决你的问题

关于ios - 位置更新在后台停止 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45055271/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap