GuidesAPI GuideChangelog
Log In
Guides

Example

플레이어를 띄우고 이벤트를 처리하는 가장 작은 예제입니다. AppDelegate 초기화와 플레이어를 담을 화면 하나로 구성됩니다.

Example — 소스라이브 플레이어 iOS SDK
📄 복사해서 바로 쓸 수 있는 최소 예제
📋 필요한 값: 활성화 키 · 라이브 ID
최소 통합 예제

플레이어를 띄우고 이벤트를 처리하는 가장 작은 예제입니다.
구성은 파일 두 개입니다 — 초기화용 AppDelegate 와 플레이어를 담을 화면 하나.

💡 이 예제는 게스트 시청 기준입니다. 회원으로 시청하려면 token 에 사용자 토큰을 넣으세요. → 3. 사용자 인증하기
① AppDelegate 초기화

앱이 시작될 때 한 번만 호출합니다.

Swift
import UIKit
import SauceSDK

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        SauceClient.initInstance(
            activationKey: "발급받은 활성화 키",
            apiHost: .stage
        )
        return true
    }
}
⚠️ 활성화 키를 소스 코드에 그대로 적지 마세요 — 저장소에 올라가면 유출됩니다. 빌드 설정이나 서버에서 주입하는 방식을 쓰고, 위 예제의 문자열은 어디에 넣는지 보여 주기 위한 자리 표시입니다.
② 플레이어 화면 전체 코드

이 화면을 모달이나 내비게이션으로 띄우면 플레이어가 실행됩니다.

Swift
import UIKit
import SauceSDK

class LivePlayerVC: UIViewController {

    private let broadcastID: String
    private let userToken: String?
    private var player: SauceLivePlayerClient?

    init(broadcastID: String, userToken: String? = nil) {
        self.broadcastID = broadcastID
        self.userToken = userToken
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder: NSCoder) { fatalError() }

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .black

        // 초기화·권한 확인 — 통과하지 못하면 앱이 종료됩니다
        guard SauceClient.isInitialized,
              SauceClient.isLiveEnabled() else {
            dismiss(animated: true)
            return
        }

        let player = SauceLivePlayerClient.getInstance(
            broadcastID: broadcastID,
            token: userToken,
            viewController: self
        )

        // 콜백은 startPlayer() 보다 먼저
        player.onClose = { [weak self] in
            self?.dismiss(animated: true)
        }

        player.onLogin = { [weak self] in
            // 앱의 로그인 화면을 띄운다. 로그인 후에는 새 토큰으로 다시 실행해야 합니다
            self?.presentLoginScreen()
        }

        player.onCouponEvent = { linkUrl in
            guard let linkUrl = linkUrl, !linkUrl.isEmpty else { return }
            print("쿠폰 링크:", linkUrl)
        }

        player.startPlayer()
        self.player = player     // 참조 보관 — 없으면 해제될 수 있습니다
    }

    private func presentLoginScreen() { /* 앱 로그인 화면 */ }
}
Swift — 띄우는 쪽
let vc = LivePlayerVC(broadcastID: "어드민에서 확인한 라이브 ID")
vc.modalPresentationStyle = .fullScreen
present(vc, animated: true)
예제에서 짚어둘 것
  • 1
    콜백을 startPlayer() 보다 먼저 등록했습니다. 순서가 바뀌면 실행 직후 이벤트를 놓칠 수 있습니다.
  • 2
    apiHost: .stage 로 두었습니다 — 연동·테스트 단계라 테스트 서버를 씁니다. 실제 방송을 보려면 .prod 로 바꿉니다.
  • 3
    인스턴스를 프로퍼티에 보관했습니다. 지역 변수에만 두면 해제될 수 있고 closePlayer() 도 부를 수 없습니다.
  • 4
    onError 는 넣지 않았습니다 — 프로퍼티는 있지만 호출되지 않습니다. → Error codes
  • 5
    초기화·권한을 guard 로 확인했습니다. 없으면 getInstance 에서 앱이 종료됩니다.


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

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

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