API - Option

setShareScheme(_ scheme:, custom:)

공유하기를 선택(탭) 했을 때 시스템 공유 팝업으로 전달할 scheme을 설정합니다.
custom callback 함수를 설정하면 iOS 시스템 공유 팝업 대신 직접 커스텀 공유 팝업을 구현할 수 있습니다.

setShareScheme(_ scheme: String?, custom: (() -> Void)?)
매개변수설명
scheme공유할 scheme 또는 URL
custom커스텀 공유 팝업 설정

샘플 코드

let scheme = "shoplive://live"
let scheme = "https://shoplive.cloud/live"

// iOS 시스템 공유 팝업
ShopLive.setShareScheme(scheme, custom: nil)

// 커스텀 공유 팝업
ShopLive.setShareScheme(scheme, custom: {
    let alert = UIAlertController.init(title: "Use Custom Share", message: nil, preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
    }))
    ShopLive.viewController?.present(alert, animated: true, completion: nil)
})

setChatViewFont(inputBoxFont:, sendButtonFont:)

채팅 폰트와 채팅 전송 버튼 폰트를 설정합니다.

setChatViewFont(inputBoxFont: UIFont, sendButtonFont: UIFont)
매개변수설명
inputBoxFont채팅 폰트
sendButtonFont채팅 전송 버튼 폰트

샘플 코드

/**
    // 채팅 폰트 설정
    let inputDefaultFont = UIFont.systemFont(ofSize: 14, weight: .regular)

    // 채팅 전송 버튼 폰트 설정
    let sendButtonDefaultFont = UIFont.systemFont(ofSize: 14, weight: .medium)

*/

let customFont = UIFont(name: "{Custom Font}", size: 16)

// 채팅 폰트 및 채팅 전송 버튼 폰트 변경 
ShopLive.setChatViewFont(inputBoxFont: customFont, sendButtonFont: customFont)

setLoadingAnimation(images:)

영상 로딩 진행률을 이미지 애니메이션으로 설정합니다.

setLoadingAnimation(images: [UIImage])
매개변수설명
images이미지 애니메이션에 사용할 이미지 UIImage 배열

샘플 코드

var images: [UIImage] = []

for i in 1...11 {
    images.append(.init(named: "loading\(i)")!)
}

ShopLive.setLoadingAnimation(images: images)

pipPosition

PIP 모드를 시작할 때 기본 위치를 지정합니다.
처음 재생하고 PIP 모드를 시작하면 지정된 위치에서 시작됩니다.
(기본값: default)

public enum PipPosition: Int {
    case topLeft
    case topRight
    case bottomLeft
    case bottomRight
    case `default`
}
매개변수설명
topLeft화면 좌상단
topRight화면 우상단
bottomLeft화면 좌하단
bottomRight화면 우하단
default마지막 위치
최초 실행 때에는 화면 우하단에서 시작합니다.
var pipPosition: ShopLive.PipPosition { get set }

샘플 코드

print(ShopLive.pipPosition)

fixedPipWidth

PIP의 크기를 width 값을 지정하여 설정 할 수 있습니다.
이 옵션을 사용하면, 설정한 width 기준으로 영상의 ratio에 맞게 pip의 height가 설정됩니다.
서로 다른 기기에서도 동일한 사이즈로 PIP크기를 설정할 수 있습니다.

PIP의 크기 설정 API는 다음과 같이 2가지로 제공되고 있습니다.
pipScale
fixedPipWidth

PIP 크기 설정 API를 적용하는 우선 순위는 다음과 같습니다.
1순위: fixedPipWidth
2순위: pipScale

E.g
pipScale, fixedPipWidth API를 모두 사용하여, PIP 크기를 설정한 경우, fixedPipWidth로 설정한 옵션으로 PIP의 크기가 설정됩니다.
pipScale API만을 사용하여, PIP 크기를 설정한 경우, pipScale로 설정한 옵션으로 PIP의 크기가 설정됩니다.

var fixedPipWidth: NSNumber? { get set }

