GuidesAPI GuideChangelog
Log In
Guides

Example

플레이어를 띄우고 이벤트를 처리하는 가장 작은 예제입니다. 초기화용 Application 과 플레이어를 실행할 화면, 파일 두 개로 구성됩니다.

Example — 소스라이브 플레이어 Android SDK
📄 파일 2개로 끝나는 최소 예제
📋 사전 조건: 파트너 토큰 · 라이브 ID
최소 통합 예제

플레이어를 띄우고 앱이 받아야 할 이벤트를 처리하는 가장 작은 형태입니다.
구성은 파일 두 개입니다 — 초기화용 Application 과 플레이어를 실행할 화면 하나.

💡 단계별 설명이 필요하면 — 이 예제는 전체 그림을 보기 위한 것입니다. 각 부분의 이유와 선택지는 Quickstart 에서 다룹니다.
전체 코드
① MyApplication.kt — 앱 시작 시 한 번
Kotlin
import android.app.Application
import com.mobidoo.sauce.SauceClient

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        SauceClient.init(
            context      = this,
            partnerToken = "발급받은 파트너 토큰",
            stageMode    = true    // 테스트 환경. 실제 서비스에서는 false
        )
    }
}
⚠️ 파트너 토큰을 소스 코드에 그대로 적지 마세요 — 저장소에 올라가면 유출됩니다. 빌드 설정이나 서버에서 주입하는 방식을 쓰고, 위 예제의 문자열은 어디에 넣는지 보여 주기 위한 자리 표시입니다.
② LiveActivity.kt — 플레이어 실행 + 이벤트 처리
Kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.mobidoo.sauce.SauceClient
import com.mobidoo.saucecore.callbacklistener.LivePlayerCallbackListener

class LiveActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_live)

        // 1) 이벤트 리스너를 먼저 등록합니다
        registerCallbacks()

        // 2) 플레이어를 실행합니다
        findViewById<Button>(R.id.btn_watch).setOnClickListener {
            SauceClient.startLivePlayer(
                context     = this,
                broadcastId = "어드민에서 확인한 라이브 ID",
                token       = "앱이 보관한 사용자 토큰"   // 없으면 null → 게스트로 시청
            )
        }
    }

    private fun registerCallbacks() {
        SauceClient.setLivePlayerCallbackListener(object : LivePlayerCallbackListener {

            // 게스트가 로그인이 필요한 기능을 시도했을 때
            // 주의: 이 시점에 플레이어는 이미 닫혀 있습니다
            override fun onLoginRequest() {
                startActivity(Intent(this@LiveActivity, LoginActivity::class.java))
            }

            // 시청자가 장바구니 버튼을 눌렀을 때
            override fun onCart(productId: String) {
                if (productId.isBlank()) return      // 어드민에 상품 ID 가 없으면 빈 값이 옵니다
                cartRepository.add(productId)
            }

            // 쿠폰 — 어드민에 등록한 타입에 따라 둘 중 하나가 호출됩니다
            override fun onCouponDownload(couponCode: String) {
                couponRepository.issue(couponCode)
            }

            override fun onCouponCustom(couponData: String) {
                // 형식은 운영 담당자와 합의한 규칙을 따릅니다
            }
        })
    }
}
예제에서 짚어둘 것
지점이유
토큰을 소스에 직접 쓰지 않음 파트너 토큰은 빌드 설정이나 보안 저장소에서 주입하세요. 소스에 넣으면 앱을 분석해 꺼낼 수 있습니다
리스너를 먼저 등록 플레이어를 실행한 뒤 등록하면 초기 이벤트를 놓칠 수 있습니다
onLoginRequest 에서 화면 이동 이 콜백이 올 때 플레이어는 이미 닫혀 있습니다. 로그인 후 startLivePlayer 를 다시 호출하세요
productId 빈 값 검사 어드민에 상품 ID 를 입력하지 않았다면 빈 문자열이 전달됩니다
디버그 빌드에서 테스트 환경 연동·테스트 중에는 true 로 두어 테스트 데이터가 실제 집계에 섞이지 않게 하세요. 실제 서비스 배포 전에 false 로 바꿉니다
여기서 더 나아가려면
하고 싶은 것참고
회원으로 시청하게 하기3. 사용자 인증하기
다른 화면으로 이동해도 시청 유지D. PIP 설정하기
콜백·메서드 전체 목록API Reference


Did this page help you?
🏠 소스라이브 🎬 소스클립 🔗 소스링크 📢 소스애드
🧩 API 가이드
🆕 최근 업데이트
💬 도움이 더 필요하신가요?
메일로 문의 카카오톡 채널로 문의
담당자에게 문의하기

궁금한 점이나 불편했던 점을 남겨주시면 담당자가 확인 후 답변드릴게요.

가이드 챗봇 BETA
* AI를 활용해 답변해서 사실과 다를 수도 있어요. 더 궁금한 사항은 '담당자에게 문의하기'를 이용해주세요.
💡 궁금한 솔루션(예: 라이브, 링크 등)을 함께 적어주시면 더 정확한 답변을 받을 수 있어요.