D. PIP로 전환하기
방송 설정에서 PIP 를 켜면 플레이어에 PIP 버튼이 나타나고, 이 동작에는 앱 구현이 없습니다. 앱이 직접 작은 창을 제어할 때만 PIPKit 을 씁니다.
방송 설정에서 PIP 를 켜면 플레이어에 PIP 버튼이 나타납니다.
시청자가 누르면 앱 안의 작은 창으로 줄어듭니다. 이 동작에는 앱 구현이 없습니다.
전체 화면으로 보다가 앱을 벗어나면 시스템 PIP 로 이어집니다(iOS 14.2 이상, 앱 타깃에 Background Modes 필요). 작은 창 상태에서 앱을 벗어나면 시스템 PIP 로 넘어가지 않고 작은 창이 닫힙니다. 닫지 않고 멈춰 두려면 closeOnBackground 를 false 로 정합니다 → API
아래는 앱이 직접 작은 창을 제어하고 싶을 때의 방법입니다.
상품을 둘러보는 동안에도 방송이 계속 보이게 할 수 있습니다.
| 메서드 | 설명 |
|---|---|
PIPKit.show(with:) | 플레이어를 앱 화면 위에 떠 있는 창으로 표시합니다 |
startPIPMode() | 전체화면 → 작은 창으로 전환합니다 |
stopPIPMode() | 작은 창 → 전체화면으로 복귀합니다 |
PIPKit.dismiss(animated:) | 창을 닫습니다 |
SauceClient.closePIPMode() | 작은 창이나 시스템 PIP 를 닫습니다. 전체 화면이면 무시합니다 |
PIPKit.isPIP · isActive | 현재 작은 창인지 · 떠 있는지 확인합니다 |
2. 플레이어 실행하기 에서는 컨테이너 화면에 자식으로 붙였습니다.
PIP 로 쓰려면 PIPKit.show 로 띄우는 방식으로 바꿉니다.
let player = SauceLivePlayerClient.getInstance( broadcastID: "라이브 ID", token: userToken, viewController: self ) player.onClose = { PIPKit.dismiss(animated: true) } // 앱 화면 위에 떠 있는 창으로 표시 — 전체화면으로 시작합니다 PIPKit.show(with: player)
startPlayer() 를 부르지 않습니다 — PIPKit.show 가 플레이어를 자기 창의 최상위 화면으로 올리므로 컨테이너에 붙이는 과정이 필요 없습니다.
시청자가 다른 화면으로 이동할 때 앱이 직접 전환합니다.
PIP 버튼 없이 앱이 직접 전환할 때 사용합니다.
// 작은 창으로 player.startPIPMode() // 이번 창만 다른 모양으로 player.startPIPMode(options: SaucePipOptions(position: .topRight)) // 전체화면으로 복귀 player.stopPIPMode() // 현재 상태 확인 if PIPKit.isPIP { print("작은 창으로 시청 중") }
viewWillDisappear 가 자연스럽습니다. 반대로 플레이어 화면으로 돌아올 때 stopPIPMode() 를 부릅니다.
작은 창의 크기 · 위치 · 버튼 · 테두리 · 그림자는 SaucePipOptions 로 정합니다.
SauceClient.setPipOptions(_:) 로 앱 전체 기본값을 정하거나, startPIPMode(options:) 로 이번 창에만 넘깁니다. → 작은 창 모양 정하기
| 항목 | 정하지 않았을 때 |
|---|---|
| 처음 위치 | 오른쪽 아래 |
| 크기 | 화면 너비 45%(최대 220pt) |
Updated about 19 hours ago