샘플 코드

ShopLive.fixedPipWidth = 200

pipScale

PIP 모드를 시작할 때 기본 크기입니다.
처음 재생 후 PIP 모드를 시작하면 지정된 크기로 시작됩니다.
기본값은 마지막으로 지정된 값입니다. 마지막으로 지정된 값이 없다면 기본값은 0.4배 크기입니다.

  • 0.0 ~ 1.0 사이의 값을 입력하세요.
  • 기기 화면의 너비(width) 기준으로 축소된 크기의 PIP 모드를 표시합니다.
  • 재생되는 비디오의 PIP 화면 비율로 변경됩니다.
var pipScale: CGFloat { get set }

샘플 코드

print(ShopLive.pipScale)

startPictureInPicture(with: , scale: )

전체 화면 모드에서 PIP 모드로 전환합니다.

startPictureInPicture(with position: ShopLive.PipPosition, scale: CGFloat)
startPictureInPicture()
매개변수설명
positionPIP 모드가 시작될 때 위치
기본값: default
scale0.0 ~ 1.0 사이의 값 입력

샘플 코드

// 0.4배(기본값) 크기로 앱 내 PIP 모드 전환
ShopLive.startPictureInPicture()

// 화면 우하단에서 0.1배 크기로 앱 내 PIP 전환
ShopLive.startPictureInPicture(with: .bottomRight, scale: 0.1)

// 화면 좌상단에서 0.8배 크기로 앱 내 PIP 전환
ShopLive.startPictureInPicture(with: .topLeft, scale: 0.8)

크기 설정 예시

크기PIP 화면크기PIP 화면크기PIP 화면
0.10.4
(기본)
0.8

stopPictureInPicture()

PIP 모드를 전체 화면 모드로 전환합니다.

stopPictureInPicture()

샘플 코드

ShopLive.stopPictureInPicture()

hookNavigation(navigation: @escaping ((URL) -> Void))

상품 또는 배너를 선택할 때 매개변수에 설정한 custom Callback 함수(매개변수로 입력한 navigation)로 직접 이벤트를 받습니다.

hookNavigation(navigation: @escaping ((URL) -> Void))
매개변수설명
navigation상품 또는 배너를 선택할 때 호출되는 block

- 선택한 상품 또는 배너의 URL 전달

샘플 코드

ShopLive.hookNavigation { url in
       // url: 선택한 상품 또는 배너에 설정된 상세 정보 URL
       print("hookNavigation \(url)")
   }

KeepWindowStyleOnReturnFromOsPip 옵션

setKeepWindowStyleOnReturnFromOsPip(_ keep: Bool)

OS PIP를 사용하는 경우 Shoplive Player가 재생중인 상태(pip, fullscreen)에서 홈화면 또는 다른 앱으로 이동(백그라운드 상태로 전환) 하면서 영상이 OS PIP로 진입된 후,
다시 앱으로 돌아오면서 마지막 재생중이던 상태(pip, fullscreen)로 전환 또는 항상 전체화면으로만 전환되도록 선택할 수 있습니다.

setKeepWindowStyleOnReturnFromOsPip(_ keep: Bool)
매개변수설명
keepOS PIP상태에서 앱으로 돌아올 때 플레이어 재생중 상태를 설정
false: 항상 전체화면으로 전환
true: 마지막 재생중이던 상태(pip, fullscreen)로 전환 (기본값)

샘플 코드

// OS PIP로 전환 되기전 마지막 재생중 상태로 유지하도록 설정
ShopLive.setKeepWindowStyleOnReturnFromOsPip(true)

// OS PIP상태에서 앱으로 전환되면서 항상 전체화면으로 전환되도록 설정
ShopLive.setKeepWindowStyleOnReturnFromOsPip(false)

isKeepWindowStyleOnReturnFromOsPip

현재 설정된 깂을 반환합니다.

false: 항상 전체화면으로 전환
true: 마지막 재생중이던 상태(pip, fullscreen)로 전환 (기본값)

