iOS BackgroundTasks

iOS 개발자로서 저는 항상 백그라운드 실행이 앱을 설계하고 구현하는 동안 배운 한계라는 것을 알고 있습니다. 백그라운드에서 실행이 허용 된 앱으로 이점을 얻을 수있는 몇 가지 사용 사례가 있습니다.

iOS 13 도입과 함께 Apple은 백그라운드 작업 프레임 워크를 도입했습니다 . 이를 통해 앱이 백그라운드에있는 동안 콘텐츠를 새로 고치고 작은 작업을 수행 할 수 있습니다.

백그라운드 작업을 구현하는 동안 몇 가지 중요한 고려 사항은 다음과 같습니다.

전원 : 장치 배터리 수준은 배경 작업이 트리거되는 주요 요소입니다. 또한 작업을 수행하는 동안 시스템이 완료되었음을 알려야합니다. 이것은 우리의 작업이 불필요하게 전력을 소모하지 않도록합니다.

성능 : 우리의 임무는 효율적이어야하며 높은 성능을 보장해야합니다. 백그라운드에서 불필요한 작업을 구현하지 말고 GCD를 사용하여

앱에 대한 백그라운드 작업 실행을 요청하는 방법을 살펴 보겠습니다.

1 단계 : 앱에 대한 백그라운드 처리 기능 활성화

먼저 앱에 대한 백그라운드 처리 기능을 활성화해야합니다. 앱의 백그라운드 모드 기능에서 사용할 수 있습니다.

2 단계 : 앱 체계에서 백그라운드 처리 활성화

2 단계 : info.plist에 백그라운드 작업 식별자 추가

작업에 대한 고유 식별자를 제공해야 하며 키 허용 백그라운드 작업 스케줄러 식별자 아래의 info.plist 에 작업 식별자를 지정해야합니다.

2 단계 : info.plist에 작업 식별자 추가

3 단계 : 백그라운드 처리를위한 앱 등록

백그라운드 작업을 위해 앱을 등록해야합니다. 두 가지 유형의 백그라운드 작업이 있습니다.

  • BGProcessingTask는 일반적으로 완료하는 데 시간이 걸릴 것으로 예상되는 시간이 걸리는 작업이다.
  • BGAppRefreshTask은 일반적으로 신속하게 완료 할 수있는 작업을 수행하는 간단한 작업입니다.

시스템이 지정된 식별자“ com.amitthakur.sampleapp.refresh ”를 사용하여 작업을 실행할 때 handleAppRefresh (:) 메서드 가 호출됩니다.

시스템이 지정된 식별자“ com.amitthakur.sampleapp.dataprocessing ”을 사용하여 작업을 실행할 때 handleDataProcessing (:) 메서드 가 호출됩니다.

4 단계 : 실행할 작업 제출

다음 단계는 앱이 백그라운드로 전환 될 때 작업 을 submit () 하는 것입니다. 이를 위해 지정된 식별자로 요청을 가져옵니다.

A를 BGAppRefreshTask , 우리는 지정해야 earliestBeginDate 때 작업을 실행하는 시스템을 말한다.

BGAppRefreshTask 제출

A를 BGProcessingTask , 우리는 그것을 여부를 지정해야합니다 requiresNetworkConnectivityrequiresExternalPower을. 이는 작업 실행의 전제 조건으로 작동하며 작업 요구 사항에 따라 지정해야합니다.

BGProcessingTask 제출

5 단계 : 작업 처리기 구현

이제 작업을 등록 했으므로 작업 방식을 살펴 보겠습니다. 첫째, 대기열에 다른 작업이 있도록 작업을 다시 예약합니다. 앱이주기적인 업데이트를 예상하는지 여부에 따라 다릅니다.

expireHandler로 BGAppRefreshTask 처리
expireHandler로 BGProcessingTask 처리

작업을 실행할 때마다 몇 가지 사항을 지정해야합니다.

setTaskCompleted (success :) : 작업 실행을 완료로 표시하는 데 사용합니다.

expireHandler : 종료되는 작업 실행을 정상적으로 처리하려면 이것을 사용합니다. 이를 사용하여 정리를 수행하거나 작업을 마무리합니다.

