Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] WWDC2025 정리 - 백그라운드에서 작업하는 방법 2 (background) 본문

WWDC 정리/WWDC 2025 정리

[iOS - swift] WWDC2025 정리 - 백그라운드에서 작업하는 방법 2 (background)

jake-kim 2025. 7. 30. 01:20

백그라운드 처리를 할때 고려하는것

  • 백그라운드에서 처리할 때 프로세스 입장에서 고려하는 것들
    • 배터리 생명주기
    • 공유 자원 (Memory, CPU, 네트워크 대역폭, 저전력 모드, 적은 데이터 모드)

ex) 공유 자원 예시 - 포그라운드 관점

  • 백그라운드에 너무 많은 자원을 사용하면 비효율적으로 처리가 될 뿐 아니라 포그라운드 경험과도 충돌되므로 백그라운드에 있는것들 종료할 수 있음
  • 때문에 백그라운드 작업을 최소화하여 메모리 사용량을 줄여야함
  • 또한 사용자가 저전력 모드를 키는 성격을 고려하여 사용자 관점에서 생각하며 설계해야함

애플에서 권고하는 백그라운드 처리 방향

  • 효율성, 최소성, 탄력성, 신중함, 적응성

  • 백그라운드 작업을 한다는 것은 런타임 기회가 생길 때마다 점진적 진행이 가능해야함
  • (시스템 조건과 우선순위를 이해하고 적응할수록 작업 성공률은 더욱 높아짐)
  • 작업은 작고 가볍게 유지할 것
  • 필요 사항은 명확히 전달해야할 것

백그라운드 작업을 할 때 체크리스트

  • 이 작업은 누가 시작했는가?
  • 명시적으로 시작된 작업인가? 아니면 나중에 실행해도 되는 선택적 작업인가?
  • 작업 소요 시간은 얼마나 되는가?
  • 작업은 앱 상태나 최신도에 중요한가?
  • 이 작업은 사용자의 동의나 입력이 필요한가? (필요하면 백그라운드 런타임은 적절하지 않음)

Background API 1) BGAppRefreshTask - 새로고침에 사용

  • BGAppRefreshTask API
    • 새로고침에 사용 > 서버에서 조용히 콘텐츠를 불러오는 용도
    • 자주 사용하는 앱 일수록 작업이 예약될 확률이 높아짐 (시스템에서 빈도수가 많은 앱 위주로 우선순위를 정함)

  • SwiftUI 코드: .backgroundTask를 사용하여 실행
    • 앱이 백그라운드일 때 시스템은 해당 클로저를 호출함 

Background API 2) Background Push Notification

  • 서버에서 새 콘텐츠 알림을 보낼때, 시스템이 적절한 시점에 앱을 깨워 콘텐츠를 가져오게함
    • BGAppRefreshTask와는 다르게 데이터를 직접 요청하는 게 아니라 업데이트가 푸시되는 형식
  • 새로운 원격 콘텐츠가 있다는 신호로 씀
    • 1) 새로운 원격 콘텐츠가 있다는 신호
    • 2) 낮은 우선순위 작업이므로 과부하와 배터리 소모를 최소화함
    • 3) 사용자가 앱을 종료하면 시스템은 그 의도를 존중하여 앱이 다시 실행되기 전까지는 알림을 전달하지 않음

* 참고

- https://developer.apple.com/kr/videos/play/wwdc2025/227/

Comments