isKeepWindowStyleOnReturnFromOsPip() -> Bool


샘플 코드

print(ShopLive.isKeepWindowStyleOnReturnFromOsPip())

setKeepAspectOnTabletPortrait(_ keep:)

태블릿 세로모드에서 Shoplive 화면의 비율을 설정합니다.
true: 화면 비율 유지 (기본값)
false: 화면 가득 채움

setKeepAspectOnTabletPortrait(_ keep: Bool)
매개변수설명
keep화면 비율 유지 여부 설정

샘플 코드

ShopLive.setKeepAspectOnTabletPortrait(true)

user

Shoplive를 사용하는 인증된 사용자입니다.
사용자를 인증하기 위해 사용자 정보를 입력합니다.

var user: ShopLiveUser? { get set }
// 사용자 성별
public enum Gender : Int, Codable, CaseIterable {
    case female = 1
    case male = 2
    case neutral = 3
    case unknown = 0
}
public class ShopLiveUser: NSObject, Codable {
    let name: String?
    let gender: Gender?
    let id: String?
    let age: Int?

    func add(_ params: [String: Any?])
    func getParams() -> [String: String]
}

add(_ params:)

사용자에 매개변수를 추가합니다.
params - Dictionary (key: value)로 매개변수를 추가합니다.

  • 이 옵션은 사전 협의 후에만 사용할 수 있습니다.
매개변수설명
userScore사용자 점수

샘플 코드

let user = ShopLiveUser(id: "id", name: "name", gender: Gender.male, age: 20)
user.add(["userScore": 40])

ShopLive.user = user

authToken

Shoplive를 사용하는 인증된 사용자의 보안 인증토큰(JWT) string입니다.
사용자 인증을 위해 인증된 사용자의 보안 인증토큰(JWT) string을 입력합니다.

var authToken: String? { get set }

샘플 코드

let generatedJWT = "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MTA1NzA1dfadsfasfadsfasdfwO"

ShopLive.authToken = generatedJWT

style

현재 Shoplive Player 스타일입니다.

var style: ShopLive.PresentationStyle { get }
public enum PresentationStyle: Int {
    case unknown
    case fullScreen
    case pip
}

샘플 코드

print(ShopLive.style)

playerMode

현재 Shoplive Player의 모드입니다.

var playerMode: ShopLive.PlayerMode { get }
public enum PlayerMode: Int {
    case play
    case preview
    case none
}
매개변수설명
playplay api로 Player가 실행된 상태로 영상(리허설, 라이브, 다시보기)를 재생중
previewpreview api로 Player가 실행된 상태로 미리보기 재생중
nonePlayer가 실행중이지 않은 상태

orientationMode

현재 Shoplive Platyer에서 재생중인 방송의 영상 비율 정보입니다.

var orientationMode: ShopLive.VideoOrientation { get }
public enum VideoOrientation: Int {
    case portrait
    case landscape
    case unknown
}
매개변수설명
portrait세로 비율 모드의 방송 (비율 예 - 9:16)
landscape가로 비율 모드의 방송(비율 예 - 16:9)
unknown모드를 알수 없는 상태, 방송 중이지 않거나, SDK로 방송 정보 정보가 아직 업데이트 되지 않은 상태

playerWindow

현재 Shoplive Player가 표시되고 있는 UIWindow의 인스턴스입니다.

var playerWindow: UIWindow? { get }

viewController

현재 Shoplive Player가 표시되고 있는 UIViewController의 인스턴스입니다.

var viewController: ShopLiveViewController? { get }

샘플 코드

// Shoplive Player 위에 Alert를 표시
let alert = UIAlertController.init(title: "Alert on Player", message: nil, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))

ShopLive.viewController?.present(alert, animated: true, completion: nil)

indicatorColor

로딩 인디케이터 색을 설정합니다.

var indicatorColor: UIColor { get set }

샘플 코드

ShopLive.indicatorColor = UIColor.red

isSuccessCampaignJoin() -> Bool

