728x90
beginBackgroundTask
- 앱이 Background로 진입한 이후에도 지속되어야할 작업들을 표시하는 함수
- expirationHandler:
- 남은 백그라운드 지속 시간이 0이 되어서 종료되기 직전에 남은 작업을 처리할 수 있게 해주는 block
- iOS앱은 백그라운드로 넘어가고 수초 이내에 Suspended 상태로 넘어가서 이전에 실행하던 코드들을 전부 중단시키는데, Suspended 상태로의 진입을 지연시키는 함수
- 예시) 네트워크 Request를 보내고 Response가 아직 오기전에 Suspended상태로 넘어가는 것을 방지
- 시스템 상태에 따라 backgroundRemainingTime이 달라지는데 최대 3분정도 지속 가능
endBackgroundTask
- beginBackgroundTask로 표시된 작업이 완료된 후 호출해주어 앱이 예정대로 Suspended 상태로 진입하게 해주는 함수
테스트
- 앱이 background로 진입 시 타이머를 걸고 Suspended 상태 진입을 10초 정도까지 지연시킴
func sceneDidEnterBackground(_ scene: UIScene) {
timer?.invalidate()
identifier = UIApplication.shared.beginBackgroundTask()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(backgroundTask), userInfo: nil, repeats: true)
}
@objc
func backgroundTask() {
second += 1
print("second: \(second)")
if second == 10, let identifier = identifier {
UIApplication.shared.endBackgroundTask(identifier)
}
}
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] Mirror Struct (0) | 2024.02.24 |
---|---|
[iOS] iOS Webview에서 텍스트 복사하는법 (0) | 2023.07.15 |
[iOS] Pod 폴더 충돌 해결 (0) | 2023.02.05 |
[iOS] Podfile.lock (0) | 2023.02.05 |
[iOS] iOS에서의 Multi-Layer Architecture (0) | 2023.01.23 |
댓글