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

时间:2018-10-19 14:37:02

标签: ios iphone swift location terminate

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

所以我们使用核心位置来频繁获取用户位置,但是它不能很好地工作或无法如愿以偿,因为当应用程序在某些设备上进入后台运行不到一分钟后,该应用程序便被杀死了。即使将授权设置为始终,在其他设备上也需要10分钟。

应用中使用的位置设置:

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.showsBackgroundLocationIndicator = true
  • 我们仅在应用启动时触发startLocationupdates

那么是否缺少任何设置,或者我们在设备上是否有设置来确保该应用程序始终正常运行,除非用户自己关闭该应用程序? iOS开发者企业计划可以以任何方式提供帮助吗? 谢谢

1 个答案:

答案 0 :(得分:0)

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

  

系统启动您的应用程序时,使用启动选项字典   传递给应用程序(:willFinishLaunchingWithOptions :)和   application(:didFinishLaunchingWithOptions :)方法来确定   您的应用是否已启动以处理位置更新。这个   启动应用程序时,字典包含位置键,因为   定位服务。创建一个新的CLLocationManager对象,配置   委托它,然后再次启动定位服务以接收   更新。

拥有分发证书可能会有所帮助,因为它可以利用私有api的某些优势(在企业分发的情况下,您无需通过Apple审核)。但是您应该始终记住,私有API可能会导致您出乎意料的麻烦。

我相信,仔细阅读Background ExecutionHandling Location Events in background文档将为您提供更好的解决方案。