API
앱에서 호출하는 메서드입니다. 대부분의 연동은 초기화·콜백 등록·플레이어 실행 세 개로 끝나며, PIP 제어는 필요할 때만 씁니다.
앱에서 호출하는 메서드입니다.
대부분의 연동은 아래 세 개로 끝납니다 — 초기화, 콜백 등록, 플레이어 실행.
PLAY — 초기화와 실행
| 메서드 | 파라미터 | 설명 |
|---|---|---|
SauceClient.initInstance |
appKey 필수apiHost 선택 |
SDK 를 초기화합니다. AppDelegate 에서 한 번만 호출하세요.apiHost 는 .stage(테스트) 또는 .prod(운영). 생략하면 .prod 입니다→ 1. SDK 설치하기 |
SauceClient.setLivePlayerCallback |
callback 필수( nil 가능) |
앱 전체 콜백을 등록합니다. nil 로 해제합니다.→ Event handler |
SauceClient.startLivePlayer |
broadcastID 필수token 선택from 필수 |
인스턴스 생성과 실행을 한 번에 합니다. 인스턴스를 반환합니다. → 2. 플레이어 실행하기 |
SauceClient.updateAccessToken |
token 필수 |
로그인 후 발급받은 토큰을 실행 중인 플레이어에 반영합니다. 플레이어가 없으면 다음 실행에 사용됩니다. → 3. 사용자 인증하기 |
SauceLivePlayerClient.getInstance |
broadcastID 필수token 선택viewController 필수 |
플레이어 인스턴스를 만듭니다. viewController 는 플레이어를 담을 컨테이너입니다.token 을 생략하면 게스트로 시청합니다→ 2. 플레이어 실행하기 |
startPlayer() |
없음 | 플레이어를 컨테이너의 자식 화면으로 추가하고 재생을 시작합니다. 콜백을 모두 등록한 뒤 호출하세요 |
closePlayer() |
없음 | 플레이어를 정리하고 컨테이너에서 제거합니다. 시청자가 닫은 경우는 onClose 로 옵니다 |
PIP — 작은 창
| 메서드 | 파라미터 | 설명 |
|---|---|---|
PIPKit.show |
with 필수completion 선택 |
플레이어를 앱 화면 위에 떠 있는 창으로 표시합니다. 전체화면으로 시작합니다. 이어서 startPIPMode() 를 부르면 작은 창으로 바로 시작합니다→ D. PIP로 전환하기 · E. PIP로 바로 시작하기 |
PIPKit.dismiss |
animated 필수completion 선택 |
떠 있는 창을 닫습니다 |
startPIPMode() |
없음 | 전체화면 → 작은 창으로 전환합니다. 위치·크기는 SDK 고정값입니다 |
stopPIPMode() |
없음 | 작은 창 → 전체화면으로 복귀합니다 |
ONAIR — 진행 중인 방송 띄우기
SauceLivePlayerClient.setOnAirInit(partnerID:env:options:token:completion:) (static) — 파트너의 LIVE 방송 중 가장 최근에 시작한 방송 하나를 골라 작은 창으로 띄웁니다. SauceClient 초기화 이후 호출합니다. → E. PIP로 바로 시작하기
| 파라미터 | 타입 | 설명 |
|---|---|---|
partnerID 필수 | String | 비어 있으면 .none |
env 선택 | SauceOnAirEnv | .production(기본) 또는 .stage.LIVE 방송 목록의 조회 환경만 정합니다. 초기화의 apiHost 와 별개이며, 생략하면 항상 운영입니다 |
options 선택 | SauceOnAirFloatingOptions | 작은 창 옵션 (아래 표) |
token 선택 | String? | 사용자 토큰 |
completion 선택 | ((SauceOnAirResult) -> Void)? | 방송 선택 결과 (아래 표) |
SauceOnAirFloatingOptions
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
width | CGFloat | 150 | 창 너비(pt) |
height | CGFloat? | nil | 창 높이(pt). nil 이면 너비의 16/9 |
position | Position | .bottomRight | 처음 뜨는 모서리..topLeft · .topRight · .bottomLeft · .bottomRight |
offsetX | CGFloat | 0 | 기본 여백 20pt 에 더하는 가로 여백 |
offsetY | CGFloat | 0 | 기본 여백 20pt 에 더하는 세로 여백 |
badgeImageUrl | String? | nil | 뱃지 이미지(PNG·SVG). 없으면 기본 LIVE 뱃지 |
SauceOnAirResult
| 값 | 설명 |
|---|---|
.selected(broadcastID:state:) | 방송을 골라 띄웠습니다 |
.none | 아무것도 띄우지 않았습니다. LIVE 방송 없음 · 조회 실패 · 잘못된 입력(파트너 ID 없음, SauceClient 미초기화 등) |
제어
| 메서드 | 설명 |
|---|---|
SauceLivePlayerClient.activeClient?.startPIPMode() | 전체 플레이어 → 작은 창 |
SauceLivePlayerClient.activeClient?.stopPIPMode() | 작은 창 → 전체 플레이어 |
SauceLivePlayerClient.closeOnAirFloating() | setOnAirInit 으로 띄운 창(작은 창·전체 플레이어·시스템 PIP)만 완전히 닫습니다. 떠 있지 않으면 아무 동작도 하지 않습니다.닫힘 원인은 .host. 전체 플레이어로 되돌리는 stopPIPMode() 와 다릅니다 |
ETC — 조회와 설정
| 메서드 · 프로퍼티 | 반환 | 설명 |
|---|---|---|
SauceClient.isInitialized | Bool | 초기화 여부. 플레이어를 만들기 전에 확인하면 안전합니다 |
SauceClient.isLiveEnabled() | Bool | appKey 에 라이브 사용 권한이 있는지 |
SauceClient.partnerID | String? | appKey 에서 확인된 파트너 ID |
SauceClient.setAccessToken(_:) | — | 실행 전에 회원 토큰을 지정합니다 |
PIPKit.isActive | Bool | 떠 있는 창이 표시 중인지. 중복 실행 방지에 사용합니다 |
PIPKit.isPIP | Bool | 현재 작은 창 상태인지 |
setAPIHost(_:) · getAPIHost() | — | 인스턴스별 서버 환경. 보통 초기화에서 정하므로 쓰지 않습니다 |
❗ 초기화 없이
getInstance 를 부르면 앱이 종료됩니다 — 초기화 여부와 라이브 권한을 내부에서 검사하고, 통과하지 못하면 실행을 중단합니다. SauceClient.isInitialized 로 먼저 확인하세요.
❗ 쓰지 말아야 할 것 —
SauceLivePlayerClient.initInstance(partnerID:apiHost:) 는 더 이상 사용하지 않습니다. 초기화는 SauceClient.initInstance 하나로 합니다.
Updated 12 days ago
Did this page help you?
