iOS 애플리케이션 내에서 백그라운드에서 타이머를 실행하려는 경우 Apple은 beginBackgroundTaskWithExpirationHandler 메소드를 제공합니다. 동일한 https://developer.apple.com/documentation/uikit/uiapplication/1623031-beginbackgroundtaskwithexpiration에 대해 자세히 알아볼 수 있습니다.
백그라운드에서 타이머를 실행하기 위한 코드를 작성하는 데 동일한 것을 사용할 것입니다.
그럼 시작하겠습니다.
1단계 − Xcode 열기 → Single View Application → 이름은 BackgroundTimer입니다.
2단계 − AppDelegate.swift를 열고 applicationDidEnterBackground 메소드 아래에 아래 코드를 작성하세요.
backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: { UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!) }) _ = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.doSomething), userInfo: nil, repeats: true)
3단계 - 새로운 함수 doSomething() 작성
@objc func doSomething() { print("I'm running") }
마지막으로 코드는 다음과 같아야 합니다.
func applicationDidEnterBackground(_ application: UIApplication) { backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: { UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!) }) _ = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.doSomething), userInfo: nil, repeats: true) } @objc func doSomething() { print("I'm running") }
애플리케이션 실행
여기서 우리는 애플리케이션이 백그라운드로 갈 때 "I'm running"을 인쇄하고 있습니다. 앱이 백그라운드로 전환되면 "I'm running"이 콘솔에서 인쇄를 시작합니다. 홈 버튼을 누르고 테스트하십시오. 그러나 Apple 설명서에 지정되고 테스트된 대로 앱이 백그라운드에 있을 때 최대 타이머를 3분 동안 실행할 수 있습니다.
이 응용 프로그램을 실행하는 동안 응용 프로그램을 백그라운드로 만들고 3분 동안 기다리면 "I'm running"이 인쇄되지 않는 것을 볼 수 있습니다. 이제 응용 프로그램을 포그라운드로 가져오면 "I'm running" 인쇄가 시작되었음을 알 수 있습니다.