后台的Swift位置更新 - 是否可以立即执行方法?

时间:2015-12-08 08:01:01

标签: ios core-location

我正在开发一个应用程序,我希望有一个功能,当用户离开预定义区域时发送推送通知。为了跟踪离开的过程,我将使用CLCircularRegion和Parse进行通知。问题是 - 应用程序在处于后台状态时是否可以执行发送推送的方法?我知道有一个权限可用,它允许始终监视位置更新,我也知道委托,可以用于位置更新。

实际问题是当应用程序处于后台状态时它真的有用吗?本书 iOS 8 Swift Programming Cookbook 表示位置委托消息不能正常传递给应用程序,而是当应用程序再次成为前台应用程序时,它们会批量传递。否则,Apple文档说当位置发生变化时应用程序会变为唤醒状态。

比如说,用户在第二天之前和之后终止应用程序,他离开了CLCircularRegion中定义的区域。委托触发并启动发送推送的方法吗?

1 个答案:

答案 0 :(得分:0)

即使应用程序在后台,区域监控也会触发更新。您的应用可以响应区域监控回调didEnterRegion:didExitRegion:,然后根据需要触发所需的推送通知。

Per Apple:

  

在iOS中,系统会始终跟踪与您的应用相关联的区域,包括应用未运行的时间。如果在应用未运行时越过区域边界,则会将该应用重新启动到后台以处理该事件。同样,如果应用程序在事件发生时被暂停,它会被唤醒,并且会花费很短的时间(大约10秒)来处理事件。必要时,应用程序可以使用UIApplication类的beginBackgroundTaskWithExpirationHandler:方法请求更多后台执行时间。

此处有更多信息:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html#//apple_ref/doc/uid/TP40009497-CH9-SW1