E. PIP로 바로 시작하기
시청자가 방송을 보기 전에 앱이 PIP 로 바로 시작합니다. showFloatingPlayer() 는 지정한 라이브 ID 를, setOnAirInit() 은 진행 중인 방송 중 SDK 가 고른 하나를 띄웁니다.
둘 다 작은 창으로 보이지만 시작하는 시점이 다릅니다.
D. PIP로 전환하기 는 보던 플레이어가 다른 화면으로 넘어갈 때 작아지는 것이고, 이 페이지는 보기 전에 앱이 원하는 화면에서 PIP 로 바로 시작하는 것입니다.
전체화면을 거치지 않고 처음부터 작은 창으로 보입니다.
| D. PIP로 전환하기 | E. PIP로 바로 시작하기 | |
|---|---|---|
| 시작 시점 | 시청자가 방송을 보던 중 | 시청자가 방송을 보기 전 |
| 시작하는 쪽 | 시청자 — 홈 버튼·다른 앱으로 전환 | 앱 코드 |
| 목적 | 보던 방송 이어 보기 | 진행 중인 방송으로 시청자 유입 |
작은 창은 한 번에 하나만 뜹니다. PIP 창이 떠 있을 때 이 페이지의 방식으로 띄우면 기존 PIP 창이 닫히고 새 창만 남습니다.
인자는 2. 플레이어 실행하기 와 같습니다.
token 을 넘기지 않으면 게스트로, 넘기면 회원으로 시청합니다.
// 게스트로 띄우기 SauceClient.showFloatingPlayer( context = this, broadcastId = "라이브 ID", token = null ) // 회원으로 띄우기 — 사용자 토큰을 함께 전달 SauceClient.showFloatingPlayer( context = this, broadcastId = "라이브 ID", token = "발급받은 사용자 토큰" )
| 파라미터 | 필수 | 설명 |
|---|---|---|
context | 필수 | 호출하는 화면의 컨텍스트 |
broadcastId | 필수 | 띄울 라이브 ID → 라이브 ID 확인하기 |
token | 선택 | 사용자 토큰. null 이면 게스트로 시청합니다 |
showFloatingPlayer() 로 띄운 창은 시청자가 닫습니다. 작은 창의 닫기 버튼으로 끕니다. 앱 코드에서 끄거나 이미 떠 있는지 확인해야 한다면 담당자에게 문의해 주세요.
setOnAirInit() 은 파트너의 LIVE 방송 중 가장 최근에 시작한 방송 하나를 SDK 가 골라, LIVE 뱃지가 붙은 작은 창으로 띄웁니다.
라이브 ID 를 앱이 정하면 위의 showFloatingPlayer(), 방송 선택까지 SDK 에 맡기면 setOnAirInit() 을 씁니다.
import com.mobidoo.saucelive.player.SauceLivePlayerClient // 가능하면 현재 화면 Activity 를 넘깁니다 SauceLivePlayerClient.setOnAirInit( context = this, partnerId = "파트너 ID", )
위치·크기·뱃지 이미지를 정하고, 선택 결과와 상태를 받으려면 옵션과 리스너를 함께 넘깁니다.
import com.mobidoo.saucelive.player.SauceLivePlayerClient SauceLivePlayerClient.setOnAirFloatingListener(object : OnAirFloatingListener { override fun onStateChanged(state: OnAirFloatingState, broadcastId: String?) { // FULL / MINI / OS_PIP / CLOSED } override fun onFloatingClosed(broadcastId: String?, reason: OnAirCloseReason) { // USER / HOST / BROADCAST_ENDED } }) SauceLivePlayerClient.setOnAirInit( context = this, partnerId = "파트너 ID", options = OnAirFloatingOptions( widthDp = 120, position = OnAirFloatingPosition.BOTTOM_RIGHT, offsetYDp = 56, // 하단 탭바만큼 띄우기 badgeImageUrl = "https://example.com/live-badge.svg", activityFilter = { activity -> activity !is CheckoutActivity }, ), token = "발급받은 사용자 토큰", ) { result -> when (result) { is OnAirResult.Selected -> { /* result.broadcastId, result.broadcastStateCode */ } OnAirResult.None -> { /* LIVE 방송 없음 또는 조회 실패 */ } } }
env 는 초기화의 환경과 별개입니다. setOnAirInit() 의 env 는 LIVE 방송 목록을 조회할 환경만 정합니다.생략하면 초기화(
environment)와 관계없이 운영("production") 목록을 조회합니다. 스테이지로 테스트할 때는 초기화와 별도로 env 도 "stage" 로 지정합니다.
작은 창은 영상만 재생합니다. 채팅·상품 등 상호작용은 없습니다.
탭하면 전체 플레이어로 전환되고, 같은 영상이 끊김 없이 이어집니다.
드래그로 옮길 수 있고, 놓으면 가장 가까운 모서리에 붙습니다.
옵션·결과·호스트 제어 메서드 전체 → API · 리스너 → Event handler
| 항목 | 동작 |
|---|---|
| OS 버전 | Android 13(API 33) 이상은 앱 화면 위 작은 창으로 띄웁니다. API 32 이하는 작은 창 없이 바로 OS PIP 로 엽니다. SDK 최소 버전은 API 26 입니다. |
| 방송 선택 | 상태가 onair·warning 인 방송 중 시작 시각이 가장 최근인 하나를 고릅니다. 시작 시각이 없는 방송은 뒤로 갑니다.목록은 호출 1회당 1회 조회합니다. |
| 방송 교체 | 띄운 뒤 다른 방송이 시작돼도 바뀌지 않습니다. 다시 고르려면 setOnAirInit() 을 다시 호출합니다. |
| 다시 호출 | 기존 창을 통지 없이 닫고 새로 조회합니다. 한 번에 하나만 뜹니다. |
| 방송 종료 | 작은 창과 OS PIP 동안 30초마다 방송 상태를 확인합니다. LIVE 가 아니게 되면 뱃지를 숨기고 닫습니다( BROADCAST_ENDED). 조회에 실패하면 유지합니다. |
| 뱃지 이미지 | PNG·SVG 만 씁니다. JPG 이거나 3초 안에 불러오지 못하면 기본 LIVE 뱃지를 표시합니다. 뱃지 높이 24dp, 최대 너비 80dp. |
| 백그라운드 | 작은 창 상태로 백그라운드로 가면 재생을 멈추고, 돌아오면 이어서 재생합니다. |
| 권한 | 매니페스트 선언이 필요 없습니다. SDK 매니페스트에 포함돼 있습니다. |
스크롤 위치에 따라 띄우는 옵션은 없습니다.
앱이 스크롤을 감지해 원하는 시점에 호출합니다.
-
1스크롤 위치를 감지합니다. 화면의 스크롤 리스너에서 현재 위치를 읽습니다.
-
2기준을 넘으면 호출합니다.
showFloatingPlayer()또는setOnAirInit()을 부릅니다.
Updated about 7 hours ago
