2. 플레이어 실행하기
라이브 ID 하나로 SauceClient.startLivePlayer() 를 호출해 네이티브 플레이어를 띄웁니다. AndroidManifest 추가 선언은 필요하지 않습니다.
한 줄로 띄워보기
준비물은 라이브 ID 하나입니다.
토큰을 넘기지 않으면 게스트 모드로 실행되므로, 회원 연동 없이 먼저 화면을 확인할 수 있습니다.
Kotlin
SauceClient.startLivePlayer( context = this, broadcastId = "라이브 ID", token = null // 게스트 모드 — 회원 연동은 다음 단계에서 )
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
context | Context | 필수 | 플레이어를 시작할 Android Context. 일반적으로 Activity 를 전달합니다. |
broadcastId | String | 필수 | 재생할 라이브 ID. VOD 를 재생할 때도 같은 파라미터에 VOD ID 를 전달합니다. |
token | String? | 선택 | 회원 연동용 사용자 토큰.null 이면 게스트 모드로 동작하며, 채팅·리워드 등 회원 기능이 제한됩니다. |
❗ 콜백을 등록하지 않으면 상품을 눌러도 아무 일도 일어나지 않습니다. 상품 클릭·장바구니·쿠폰·로그인은 앱이 콜백으로 받아 처리합니다. 화면 확인만 할 때는 이대로 두어도 되지만, 실제 연동은 3. 사용자 인증하기와 5. 상품 클릭 관리의 콜백까지 등록하세요.
📘 라이브 ID 가 없다면 — 아래 라이브 ID 확인하기에서 발급 위치를 먼저 확인하세요.
AndroidManifest 추가 작업 없음
플레이어 화면을 띄우는 데 필요한 Activity 선언과 권한은 SDK 가 자체 Manifest 에 이미 포함하고 있습니다.
Gradle 의 Manifest 병합이 앱 Manifest 로 자동 반영하므로, 앱에서 따로 추가할 것이 없습니다.
📘 추가 작업 없음 — Activity 등록 · 인터넷 권한 · 화면 회전 대응 · PIP 지원 선언까지 모두 SDK 쪽에 들어 있습니다.
| SDK 가 선언하는 것 | 내용 |
|---|---|
<activity> |
플레이어 화면과 PIP 화면 두 개.supportsPictureInPicture · configChanges(화면 회전·크기) · excludeFromRecents · 전용 테마가 함께 지정됩니다. |
<uses-permission> |
INTERNET · ACCESS_NETWORK_STATE |
📘 화면 회전 — 플레이어 화면이 회전을 직접 처리합니다. 앱의 화면 방향 정책과 무관하게 동작하므로 별도 설정이 필요하지 않습니다.
실행 순서
플레이어가 뜨지 않을 때 어느 단계에서 멈췄는지 이 순서로 짚을 수 있습니다.
-
1초기화 — 앱 시작 시 호출한
SauceClient.init()이 appKey 를 검증하고 플레이어를 사용할 준비를 합니다. appKey 검증에 실패하면 이후 단계가 진행되지 않습니다. -
2실행 요청 —
startLivePlayer()가 초기화가 끝났는지 확인합니다. 준비되지 않았으면 예외를 던지지 않고onError로10004를 보낸 뒤 종료합니다. -
3화면 전환 — 플레이어 Activity 가 시작됩니다. 라이브 ID 와 토큰은 Intent 로 전달됩니다.
-
4설정 조회 후 구성 — Activity 가 서버에서 방송 설정을 받아 플레이어 UI 를 구성합니다. 플레이어의 색상·로고·기능 노출은 이 설정을 따릅니다. 자세한 내용은 고급 설정에 있습니다.
닫기
플레이어가 닫히면 onClose 로 닫힌 이유가 전달됩니다.
Android 는 플레이어가 별도 Activity 라 화면 정리는 SDK 가 하지만, 이유에 따라 앱이 할 일이 다릅니다.
Kotlin
override fun onClose(reason: PlayerCloseReason) { when (reason) { PlayerCloseReason.USER -> { // 시청자가 닫음 — 보통 할 일 없음 } PlayerCloseReason.SYSTEM -> { // 시스템이 닫음 } PlayerCloseReason.UNAVAILABLE -> { // 방송을 열 수 없음 — 안내 후 목록으로 } } }
| 이유 | 언제 | 앱이 할 일 |
|---|---|---|
USER | 시청자가 닫기 버튼을 누름 | 보통 없음 |
SYSTEM | 시스템이 플레이어를 정리함 | 보통 없음 |
UNAVAILABLE | 방송을 열 수 없음 — 비밀번호 입력 취소, 취소된 방송, 방송 정보 조회 실패 등 | 시청자에게 안내하고 이전 화면으로 되돌립니다 |
📘
UNAVAILABLE 은 onError 와 짝으로 옵니다. 먼저 onError 로 원인 코드가 오고 이어서 onClose(UNAVAILABLE) 이 호출됩니다. 어떤 코드가 닫힘으로 이어지는지는 Error codes 에 있습니다.
플레이어가 안 뜰 때
이 SDK 는 초기화가 되지 않았을 때 예외를 던지지 않고 조용히 종료합니다.
화면이 그대로라면 onError 와 Logcat 을 먼저 확인하세요. 코드별 원인은 Error codes 에 있습니다.
| 증상 | 가장 흔한 원인 | 확인 방법 |
|---|---|---|
| 호출해도 화면이 바뀌지 않음 | SauceClient.init() 을 호출하지 않았거나 appKey 검증에 실패 |
onError 의 10001~10004, 또는 Logcat 의 SauceClient 태그 확인 |
| 초기화했는데도 실행되지 않음 | appKey 가 이 서비스에 발급된 것이 아니거나 만료됨 | onError 의 10002. 담당자에게 발급된 appKey 가 유효한지 확인 |
| 플레이어는 뜨지만 방송이 없음 | 라이브 ID 오류, 또는 편성이 시작되지 않은 상태 | 어드민에서 라이브 ID 재확인 (아래) |
| 초기화 로그에 오류가 남음 | 앱이 이미 사용 중인 의존성 주입 설정과 충돌 | Logcat 에서 SauceLivePlayerClient 태그 확인 |
⚠️ 초기화 위치 —
SauceClient.init() 은 Application 클래스의 onCreate() 에서 한 번만 호출합니다. Activity 에서 호출하면 화면을 다시 만들 때마다 재실행되어 예기치 않게 동작할 수 있습니다.
라이브 ID 확인하기
라이브 ID 는 소스 어드민에서 확인합니다.
라이브를 편성한 뒤 라이브 송출 정보 확인에서 값을 복사해 broadcastId 에 그대로 전달하세요.
▲ 어드민 분석 > 라이브 > 상세 > 송출정보에서 라이브 ID를 확인·복사
📘 VOD 재생 — 종료된 방송을 다시 재생하려면 같은
broadcastId 자리에 VOD ID 를 전달합니다. 호출 방법은 동일합니다.
Updated 6 days ago
Did this page help you?