방송 진입 성공 여부를 확인합니다.
관련 Callback: handleReceivedCommand - ON_SUCCESS_CAMPAIGN_JOIN

isSuccessCampaignJoin() -> Bool

샘플 코드

print(ShopLive.isSuccessCampaignJoin())

AutoResumeVideoOnCallEnded 옵션

통화 종료 후 영상으로 돌아왔을 때, 자동 재생이 되도록 설정합니다.

setAutoResumeVideoOnCallEnded(_ autoResume: Bool)

setAutoResumeVideoOnCallEnded(_ autoResume: Bool)
매개변수설명
autoResume통화 종료 후, 영상 자동 재생
true: 자동 재생
false: 자동 재생되지 않음 (기본값)

샘플 코드

ShopLive.setAutoResumeVideoOnCallEnded(true)

isAutoResumeVideoOnCallEnded() -> Bool

현재 설정된 값을 반환합니다.
true: 통화 종료 후 자동재생
false: 통화종료 후 영상 정지

isAutoResumeVideoOnCallEnded() -> Bool

샘플 코드

print(ShopLive.isAutoResumeOnCallEnded())

KeepPlayVideoOnHeadphoneUnplugged 옵션

이어폰(또는 헤드셋) 연결이 끊겼을 때, 영상을 중지하지 않고 자동 재생이 되도록 설정합니다.

setKeepPlayVideoOnHeadphoneUnplugged(_ keepPlay: Bool)

이어폰(또는 헤드셋) 연결이 끊겼을 때, 영상을 중지하지 않고 자동 재생이 되도록 설정합니다.

setKeepPlayVideoOnHeadphoneUnplugged(_ keepPlay: Bool)
매개변수설명
keepPlay이어폰(또는 헤드셋) 연결이 끊겼을 때, 계속 영상 재생
true: 자동 재생
false: 자동 재생되지 않음(기본값)

샘플 코드

ShopLive.setKeepPlayVideoOnHeadphoneUnplugged(true)

isKeepPlayVideoOnHeadPhoneUnplugged() -> Bool

현재 설정된 값을 반환합니다.
true: 영상 계속 재생
false: 연결이 끊기면 영상 정지

isKeepPlayVideoOnHeadPhoneUnplugged() -> Bool

샘플 코드

print(ShopLive.isKeepPlayVideoOnHeadPhoneUnplugged())

NextActionOnHandleNavigation 옵션

사용자가 상품, 공지사항, 배너 등 링크를 선택하였을 때, Shoplive Player의 다음 동작을 설정합니다.

public enum ActionType: Int {
    case PIP
    case KEEP
    case CLOSE
}
매개변수설명
PIPPIP 전환
KEEP상태 유지
CLOSE종료

setNextActionOnHandleNavigation(actionType:)

setNextActionOnHandleNavigation(actionType: ActionType)
매개변수설명
actionType사용자의 링크 선택 시 Shoplive Player의 다음 동작

샘플 코드

// PIP 전환
ShopLive.setNextActionOnHandleNavigation(.PIP)

// 상태 유지
ShopLive.setNextActionOnHandleNavigation(.KEEP)

// 종료
ShopLive.setNextActionOnHandleNavigation(.CLOSE)

getNextActionTypeOnHandleNavigation() -> ActionType

사용자의 링크 선택 시 설정된 Shoplive Player의 다음 동작을 확인합니다.

getNextActionTypeOnHandleNavigation() -> ActionType

샘플 코드

print(ShopLive.getNextActionTypeOnHandleNavigation())

setEndpoint(_ url:)

Shoplive Player의 Web Landing 페이지가 아닌 특정 Landing 페이지 또는 URL에서 Shoplive 서비스를 사용해야 할 때 사용합니다.
예를 들어, 보안으로 인해 Shoplive Landing 페이지를 사용할 수 없는 경우, 특정 도메인으로 Landing 페이지를 생성할 수 있습니다.

※ Shoplive Player의 Web Landing 페이지는 Shoplive와 협의 후 적용할 수 있습니다.

