IOS - 位置更新不会阻止我的应用被终止

IOS - location updates not keeping my app from being terminated

我正在为一家私营公司开发一个 ios 应用程序,该应用程序需要一直运行以跟踪用户的位置并将其上传到服务器。

所以我们经常使用核心位置来获取用户的位置,但它工作得不是很好,也没有像承诺的那样工作,因为当应用程序进入某些设备的后台后不到一分钟就会被杀死,并且会占用即使授权设置为始终,在其他设备上最多 10 分钟。

应用中使用的位置设置:

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.showsBackgroundLocationIndicator = true

所以是否缺少任何设置,或者我们是否在设备上进行了设置以确保该应用程序一直有效,除非用户自行关闭? iOS Developer Enterprise Program 是否有任何帮助? 谢谢,

这是正常现象。您拥有后台模式这一事实并不意味着该应用程序将永远在后台运行。这意味着,以下内容:

When the system launches your app, use the launch options dictionary passed to the application(:willFinishLaunchingWithOptions:) and application(:didFinishLaunchingWithOptions:) methods to determine whether your app was launched to handle a location update. This dictionary contains the location key when the app is launched because of location services. Create a new CLLocationManager object, configure it with a delegate, and start location services again to receive the update.

拥有分发证书可能会有所帮助,因为可能会利用私有 api 的一些优势(如果是企业分发,您不需要通过 Apple 审查)。但是你应该永远记住 private API 可能会给你带来意想不到的头痛。

相信仔细阅读Background Execution and Handling Location Events in background文档会给您带来更好的解决方案。