반응형
해당 글에서는 iOS 앱 상태를 이해하고 백그라운드로 이동하는 기능에 대해서 공유 목적으로 작성한 글입니다.
1) 애플리케이션의 상태 이해하기 : Foreground, Background
상태 | 설명 | 사용자 상호작용 | 알림 수신 | 이벤트 수신 | 작업 수행 |
Foreground | - 사용자가 ‘현재 집중’하고 있는 앱 상태 ex) 사용자가 앱을 사용하고 있는 상태 |
O | O | O | O |
Active | - 화면에 보이지 않지만 여전히 ‘실행 중’인 상태 ex) 사용자가 앱을 종료하지 않은 상태에 다른 앱을 사용중인 경우 ex) 사용자가 앱을 종료하지 않은 상태에서 홈화면에 위치하는 경우 |
X | O | O | O |
Inactive | - 실행 중이지만 ‘이벤트’를 받을 수 없음 ex) 일시적으로 발생하는 상태로 다른 앱과 상호작용하거나 전화가 왔을 때 발생하는 경우 |
X | X | X | O |
Background | - 사용자에게 보이지 않지만 여전히 실행 중 상태 ex) 사용자가 앱을 종료하지 않고 다른 앱을 사용중인 경우 |
X | O | X | O |
Suspended | - 일시적으로 중단된 상태 ex) 사용자가 앱을 종료하거나 시스템이 메모리 확보를 위해 앱을 강제 종료할 때 발생합니다. |
X | X | X | X |
Not Running | - 실행되지 않은 상태 ex) 사용자가 앱을 실행하지 않은 상태 |
X | X | X | X |
2) 실행 중인 애플리케이션을 백그라운드로 이동 방법(앱 벗어나기)
1. iOS 13 이하 버전에서 수행하는 경우
1.1. 앱 백그라운드로 이동 코드 및 설명
UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
💡 UIApplication.shared 객체의 perform 메서드를 사용하여 NSXPCConnection.suspend() 메서드를 호출하여 현재 연결된 객체의 작업을 일시 중단하고 XPC 서비스를 대기 상태로 전환합니다.
1.2. 해당 주요 기술 확인
[ 주요 기술 확인하기 ]
💡 UIApplication이란?
- iOS 애플리케이션의 주요 객체 중 하나로 애플리케이션의 실행 및 생명주기 관리를 담당합니다.
💡 UIApplication.share 이란?
- iOS 앱에서 사용자가 앱을 공유할 수 있도록 하는 기능입니다. 이 기능을 사용하면 사용자가 앱을 다른 사람과 공유할 수 있는 다양한 방법을 제공할 수 있습니다. 주요한 기능으로는 사용자는 앱에서 공유 버튼을 누르면, 다른 앱이나 메시지, 이메일 등을 통해 앱을 공유할 수 있습니다.
💡NSXPCConnection.suspend 란?
- NSXPCConnection.suspend()은 현재 연결된 객체의 작업을 일시 중단하는 메서드입니다. 이 메서드를 호출하면 XPC 연결 객체가 일시 중단됩니다. 따라서 XPC 서비스가 대기 상태로 전환됩니다.
[참고] 공식사이트
2. iOS 14 이상 버전에서 수행하는 경우
2.1. 앱 백그라운드로 이동 코드 및 설명
/**
* 앱 백그라운드로 이동처리 함수
*/
func appMinimization() {
print("앱 백그라운드로 이동")
let selector = NSSelectorFromString("suspend")
let sharedUIApplication = UIApplication.perform(NSSelectorFromString("sharedApplication"))?.takeUnretainedValue()
_ = sharedUIApplication?.perform(selector, with: nil)
}
[ 소스코드 설명 ]
- UIApplication 클래스를 사용하여 현재 실행 중인 앱을 백그라운드로 이동시키는 역할을 합니다.
1. NSSelectorFromString() 함수를 사용하여 suspend 메서드를 실행합니다.
2. UIApplication의 sharedApplication() 메서드를 호출하여 현재 실행 중인 앱의 인스턴스를 가져옵니다.
3. perform() 메서드를 사용하여 suspend 메서드를 실행합니다.
4. 이를 통해 앱이 백그라운드로 이동됩니다.
2.2. 해당 주요기술 확인
💡 NSSelectorFromString("suspend")
- 문자열 "suspend"를 메서드 이름으로 갖는 셀렉터 객체를 생성합니다. 이 셀렉터 객체는 Objective-C 프로그래밍에서 사용됩니다.
💡UIApplication.perform().takeUnretainedValue()
- Core Foundation 객체를 Objective-C 객체로 캐스팅할 때 사용하는 메서드입니다.
💡 NSSelectorFromString("sharedApplication")
- UIApplication의 sharedApplication() 메서드를 호출하는 역할을 수행합니다.
[참고] 공식사이트
오늘도 감사합니다. 😀
반응형
'Swift > 이해하기' 카테고리의 다른 글
[Swift] UIViewController 라이프사이클 이해하기 (0) | 2023.05.09 |
---|---|
[Swift] 저장소 이해하기 : NotificationCenter, UserDefaults, AppGroup(FileManager) (0) | 2023.05.04 |
[Swift] 화면 공유 기술 - 3 : 전체 시스템 화면 공유 개발 (3) | 2023.03.10 |
[Swift] 화면 공유 기술 - 2 : 전체 시스템 화면 공유 구축 (0) | 2023.03.10 |
[Swift] 화면 공유 기술 - 1 : In-App 화면 공유 (0) | 2023.03.06 |