백그라운드 전환시 작업시간 벌기

2021. 11. 3. 13:54개발자료/iOS


반응형

⭕ iOS 백그라운 실행 시퀀스

https://developer.apple.com/documentation/uikit/app_and_environment/scenes/preparing_your_ui_to_run_in_the_background/about_the_background_execution_sequence?language=objc

⭕ 백그라운드 변수 선언

@property (nonatomic, assign) UIBackgroundTaskIdentifier bgTask;

백그라운드 진입시

- (void)applicationDidEnterBackground:(UIApplication *)application {
    self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
        self.bgTask = UIBackgroundTaskInvalid;
    }];
}

⭕ 포그라운드 진입시

- (void)applicationWillEnterForeground:(UIApplication *)application {
    if (self.bgTask != UIBackgroundTaskInvalid) {
        [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
        self.bgTask = UIBackgroundTaskInvalid;
    }
}

 

⭕ 작업이유.

백그라운드 진입시 네트워크 커넥션이 끊어지는 문제가 발생. 
UIApplication의 beginBackgroundTaskWithExpirationHandler 을 이용해서 백그라운드시 작업 유지시간 확보해서 네트워크 연결 유지함.

반응형