Skip to content

ReplayKit의 기본적인 기능 구현을 익히는 데에 도움을 주는 Bare-bones

Notifications You must be signed in to change notification settings

CodersHigh/ReplayKit_Barebones

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

ReplayKit_Barebones


프로젝트 소개

  • ReplayKit의 기본적인 기능 구현을 익히는 데에 도움을 주는 Bare-bones 프로젝트입니다.
  • ReplayKit을 통해 SwiftUI 기반의, 앱 화면을 녹화하는 앱을 구현합니다.
  • ReplayKit을 처음 활용해 보는 경우, 이 프로젝트의 코드를 살펴보면 도움이 됩니다.
ReplayKit_Barebones.mp4

ReplayKit이란?

ReplayKit은 앱에서 비디오 및 오디오를 녹화하거나 스트리밍하며, 이를 공유할 수 있게 해주는 프레임워크입니다.

ReplayKitImage

프레임워크 특성 상, 게임에서 멋진 순간을 녹화하거나 게임 플레이 장면을 라이브로 스트리밍하는 등의 기능 구현에 활용되죠.
(그러나 해당 프로젝트는 앱 화면을 녹화해서 공유하는 간단한 기능만이 구현되어 있습니다.)
ReplayKit에 대해 더 궁금하다면 Apple의 공식 문서를 참고해 보세요.



핵심 코드

녹화를 시작 및 중단하고, 공유 시트를 표시하는 핵심 코드를 참고하세요.


녹화 시작 및 중단

// 녹화 시작
func startRecording(completion: @escaping (Error?) -> ()) {
    let recorder = RPScreenRecorder.shared()
    recorder.isMicrophoneEnabled = false
        
    recorder.startRecording(handler: completion)
}
// 녹화 중단
func stopRecording() -> URL {
    let name = UUID().uuidString + ".mov"
    let url = FileManager.default.temporaryDirectory.appendingPathComponent(name)
        
    let recorder = RPScreenRecorder.shared()
    recorder.stopRecording(withOutput: url)
        
    return url
}


공유 시트 표시

// 공유 시트를 띄우는 함수
func shareSheet(show: Binding<Bool>, items: [Any?]) -> some View {
    return self
        .sheet(isPresented: show) {
            let items = items.compactMap { item -> Any? in
                return item
            }
            if !items.isEmpty {
                ShareSheet(items: items)
            }
        }
}
// UIKit 공유 시트
struct ShareSheet: UIViewControllerRepresentable {
    
    var items: [Any]
     
    func makeUIViewController(context: Context) -> some UIViewController {
        let view = UIActivityViewController(activityItems: items, applicationActivities: nil)
        return view
    }
   
}

About

ReplayKit의 기본적인 기능 구현을 익히는 데에 도움을 주는 Bare-bones

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages