在后台的特定时间启动位置更新-Swift(watchOS)

我正在开发一个独立的WatchOS应用程序,其目的是识别用户何时离开特定区域,从而发送通知。为此,该应用程序严重依赖于后台位置更新。

到目前为止,应用程序运行正常。它基于distanceFilter的{​​{1}}属性获取位置。问题是电池。我所采用的方法使后台位置更新保持执行状态,即使仅在“覆盖”特定距离时才获取后台位置更新。

然后我的想法是在用户离开该区域时禁用位置更新,并在夜间禁用此服务。但是,这种方法使我面临严重的问题。

我的主要问题是在后台禁用位置更新无法恢复它。我尝试通过以下方式做到这一点:

  • 一个计时器。
  • CLLocationmanager方法,在委托中调用scheduleBackgroundRefresh(withPreferredDate:userInfo:scheduledCompletion:)

似乎没有任何作用。我的问题是:

如果以前被禁用,有没有一种方法可以恢复后台位置? 预先谢谢你。

更新 n.2:我尝试使用startLocationUpdates()执行位置更新,但它只是忽略了WKApplicationRefreshBackgroundTask函数(由@RomuloBM建议)

requestLocation()

我在Locationmanager中使用此功能调用后台任务:

//In extension delegate handle() function
case let backgroundTask as WKApplicationRefreshBackgroundTask:
                // Be sure to complete the background ta
                LocMng = Locationmanager() // I even tried to create a new element!
                LocMng.LocMng.requestLocation()// it is just ignored
                backgroundTask.setTaskCompletedWithsnapshot(false)

作为参考,这是我的Locationmanager类:

//In didUpdateLocation
if background {
            WKExtension.shared().scheduleBackgroundRefresh(withPreferredDate: Date(timeIntervalSinceNow: 30),userInfo: nil){ _ in
                print("Done")
                self.background = false
                self.LocMng.stopUpdatingLocation()
            }
        }
baizhongzheng 回答:在后台的特定时间启动位置更新-Swift(watchOS)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2771484.html

大家都在问