반응형
해당 글에서는 화면 공유 기술 중 “System Broadcast Picker 기능”과 관련되어 이해하는 과정에 대해서 작성하였습니다.
💡 전반적인 화면 공유 기술 및 앱 내에서 화면 공유 기술에 대해서 궁금하시면 이전에 작성한 글을 참고하시면 도움이 됩니다.
1) System Broadcast Picker 및 기술 프로세스
1. System Broadcast Picker
💡 자신의 앱뿐만 아니라 IOS 디바이스의 활동에 대해 화면 녹화 화면을 표시하여 처리하는 기술입니다.
💡 RPSystemBroadcastPickerView 기능을 주로 사용하는 기술입니다.
💡 Target의 Broadcast Upload Extension을 추가하여 사용하는 기술입니다. processSampleBuffer()로 Video / Audio Sample을 수신합니다.
2. IOS Broadcast를 이용한 흐름
3. IOS Broadcast Lifecycle의 흐름도
4. System Broadcast Picker를 이용한 개발 구성도
💡 해당 이미지는 추후에 구성할 화면공유 시스템의 개발에 대한 구성도입니다.
2) 구현 과정
1. Target의 Extension 구성
💡 화면 공유를 시작하고 데이터를 전달받는 데 사용하는 Extenstion을 구성합니다.
1.1. Xcode에서 File - New - Target.. 버튼을 누릅니다.
1.2. “Upload”를 검색하고 Application Extension으로 “Broadcast Upload Extenstion”을 선택합니다.
1.3. Extension의 이름을 정하고 “Finish” 버튼을 누릅니다.
💡 Product Name을 작성하고 프로젝트를 앱을 선택해 줍니다.
1.4. 해당 부분이 출력되며 “Activate” 버튼을 누릅니다.
1.5. 구성한 새로운 파일이 구성되었고 Extention의 Target이 생성되었습니다.
2. AppGroup 지정하기
💡 Extenstion과 App을 연결해 주기 위해서는 App Group을 구성해야 합니다.
2.1. 프로젝트 - Signing & capabilities - + Capabliity 버튼을 클릭합니다.
2.2. App Group을 검색하고 선택합니다.
2.3. App Group 영역이 생겼습니다. + 버튼을 누릅니다.
2.4. 새로운 앱그룹을 지정합니다.
💡 해당 App Group은 사용자의 App ID(메인 App과 Extenstion AppID는 동일하게 설정해야 합니다)
해당 앱 그룹명은 group. [Bundle Identifier]로 이름을 짓습니다.
2.5. 앱 그룹이 잘 생성되었음을 확인하였습니다.
3. 패키지 구성하기
💡 패키지(Package)란?
- Swift 패키지 매니저(Swift Package Manager)를 통해 관리되는 Swift 코드 모듈입니다. 패키지 매니저는 Swift 프로젝트에서 코드 의존성을 관리하는 공식적인 방법입니다.
- 패키지 매니저를 사용하면 코드의 유지 보수 및 코드의 재사용성을 향상할 수 있습니다. 패키지 매니저를 사용하면 프로젝트에서 모듈을 불러올 때 일일이 파일 경로를 지정할 필요가 없습니다.
3.1. 프로젝트를 선택하고 ‘Package Dependencies’ 탭을 선택하고 “+” 버튼을 누릅니다.
3.2. 패키지를 추가할 수 있는 화면이 나오고 Github내에 Pacakage로 추가도 가능합니다.
💡 Github 링크를 붙여 넣기 하면 아래와 같이 출력이 되며 ‘Add to Project’에서 앱을 선택하고 ‘Add Pacakge’를 선택합니다.
[참고] BroadCast 데이터 처리를 위해 사용한 패키지
3.3. 해당 패키지를 선택하고 ‘Add Package’를 선택합니다.
3.4. 해당 패키지가 프로젝트 내에 설치가 되었습니다.
3.5. 프로젝트에서 SampleHandler에서 BroadcastWriter를 사용하기에 연결을 해줍니다.
💡 다음 페이지에서 개발을 위한 구성이 완료되었습니다.
오늘도 감사합니다. 😀
반응형
'Swift > 이해하기' 카테고리의 다른 글
[Swift] iOS 앱 상태 이해 및 백그라운드로 이동방법 : 앱 라이프 사이클, 앱 벗어나기 (1) | 2023.04.25 |
---|---|
[Swift] 화면 공유 기술 - 3 : 전체 시스템 화면 공유 개발 (3) | 2023.03.10 |
[Swift] 화면 공유 기술 - 1 : In-App 화면 공유 (0) | 2023.03.06 |
[Swift] SwiftUI에서 Storyboard(UIKit) 화면을 불러오는 방법 : UIViewControllerRepresentable (0) | 2023.03.06 |
[Swift] 서버와 IOS 모바일 API 통신 방법 : URLSession, Alamofire (0) | 2023.02.28 |