ExtendedSessionManager - 앱이 백그라운드 상태로 진입했을 때 특정 로직이 백그라운드에서 계속 실행하는 기능을 제공해주는 extended runtime session API 모듈

기본 정보

ExtendedSessionManager 모듈은 애플워치 앱에서 extended runtime session 이라는 기능을 활용하기 위해서 사용되는 모듈입니다. ( extended runtime session 애플 공식문서 )
애플워치 앱은 일반적으로 사용자가 손목을 내리는 경우 백그라운드로 전환되어 실행이 일시중지됩니다. 하지만 extended runtime session 을 도입한 앱은 앱이 백그라운드로 전환되어도 특정 로직을 계속해서 실행할 수 있습니다.
번핏 애플워치 앱에서는 휴식타이머 알림이 백그라운드에서도 잘 울리도록 하기 위해 extended runtime session이 사용되었습니다.
ExtendedSesssionManager 파일은 ExtendedSession 폴더 내에 위치하고 있습니다.

주요 로직 명세

객체 개요

ExtendedSessionManager 는 앱 실행 시 인스턴스가 하나만 초기화되어 앱이 종료될 때까지 사용되는 싱글톤 객체입니다.
또한 extended runtime session을 시작하고 관리하기 위해서는 ExtendedSessionManagerWKExtendedRuntimeSessionDelegate 프로토콜을 상속하는 객체로 선언되어야 합니다.
// 외부에서 shared라는 변수를 통해 동일한 인스턴스에 접근해서 사용하는 싱글톤 객체입니다. // WKExtendedRuntimeSessionDelegate 프로토콜을 상속합니다. class ExtendedSessionManager: NSObject, ObservableObject, WKExtendedRuntimeSessionDelegate { static let shared = ExtendedSessionManager() //...다른 속성 및 메서드 }
Swift
복사

주요 메서드 명세

startSession()
stopSession()