菜鸟教程小白 发表于 2022-12-13 02:11:38

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


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

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

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

<p>我的初始化代码如下所示:</p>

<pre><code>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
}
</code></pre>

<p>当我开始更新位置时,我会这样做:</p>

<pre><code>func startFetchingUserLocation() {
    if (!isFetchingLocation) {
      isFetchingLocation = true
      DanaDebugger.presentDebugPushMessage(message: &#34;fetching new location&#34;)
      locationManager.startUpdatingLocation()
    }
}
</code></pre>

<p>我已启用位置的后台模式,并在我的 info.plist 文件中包含 NSLocationAlwaysUsageDescription。
我真的不知道从哪里开始,希望有人能够提供帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><pre><code>locationManager.startMonitoringSignificantLocationChanges()
</code></pre>

<p>用这一行代替这一行</p>

<pre><code>locationManager.startUpdatingLocation()
</code></pre>

<p>它会解决你的问题</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 位置更新在后台停止 - iOS,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/45055271/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/45055271/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 位置更新在后台停止 - iOS