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;
}
}