GuidesAPI GuideChangelog
Log In
Guides

이동 연동

배너·상품·라이브 플레이어·클립 플레이어 클릭을 자사몰이 직접 처리하는 이벤트 4종입니다. 정의하지 않으면 쇼룸이 링크로 이동합니다.

이동 연동 — 쇼룸 WEB
예상 소요 시간: 20분
🔧 필수/선택: 선택 — 정의하지 않으면 쇼룸이 링크로 이동
이벤트 4종

네 이벤트 모두 페이로드에 이동할 URL이 들어 있습니다.

이벤트클릭 대상이동 URL 필드
sauceShowroomMoveBanner이미지·띠·라이브 배너linkUrl
sauceShowroomMoveProduct카드·배너 안 상품linkUrl
sauceShowroomMoveSauceLivePlayer라이브·VOD 카드broadcastUrl
sauceShowroomMoveSauceClipPlayer클립 카드clipUrl

동일 페이지 구현

라이브러리를 넣은 페이지에서 window.sauceShowroom 객체에 함수를 정의합니다. 인자는 JSON 문자열입니다.

javascript
window.sauceShowroom = {
  // 배너 클릭
  sauceShowroomMoveBanner: (jsonStr) => {
    const bannerInfo = JSON.parse(jsonStr)
    window.location.href = bannerInfo.linkUrl
  },
  // 상품 클릭
  sauceShowroomMoveProduct: (jsonStr) => {
    const productInfo = JSON.parse(jsonStr)
    window.location.href = productInfo.linkUrl
  },
  // 라이브·VOD 카드 클릭
  sauceShowroomMoveSauceLivePlayer: (jsonStr) => {
    const broadcastInfo = JSON.parse(jsonStr)
    window.location.href = broadcastInfo.broadcastUrl
  },
  // 클립 카드 클릭
  sauceShowroomMoveSauceClipPlayer: (jsonStr) => {
    const clipInfo = JSON.parse(jsonStr)
    window.location.href = clipInfo.clipUrl
  }
}
⚠️ window.sauceShowroom 을 통째로 덮어쓰면 쇼룸이 등록해 둔 콜백 함수가 지워집니다. 알림 연동을 함께 쓸 때는 setInit 전에 정의하거나 window.sauceShowroom.sauceShowroomMoveBanner = … 처럼 속성만 더합니다.

부모 페이지 구현

쇼룸 페이지를 iframe 으로 띄운 경우, 부모 페이지에서 message 를 받습니다.

javascript
window.addEventListener('message', (e) => {
  if (typeof e.data !== 'string') return

  let key
  let params

  try {
    const data = JSON.parse(e.data)
    key = data.key
    params = data.params
  } catch (_error) {
    return
  }

  switch (key) {
    case 'sauceShowroomMoveBanner':
      window.location.href = params.linkUrl
      break
    case 'sauceShowroomMoveProduct':
      window.location.href = params.linkUrl
      break
    case 'sauceShowroomMoveSauceLivePlayer':
      window.location.href = params.broadcastUrl
      break
    case 'sauceShowroomMoveSauceClipPlayer':
      window.location.href = params.clipUrl
      break
    default:
  }
})
📌 부모 페이지에서 받는 값은 { key, params } 형태의 JSON 문자열입니다. params 는 파싱된 객체이므로 한 번 더 JSON.parse 하지 않습니다.

정의하지 않았을 때의 이동

네 이벤트는 폴백이 있습니다. 브릿지를 붙이기 전에도 클릭이 동작합니다.

클릭 대상이동 방식
이미지·띠 배너배너에 설정한 링크로 이동.
배너의 열기 방식이 'BLANK' 면 새 창, 그 밖에는 현재 창
라이브 배너라이브 플레이어로 현재 창 이동
상품상품 링크로 현재 창 이동
라이브·VOD 카드라이브 플레이어로 현재 창 이동
클립 카드클립 플레이어로 현재 창 이동

인증 정보 전달

사용자 인증을 완료한 상태에서는 쇼룸이 직접 이동시킬 때 이동 URL에 accessToken 쿼리 파라미터를 붙입니다. 플레이어는 이 토큰으로 로그인 상태를 잇습니다.

⚠️ 이동을 직접 처리하면 이 처리가 일어나지 않습니다. 페이로드의 URL은 토큰이 붙지 않은 값이므로, 플레이어 로그인을 이으려면 토큰을 직접 붙여 이동해야 합니다.
javascript
sauceShowroomMoveSauceLivePlayer: (jsonStr) => {
  const broadcastInfo = JSON.parse(jsonStr)
  const url = new URL(broadcastInfo.broadcastUrl)

  url.searchParams.append('accessToken', '설정한 JWT 토큰')

  window.location.href = url.href
}

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

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

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