setEndpoint(_ url: String?)
매개변수설명
urlShoplive Player의 Web Landing url

샘플 코드

// Shoplive Player의 Web Landing url 설정
ShopLive.setEndpoint("{Shoplive Player의 Web Landing url}")

// 설정 초기화
ShopLive.setEndpoint(nil)

sendCommandMessage

서버로 command와 payload를 전달합니다.
사전 정의된 형식의 command, payload 를 전달할 수 있습니다. (또는, Shoplive와 협의하여 command와 payload를 정의할 수 있습니다.)

@objc static func sendCommandMessage(command: String, payload: [String:Any]?)
매개변수설명
command사전 정의된 command
payload사전 정의된 payload

샘플 코드

let command: String = “COMMAND_NAME”
var payload: [String : Any] = [:]

payload[“Int_Data” : 1]
payload[“String_Data” : “Sample_String”]

ShopLive.sendCommandMessage(command: command, payload: payload)

setMuteWhenPlayStart(_ mute: Bool)

Shoplive Player를 시작할 때 사운드가 켜지도록 하거나 음소거하도록 설정합니다.
(기본값: 사운드가 켜진 상태로 Shoplive Player를 시작합니다.)

@objc static func setMuteWhenPlayStart(_ mute: Bool)
매개변수설명
mute음소거 설정 여부
true: 음소거로 시작
false: 사운드 켜진 상태로 시작

샘플 코드

// Shoplive Player를 시작할 때 음소거하도록 설정
ShopLive.setMuteWhenPlayStart(true)

//Shoplive Player를 시작할 때 사운드가 켜지도록 설정
ShopLive.setMuteWhenPlayStart(false)

setPictureInPicturePadding(padding: UIEdgeInsets)

앱 내 PIP에서 PIP 패딩을 설정합니다. (top, left, right, bottom)
(기본값: top, left, right, bottom 모두 20으로 설정)

@objc static func setPictureInPicturePadding(padding: UIEdgeInsets)
매개변수설명
paddingTop, left, right, bottom 등 padding값을 설정합니다.

샘플 코드

// left: 20 right: 30 bottom: 10 top: 10 으로 설정

let padding: UIEdgeInsets = .init(top: 10, left: 20, bottom: 10, right: 30)

ShopLive.setPictureInPicturePadding(padding: padding)

setPictureInPictureFloatingOffset(offset: UIEdgeInsets)

앱 내 PIP에서 PIP가 이동할 수 있는 영역을 설정합니다.

@objc static func setPictureInPictureFloatingOffset(offset: UIEdgeInsets)
매개변수설명
offsettop, left, right, bottom의 offset 값을 설정합니다.

샘플 코드

// left: 20, right: 30, bottom: 10, top: 10으로 offset 값 설정

let offset: UIEdgeInsets = .init(top: 10, left: 20, bottom: 10, right: 30)

ShopLive.setPictureInPictureFloatingOffset(offset: offset)

setUsingLocalStorage(_ use: Bool)

로컬 스토리지 저장 기능 사용 여부를 설정합니다.

@objc static func setUsingLocalStorage(_ use: Bool)
매개변수설명
use로컬 스토리지 저장 기능 사용 여부
true: 로컬 스토리지 저장 기능 사용
false: 로컬 스토리지 저장 기능 사용 안 함

샘플 코드

// 로컬 스토리지 저장 기능을 사용하도록 설정
ShopLive.setUsingLocalStorage(true)

// 로컬 스토리지 저장 기능을 사용하지 않도록 설정
ShopLive.setUsingLocalStorage(false)

setAppVersion(_ appVersion: String)

앱 버전을 설정합니다.
API를 호출하지 않아도 기본으로 앱의 버전을 읽고 서버로 전달합니다.
이 기능을 사용하려면 Shoplive 담당자에게 문의하세요.

@objc static func setAppVersion(_ appVersion: String)
매개변수설명
appVersion앱 버전

샘플 코드

let appVersion: String = “1.0.0”

ShopLive.setAppVersion(appVersion)