API: ShopLive Preview

    API: ShopLive Preview


    기사 요약

    Shoplive에서 제공하는 ShopLivePlayerPreview 컴포넌트를 통해서 프리뷰를 직접 구현할 수 있습니다.

    class ViewController : UIViewController {
        let preview = ShopLivePlayerPreview()
        override func viewDidLoad() { 
            super.viewDidLaod()
            self.view.addSubView(preview)
            preview.translatesAutoresizingMaskIntoConstraints = false
            NSLayoutConstraint.activate([
                preview.topAnchor.constraint(equalTo: self.topAnchor),
                preview.leadingAnchor.constraint(equalTo: self.leadingAnchor),
                preview.trailingAnchor.constraint(equalTo: self.trailingAnchor),
                preview.bottomAnchor.constraint(equalTo: self.bottomAnchor)
            ])
            setPreview()
        }
    
        func setPreview() { 
            preview.action( .initialize ) 
            preview.action( .start(accessKey : "ACCESS_KEY", campaignKey : "CAMPAIGN_KEY", referrer : "REFERRER(optional)")
        }
    }


    Action types

    ShopLivePlayerPreview의 명령을 호출하고 싶다면, .action(.{command})를 통해서 호출할 수 있습니다.

    preview.action( .play)
    preview.action( .pause)
    ... 

    Case

    Description

    initialize

    ShopLivePlayerPreview의 객체의 정보를 초기화합니다. 다음과 같은 정보들이 초기화 됩니다.

    • campaignKey, campaignId, shopLiveSessionId, campaignStatus, resizeMode, useCloseButton

    start(accessKey : String campaignKey : String, referrer : String?)

    accessKey와 CampaignKey를 주입하여 플레이어를 로딩합니다.

    setMuted(Bool)

    ShopLivePlayerPreview의 음소거 상태를 설정합니다.

    setReferrer(String?)

    방송을 추적할 수 있는 고유 식별자를 주입합니다.

    play

    방송을 재생합니다.

    pause

    방송을 정지합니다.

    stop

    방송을 정지하며, 플레이어를 초기화 시킵니다.

    close

    ShopLivePlayerPreview를 부모뷰에서 제거하며 메모리 해제를 시작합니다.

    retry

    방송을 다시 실행시킵니다.

    setCornerRadius(CGFLoat)

    ShopLivePlayerPreview의 cornerRadius를 설정합니다.

    useCloseButton(Bool)

    ShopLivePlayerPreview의 닫기 버튼 사용 유무를 설정합니다.

    setEnabledVolumeKey(Bool)

    ShopLivePlayerPreview에서 디바이스의 음량 버튼 이벤트를 활성화 여부를 설정합니다.

    setResizeMode(ShopLiveResizeMode)

    영상의 종횡비를 유지할 수 있습니다.(Default: ShopLiveResizeMode.CENTER_CROP)

    setResolutionType(ShopLivePlayerPreviewResolution)

    Preview의 해상도를 .LIVE 설정합니다. 혹은 .PREVIEW으로 설정합니다. (Default : .PREVIEW)


    Result types

    ShopLivePlayerPreview에서 발생하는 이벤트를 구독할 수 있습니다.

    preview.resultHandler = { [weak self] result in 
        switch result { 
            case .log(name : let name, feature : let feature, campaignKey : let campaignKey, payload : let paylaod):
                // handle data
            .
            .
            .
        }
    
    }

    Case

    Description

    log(name : String, feature : ShopLiveLog.feature, campaignKey : String, payload : [String : Any]?)

    Shoplive Player의 이벤트 로그를 전달합니다. 이 정보는 Google Analytics 등의 분석 도구에서 사용할 수 있습니다.

    handleReceivedCommand(command : String, payload : [String : Any]?)

    Shoplive iOS SDK의 WEB으로부터 수신된 명령어 정보를 전달합니다.

    avPlayerTimeControlStatus(AVPlayer.TimeControlStatus)

    ShopLivePlayerPreviewAVPlayer의 현재 재생 상태가 변경될시 전달합니다.

    avPlayerItemStatus(AVPlayerItem.Status)

    ShopLivePlayerPreviewAVPlayerItem의 현재 상태가 변경될시 전달합니다.

    requestShowAlertController(UIAlertController)

    UIAlertController의 호출이 필요할때 이벤트가 전달됩니다.

    didChangeCampaignStatus(ShopLiveCampaignStatus)

    방송 상태가 변경되었을 때 변경된 방송 상태를 전달합니다.

    onError(code : String, message : String)

    방송 전 또는 방송 중 발생하는 오류 상황에 관한 메시지를 전달합니다.

    onSetUserName(payload : [String : Any]?)

    사용자 이름이 변경되었을 때 호출됩니다.

    handleShare(ShopLivePlayerStateData)

    방송 중 공유하기 버튼을 탭했을 때 호출 됩니다. ShopLivePlayerStateData의 자세한 데이터는 다음 링크에서 볼 수 있습니다.

    didChangeCampaignInfo([String:Any]?)

    현재 방송에 관한 정보를 전달합니다.

    didChangeVideoDimension(CGSize)

    미리보기 화면의 가로 세로 비율을 얻을 수 있습니다.

    handleShopLivePlayerCampaign(ShopLivePlayerCampaign)

    Shoplive의 방송 캠페인에 대한 정보를 받을 수 있는 handler입니다.

    handleShopLivePlayerBrand(ShopLivePlayerBrand)

    Shoplive의 방송 브랜드에 대한 정보를 받을 수 있습니다.


    What's Next