공식문서

Handling Location Events in the Background

motosw3600 2022. 2. 11. 09:56

Handling Location Events in the Background

  • 백그라운드 실행 모드를 활용하여 위치 관련 이벤트에 응답

Overview

앱은 보통 foreground상태에서 위치 서비스를 사용한다, 하지만 몇몇 위치 서비스는 백그라운드에서 실행되거나 시스템이 앱을 실행하게 할 수도 있다. 백그라운드에서 이벤트를 받으려면 아래와 같이 Xcode에서 "Location updates"기능을 설정해라. 또한 CLLocationManger개체의 allowsBackgroundLocationUpdates속성을 true로 설정해야 한다.

 

 

앱의 백그라운드 상태에서 위치가 갱신될 때, 시스템은 앱을 실행하고 options dictionary를 application(_: willFinishLaunchingWithOptions:) 또는 application(_: didFinishLaunchingWithOptions:)메서드에 전달한다.

dictionary에는 위치 서비스로 인해 앱이 실행되었음을 나타내는 location 키가 포함될 수 있다. 그러나 위치 이벤트가 발생하더라도 항상 위치 키가 나타나는 것은 아니다. 보류 중인 위치 업데이트 이벤트를 수신하려면 다음을 수행해라.

 

  1. 만약 앱이 실행했거나 location manger인스턴스가 없다면, 새로운 CLLocationManger객체를 생성하고 delegate를 설정해라.
  2. 위치 모니터링 서비스를 다시 시작해라. 앱의 요구사항에 따라 startMonitoringVisits(), startMonitoringSignificantLocationChanges() 또는 startMonitoring(for:) 호출해라. 보류 중인 업데이트를 수신하기 위해 startUpdatingLocation() 호출할 필요는 없다.

 

위치 모니터링 서비스는 Core Location에 모니터링을 중지할 때까지 계속 유지된다. 만약 더 이상 위치 업데이트가 필요하지 않다면, stopMonitoringVisits(), stopMonitoringSignificantLocationChanges() 또는 stopMonitoring(for:) 호출해라.

 

아래의 표는 새로운 위치 업데이트를 보고하기 위해 앱을 실행하는 서비스를 나타낸다. 앱을 다시 실행하는 서비스는 사용자가 앱을 강제로 종료한 후에도 실행된다.

 

 

 

Note
Core Location은 사용자가 하나 또는 모든 앱에 대해 백그라운드 앱 refresh 설정을 비활성화하더라도 백그라운드에서 위치 이벤트를 계속 전달한다. 백그라운드 refresh 상태에 대한 자세한 내용은 backgroundRefreshStatus참고

 

 

 

 

출처 : https://developer.apple.com/documentation/corelocation/getting_the_user_s_location/handling_location_events_in_the_background

 
 

'공식문서' 카테고리의 다른 글

Making Changes to Reduce Memory Use  (0) 2022.01.17
Reducing Your App's Memory Use  (0) 2022.01.03
View Programming Guide for iOS  (0) 2021.12.15
Increasing Performance by Reducing Dynamic Dispatch  (0) 2021.12.09