Example
플레이어를 띄우고 이벤트를 처리하는 가장 작은 예제입니다. AppDelegate 초기화와 플레이어를 담을 화면 하나로 구성됩니다.
최소 통합 예제
플레이어를 띄우고 이벤트를 처리하는 가장 작은 예제입니다.
구성은 파일 두 개입니다 — 초기화용 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에서 앱이 종료됩니다.
Updated about 1 hour ago
Did this page help you?