【问题标题】:IOS - location updates not keeping my app from being terminatedIOS - 位置更新不会阻止我的应用程序被终止
【发布时间】:2018-10-19 14:37:02
【问题描述】:

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

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

应用中使用的位置设置:

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

那么是否缺少任何设置,或者我们是否在设备上进行了设置以确保应用程序一直运行,除非用户自行关闭? 拥有 iOS 开发者企业计划是否能以任何方式提供帮助? 谢谢你,

【问题讨论】:

  • 您是否在后台模式下开启了位置更新?在您的 Xcode > Target > Capabilities 中。

标签: ios iphone swift location terminate


【解决方案1】:

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

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

拥有分发证书可能会有所帮助,因为可能会利用私有 api 的一些优势(在企业分发的情况下,您无需通过 Apple 审核)。但是你应该永远记住,私有 API 可能会导致你意想不到的头痛。

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

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2017-07-30
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多