study - iOS

UIBackgroundTask 사용법 iOS 백그라운드에서 실행하기

ODING2 2019. 4. 21. 23:22

* 백그라운드 모드 설정을 따로 하지않으면 3분 후에 앱은 비활(suspended)처리가 됨.

3분마다깨워줄 수 있는 게 background tasker.

앱 page에서 -> capabilities -> Background Models 에서 

'audio,airplay and picture in picture'항목을 체크 해 주어야 함(해당 카테고리가 아닌데 이렇게 하면 Reject사유)

 

 

UIBackgroundTaskIdentifier taskId;              ///< 백그라운드 taskId


#pragma mark - background task
/**
 백그라운드 시작을 알리는 함수
*/
- (void)startBackgroundTask
{
    // System 에 background 작업이 필요함을 알림. 작업의 id 반환
    taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [[UIApplication sharedApplication] endBackgroundTask:taskId];
        return ;
    }];
}
/**
 백그라운드 끝을 알리는 함수
*/
- (void)endBackgroundTask
{
    [[UIApplication sharedApplication] endBackgroundTask:taskId];
    
    taskId = 0;

}

위와 같이 선언해 두고
[self startBackgroundTask];
// 할일
[self endBackgroundTask];

- (void)start
{
UIBackgroundTaskIdentifier newBgTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
if (bgTaskID != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:bgTaskID];
bgTaskID = UIBackgroundTaskInvalid;
}
}];

if (newBgTaskID != UIBackgroundTaskInvalid) {
[self stop];
bgTaskID = newBgTaskID;
}
}

- (void)stop
{
if (bgTaskID != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:bgTaskID];
bgTaskID = UIBackgroundTaskInvalid;
}
}