5 단계 : 앱이 백그라운드로 전환 될 때 작업 예약

마지막으로, 앱이 백그라운드로 전환 될 때 작업을 예약하는 것을 잊지 마십시오.

백그라운드에서 실행할 작업을 제출해야합니다.

결론적으로 몇 개의 앱에서 백그라운드 작업 실행을 구현하여 앱 성능을 확실히 향상 시켰습니다. 그러나 작업 트리거는 예측할 수 없습니다. Apple은 디버그 모드에서 작업을 호출하는 방법을 제공했지만 백그라운드 작업에 대한 다음 블로그에서 더 많은 방법을 제공했습니다.

도움이 되었기를 바랍니다. 읽어 주셔서 감사합니다.

Suggested posts

UIKit-UIViewController 및 UIView 용 실시간 미리보기

UIKit-UIViewController 및 UIView 용 실시간 미리보기

Storyboard와 xib없이 프로젝트를 만드는 것은 절대적으로 가능하지만 때로는 프로그래밍 방식으로 UI 및 제약 조건을 관리하는 것이 어려울 수 있습니다. 따라서이를 수행하는 효과적인 방법은 무엇입니까? 이러한 제약, 크기 및 색상을 관리하기 위해 개발 시간을 단축 할 수 있습니까? 응 우리는 할 수있어.

Xcode 프로젝트 종속성 그래프 작성 — XCGrapher 소개

Xcode 프로젝트 종속성 그래프 작성 — XCGrapher 소개

최근 우리는 (많은) 사내 라이브러리를 CocoaPods에서 Swift Packages로 마이그레이션했습니다. 우리의 진행 상황에 대한 개요를 얻기 위해 새로운 도구를 구축 한 후 저에게 새로운 것을 배웠습니다. 런타임에 Swift 라이브러리를 동적으로로드하는 것입니다! 이것은 약간 더 긴 기사이므로, 식욕을 돋우기 위해 여기에 우리가 다룰 내용의 일부 목록이 있습니다. (때로는 매우 세부적으로) : 💡Module Migration Mayhem 10 개 이상의 커스텀 CocoaPod를 Swift 패키지로 옮기는 것은 까다로운 작업입니다. 특히 따라서 상호 의존적이며 세 개의 iOS / tvOS 앱 프로젝트에서 모두 사용됩니다.

Related posts

Swift— 프로토콜은 어떻게 작동합니까?

프로토콜과 위임은 Swift의 기본 개념입니다. 작동 방식과 사용 방법에 대해 알아 보려면이 빠른 가이드를 읽어보세요.

Swift— 프로토콜은 어떻게 작동합니까?

프로토콜은 Swift에서 매우 간단하지만 기본적인 개념입니다. 프로토콜은 코드 계약과 같습니다.

Mac App Store에없는 Mac에서 iOS / iPadOS 앱을 실행하는 방법

Mac App Store에없는 Mac에서 iOS / iPadOS 앱을 실행하는 방법

M1 칩을 실행하는 Mac이있는 경우 Mac App Store에 나열된 iOS / iPadOS 앱만 실행할 수 있습니다. 하지만 Mac App Store에 나열되지 않은 iOS / iPadOS 앱은 어떻습니까? 공식적으로는 할 수 없습니다.

더 접근하기 쉬운 오디오 플레이어

실명 및 시각 장애가있는 사람들을위한 공감력으로 구축하는 법 배우기

더 접근하기 쉬운 오디오 플레이어

작성자 : Francis Mariano, iOS 엔지니어 Headspace의 대담한 사명 선언문 인 세상의 건강과 행복을 개선합니다. 우리가 그곳에 사는 사람들의 다양한 경험을 인식하게 만드는 것.

SwiftUI를 사용하여 원 안에 텍스트를 표시하는 방법

SwiftUI를 사용하여 원 안에 텍스트를 표시하는 방법

이번에는 SwiftUI를 사용하여 원 안에 텍스트 레이블을 표시하는 몇 가지 방법을 살펴 보겠습니다. ZStack보기를 사용하여 세 가지 다른 방법을 자세히 살펴 보겠습니다.