应用程序在后台时的NSURLConnection

时间:2012-12-06 16:13:16

标签: objective-c ios core-location background-process multitasking

我想知道当应用程序处于后台时是否可以发送异步连接。这是因为我需要发送用户的位置(从核心位置获取),以便每次位置更改时更新远程服务器中的数据库,即使应用程序不在前台。

我是否必须为此设置任何权限?当应用程序处于后台时,Apple会拒绝应用程序处理连接吗?

提前致谢!!

2 个答案:

答案 0 :(得分:4)

iOS提供多任务API,即使您的应用程序处于后台,也可以访问其中的一些API。这些服务是 -

  1. 本地通知
  2. 背景音频
  3. 后台任务
  4. 背景位置
  5. 因此,当应用不在前台时,您绝对可以使用CoreLocation发送位置更新。

    此链接 - iOS multitasking包含在后台使用应用时启动服务的代码。分步说明

    • 指定位置背景模式
    • 使用NSTimer
    • 在后台使用UIApplication:beginBackgroundTaskWithExpirationHandler:
    • 如果x时间小于UIApplication:backgroundTimeRemaining,它确实可以正常工作,如果x更大,则应该在没有时启用(并禁用)位置管理器剩余时间以避免后台任务被杀死。这确实有效,因为location是三种允许的后台执行类型之一。

    消息来源 - How do I get a background location update every n minutes in my iOS application?

答案 1 :(得分:0)

此处,来自apple文档(http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW47

  

有几种方法可以在后台跟踪用户的位置,其中大部分都不需要您的应用在后台连续运行:

     

- 显着变化的位置服务(推荐)

     

- 仅限地面的位置服务

     

- 背景位置服务

但是您无法发送请求,因为唯一可能的事情是: -audio -地点 -voip -报摊 - 配件& blutooth连接

所以我猜你可以存储你所有的位置,并在应用程序再次进入前台后通过NSURLConnection发送它