0

응용 프로그램이 백그라운드 일 때 비동기 연결을 보낼 수 있는지 알고 싶습니다. 그 이유는 응용 프로그램이 포 그라운드에 있지 않더라도 위치가 변경 될 때마다 원격 위치의 서버를 업데이트하기 위해 사용자의 위치 (코어 위치에서 가져 오기)를 전송해야하기 때문입니다.응용 프로그램이 백그라운드 일 때 NSURLConnection

이에 대한 허가를 설정해야합니까? 앱이 백그라운드에있을 때 애플이 앱 처리 연결을 거부합니까?

미리 감사드립니다.

답변

3

iOS는 멀티 태스킹 API를 제공합니다. 즉, 앱이 백그라운드에 있어도 일부 API에 액세스 할 수 있습니다. 이 서비스는 -

  1. 지역 알림
  2. 배경 오디오
  3. 배경 작업
  4. 배경 위치

그래서 당신은 확실히 응용 프로그램이 포 그라운드에 있지 않을 때 CoreLocation를 사용하여 위치 업데이트를 보낼 수 있습니다.

이 링크 - iOS multitasking은 백그라운드에서 앱을 사용할 때 서비스를 시작하는 코드가 있습니다. 경우 x 시간을 UIApplication:beginBackgroundTaskWithExpirationHandler:

  • 를 사용하여

    • 이 위치 백그라운드 모드 백그라운드에서
    • 사용 NSTimer을 지정 단계별 지침은 그것이 경우에 x 큰 작품을 잘입니다 않는 UIApplication:backgroundTimeRemaining보다 작은 백그라운드 작업이 종료되지 않도록 남은 시간이 없기 전에 위치 관리자를 다시 활성화 (및 비활성화)해야합니다. 위치는 세 가지 허용되는 유형의 백그라운드 실행 중 하나이기 때문에 작동합니다.

    SOURCE - 여기, 사과 문서에서 How do I get a background location update every n minutes in my iOS application?

  • +0

    핵심 위치 대리인 메서드를 통해 NSURLConnections를 보내시겠습니까? – CainaSouza

    +2

    예, 가능합니다. –

    +0

    테스트 해 보셨습니까? 아래 답변은 불가능하다고 말합니다. @Zerto가 제안한 것처럼 할 수 있다고 생각 했었습니다. 즉, CoreData로 모든 값을 저장하고 앱이 포 그라운드에있을 때 연결을 보내려고합니다. – CainaSouza

    0

    (http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW47)

    실제로 응용 프로그램을 필요로하지 않는 대부분의 백그라운드에서 사용자의 위치를 ​​추적하는 방법은 여러 가지가 있습니다 백그라운드에서 계속 실행 :

    - 중요한 변경 위치 서비스 (권장)

    ,210

    -foreground 전용 위치 서비스

    - 배경 위치 서비스

    그러나 당신이 할 수있는 유일한 가능한 것들로, 요청을 보낼 수 있습니다 : - 오디오 -location -voip -newsstand - 액세서리 & blutooth 연결

    그래서 내 위치를 모두 저장할 수 있고 앱이 포 그라운드로 다시 돌아 오면 NSURLConnection과 함께 보낼 수 있습니다.

    관련 문제