Android Changelog

    Android Changelog


    기사 요약

    v1.6.4.1 (2024-12-20)

    • Shortform

      • Short-form의 성능이 개선되었습니다.

      • ShopLiveShortformDetailTypeView가 Compose 환경에서도 문제 사용할 수 있습니다.

    v1.6.4 (2024-12-18)

    • Editor

      • Video Editor의 성능이 개선되었습니다.

      • Customize 기능이 추가되었습니다.

    v1.6.3 (2024-12-12)

    • Short-form

      • Short-form의 성능이 개선되었습니다.

    • Editor

      • Video Editor의 성능이 개선되었습니다.

    v1.6.2 (2024-12-06)

    v1.6.1 (2024-11-29)

    v1.6.0.2 (2024-11-22)

    • Live player

      • Preview가 Compose 환경에서도 사용할 수 있습니다.

    v1.6.0.1 (2024-11-18)

    • Short-form

      • Short-form의 성능이 개선되었습니다.

    v1.6.0 (2024-11-18)

    v1.5.16 (2024-10-14)

    v1.5.15.1 (2024-09-19)

    • Live player

      • Preview 기능이 개선되었습니다.

    v1.5.15 (2024-09-13)

    • Live player

      • Preview 기능이 추가되었습니다. 이제 화면에 Preview 목록 구성을 할 수 있습니다.

    v1.5.14 (2024-08-12)

    • Live player

      • 플레이어의 성능이 개선되었습니다.

    v1.5.13 (2024-06-19)

    • Live player

      • 플레이어의 성능이 개선되었습니다.

    v1.5.12 (2024-06-12)

    • Live player

      • 플레이어의 성능이 개선되었습니다.

    v1.5.11 (2024-05-30)

    • Live player

      • 플레이어의 성능이 개선되었습니다.

      • ShopLive.setKeepAspectOnTabletPortrait은 더 이상 유효하지 않습니다.

    • Short-form

      • Short-form의 성능이 개선되었습니다.

    v1.5.10 (2024-05-27)

    v1.5.9 (2024-05-13)

    • Live player

      • 플레이어 성능이 개선되었습니다.

      • 디바이스 볼륨에 따라 음소거 아이콘이 변경됩니다.

    • Short-form

      • Short-form의 성능이 개선되었습니다.

      • 디바이스 볼륨에 따라 음소거 아이콘이 변경됩니다.

    v1.5.8 (2024-05-01)

    Migration guide

    @Deprecated("Use `ShopLiveCommon.sendCommandMessage(command: String?, payload: Map<String, Any?>)` instead.")
    fun sendCommandMessage(command: String?, payload: String?)
    
    // Use this method
    fun sendCommandMessage(command: String?, payload: Map<String, Any?>?)

    v1.5.7 (2024-04-08)

    Migration guide

    @Deprecated("Use `Use `ShopLive.setUser(user: ShopLiveCommonUser?)` instead.")
    fun setUser(user: ShopLiveUser?)
    
    // Use this method
    fun setUser(user: ShopLiveCommonUser?)

    v1.5.6 (2024-02-28)

    v1.5.5 (2024-02-06)

    Migration guide

    @Deprecated("Use `ShopLiveHandler.handleShare(context: Context, data: ShopLivePlayerShareData)` instead.")
    override fun handleShare(context: Context, shareUrl: String)
    
    // Use this method
    override fun handleShare(context: Context, data: ShopLivePlayerShareData)

    v1.5.4 (2024-01-19)

    Migration guide

    @Deprecated("Use `ShopLiveHandler.handleCustomAction(context: Context, id: String, type: String, payload: JSONObject, callback: ShopLiveHandlerCallback)` instead.")
    fun handleCustomAction(context: Context, id: String, type: String, payload: String, callback: ShopLiveHandlerCallback)
    
    // Use this method
    fun handleCustomAction(context: Context, id: String, type: String, payload: JSONObject, callback: ShopLiveHandlerCallback)

    v1.5.3.1 (2024-01-15)

    • Live player

      • 플레이어의 성능이 개선되었습니다.

    • Short-form

      • Short-form 성능이 개선되었습니다.


    v1.5.3 (2024-01-09)

    Migration guide


    v1.5.2 (2023-12-04)

    • Live player

      • 플레이어의 성능이 개선되었습니다.

      • StatusBar의 숨김 기능이 추가되었습니다.

      • Preview click custom 기능이 추가되었습니다.

      • ShopLive Java code가 Kotlin code로 migration됐습니다.

      • ShopLiveHandler가 interface에서 abstract class migration 됐습니다.

    • Short-form

      • 변경된 음소거 상태가 유지됩니다.

    Migration guide

    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(campaignKey: String)
    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(campaignKey: String, referrer: String?)
    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(context: Context, campaignKey: String)
    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(context: Context, campaignKey: String, referrer: String?)
    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(campaignKey: String, keepWindowStateOnPlayExecuted: Boolean)
    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(campaignKey: String, keepWindowStateOnPlayExecuted: Boolean, referrer: String?)
    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(context: Context, campaignKey: String, keepWindowStateOnPlayExecuted: Boolean)
    @Deprecated("Use `ShopLive.play(context: Context, data: ShopLivePlayerData)` instead.")
    fun play(context: Context, campaignKey: String, keepWindowStateOnPlayExecuted: Boolean, referrer: String?)
    
    // Use this method
    fun play(context: Context, data: ShopLivePlayerData)
    • ShopLive.showPreviewPopup() interface가 변경되었습니다.

    @Deprecated("Use `ShopLive.showPreviewPopup(activity: Activity, data: ShopLivePreviewData)` instead.")
    fun showPreviewPopup(
        activity: Activity,
        accessKey: String,
        campaignKey: String,
        canTransition: Boolean = true,
        canVibrated: Boolean = true,
        useCloseButton: Boolean = false,
        position: ShopLivePreviewPositionConfig = ShopLivePreviewPositionConfig.BOTTOM_RIGHT
    )
    @Deprecated("Use `ShopLive.showPreviewPopup(activity: Activity, data: ShopLivePreviewData)` instead.")
    fun showPreviewPopup(data: ShopLivePreviewData)
    
    // Use this method
    fun showPreviewPopup(activity: Activity, data: ShopLivePreviewData)
    • ShopLive.intentPlay() interface가 변경되었습니다.

    @Deprecated("Use `ShopLive.intentPlay(context: Context, data: ShopLivePlayerData)` instead.")
    fun intentPlay(context: Context, campaignKey: String): Intent
    @Deprecated("Use `ShopLive.intentPlay(context: Context, data: ShopLivePlayerData)` instead.")
    fun intentPlay(context: Context, campaignKey: String, referrer: String?): Intent
    
    // Use this method
    fun intentPlay(context: Context, data: ShopLivePlayerData): Intent
    • ShopLive.setLoadingProgressColor() interface가 변경되었습니다.

    @Deprecated("Use `ShopLive.setLoadingAnimation(@DrawableRes drawableRes: Int)` instead.")
    fun setLoadingProgressColor(hexColor: String?)
    
    // Use this method
    fun setLoadingProgressColor(@ColorInt colorInt: Int)
    • ShopLive.setStatusBarTransparent() interface가 변경되었습니다.

    @Deprecated("Use `ShopLive.setSystemBarColor(ShopLivePlayerSystemBarColorData().apply { statusBarColor = Color.TRANSPARENT })` instead.")
    fun setStatusBarTransparent(isEnabled: Boolean)
    
    // Use this method
    fun setSystemBarColor(data: ShopLivePlayerSystemBarColorData)
    // Example
    ShopLive.setSystemBarColor(ShopLivePlayerSystemBarColorData().apply {
        statusBarColor = Color.TRANSPARENT
    })
    • ShopLive.init() 은 더 이상 필요하지 않습니다.


    Migration to MaveCentral (2023-11-20)

    • Migration to repository

      • 더 이상 별도 maven repository를 추가 안 하셔도 됩니다.

    allprojects {
        repositories
            ...
            maven { url 'https://shoplivesdk.jfrog.io/artifactory/shoplive-sdk/' } // Remove me
            ...
        }
    }

    v1.5.1 (2023-11-02)

    • Live player

      • 플레이어의 성능을 개선했습니다.

      • UTM Source, UTM Medium, UTM Campaign, UTM Content를 사용하여 사용자 통계를 확인 할 수 있습니다.

      • Preview를 사용할 때 AccessKey를 필수 파라미터로 넣지 않아도 Preview를 시청할 수 있습니다.

      • 기존의 adId기능은 deprecated됐습니다.

      • 다른 앱 위에 그리기 권한을 받아야 하는 Preview기능은 삭제됐습니다.


    v1.5.0 (2023-10-19)

    • Live player

      • Preview 움직임이 부드러워졌습니다.


    v1.4.9 (2023-10-12)

    • Live player

      • 플레이어의 첫 로딩 성능을 개선했습니다.

      • Preview의 첫 로딩 성능을 개선했습니다.

      • Preview 재생 여부를 알 수 있는 기능을 추가했습니다.

    • Short-form

      • 튜토리얼 기능을 추가했습니다.

      • Placeholder 색상을 변경 할 수 있습니다.

    • build.gradle

      • cloud.shoplive:shoplive-network 필수 Dependency로 변경 됐습니다.

    dependencies {
        implementation "cloud.shoplive:shoplive-common:$shoplive_sdk_version" // must required
        implementation "cloud.shoplive:shoplive-exoplayer:$shoplive_exoplayer_version" // must required
        implementation "cloud.shoplive:shoplive-network:$shoplive_sdk_version" // must required
      
        implementation "cloud.shoplive:shoplive-sdk-core:$shoplive_sdk_version" // for live player
      
        implementation "cloud.shoplive:shoplive-short-form:$shoplive_sdk_version" // for short-form player
    }

    v1.4.8.1 (2023-09-25)

    • Live player

      • Preview 성능을 개선했습니다.


    v1.4.8 (2023-09-15)

    • Live player

      • Preview 성능을 개선했습니다.

    • Short-form

      • 상세화면 버튼 숨김처리 기능을 추가했습니다.

      • 상세화면 재생 성능을 개선했습니다.


    v1.4.7 (2023-08-09)

    • Common

      • 유저의 로그인 유무를 알 수 있는 기능을 추가했습니다.

    • Short-form

      • 목록의 디자인을 개선했습니다.


    v1.4.6 (2023-08-04)

    • Short-form

      • 네이티브 목록 기능을 추가했습니다.

        • 조회수 숨김 처리 기능

        • Brand 영역 숨김처리 기능

        • 제목 숨김처리 기능

        • 상품 갯수 숨김처리 기능

        • 설명 숨김처리 기능

        • 목록의 cornerRadius 설정 기능

      • 카드 type0가 추가 되었습니다.

      • 숏폼의 LifeCycle 이벤트가 추가되었습니다

        • 목록의 스크롤 기능을 개선했습니다.

        • Collection의 결과를 error handling 할 수 있습니다.

    v1.4.5 (2023-07-27)

    • Live player

      • Preview 성능을 개선했습니다.

    • Short-form

      • 유저의 이벤트를 확인 할 수 있는 기능을 추가했습니다.


    v1.4.4 (2023-07-25)

    • Short-form

      • HashTag, Brand 로 필터하여 목록에 노출 시킬 수 있는 기능을 추가했습니다.

      • Short-form 네이티브 전용 인증 기능을 추가했습니다.


    v1.4.3 (2023-07-04)

    • 플레이어의 재생 성능을 개선했습니다.


    v1.4.2 (2023-06-16)

    • 플레이어의 재생 성능을 개선했습니다.


    v1.4.1 (2023-06-05)

    • OS PIP를 지원하지 않는 기기 인터페이스를 추가했습니다.

    • 플레이어의 재생 성능을 개선했습니다.


    v1.4.0 (2023-05-15)

    • Preview swipe 하여 종료 시킬 지 여부를 설정할 수 있는 인터페이스를 추가하였습니다.

    • Preview interface 를 모듈화하였습니다.

    • 기존 다른 앱 위에 그리는 Preview는 Deprecated 됐습니다.

    ShopLive.showPreviewPopup(ShopLivePreviewData(yourActivity, "{campaignKey}").apply {
    	setUseCloseButton(true)
    	setEnabledSwipeOut(true)
    })
    

    v1.3.4 (2023-04-13)

    • 광고 추적을 위한 광고 Id를 설정하는 인터페이스를 추가하였습니다.

    ShopLive.setAdId(adId: String)
    
    • 플레이어를 실행하기 전에 커스텀 데이터를 설정 할 수 있는 인터페이스를 추가하였습니다.

    ShopLive.addParameter(key: String, value: String)
    ShopLive.removeParameter(key: String)
    
    • 권한을 받지 않아도 되는 팝업형 In App Preview를 추가했습니다.


    v1.3.3.1 (2023-03-09)

    • Preview에서 닫기 버튼을 안드로이드 스타일로 변경했습니다.

    • 일부 환경에서 안정성을 개선했습니다.


    v1.3.3 (2023-02-23)

    • 외부 오디오와 함께 방송을 시청할 수 있습니다.

    ShopLive.setMixWithOthers(isMixAudio: Boolean)
    
    • 진입경로 통계를 측정할 수 있는 파라미터를 추가했습니다.

    ShopLive.play(campaignKey: String, referrer: String? = null)
    ShopLive.play(context: Context, campaignKey: String, referrer: String? = null)
    ShopLive.play(campaignKey: String, keepWindowStateOnPlayExecuted: Boolean, referrer: String? = null)
    ShopLive.play(context: Context, campaignKey: String, keepWindowStateOnPlayExecuted: Boolean, referrer: String? = null)
    
    • 이제 Preview에서 닫기 버튼을 활성화할 수 있습니다.

    ShopLivePreview.useCloseButton(use: Boolean = false)
    
    • 플레이어의 재생 성능을 개선했습니다.

    • 이제 Bluetooth 권한을 받지 않아도 오디오 제어가 가능합니다.


    v1.3.2 (2022-11-30)

    • PIP 전환 인터페이스(startPictureInPicture, stopPictureInPicture)를 동시에 여러 번 호출 하더라도 한 번만 동작하도록 개선하였습니다.

    • 공유 버튼을 클릭했을 때 설정한 URL이 없으면 onError Handler로 에러코드를 전달하도록 개선하였습니다.

    • 딥링크로 Shoplive Player를 실행한 후 PIP로 전환할 때 고객사 앱의 생명주기에 영향을 줄 수 있는 문제를 수정하였습니다.

    • 채팅 입력창이 더 자연스럽게 올라오도록 애니메이션을 적용하였습니다.

    • 채팅입력창이 채팅을 가릴 수 있는 문제를 수정하였습니다.


    v1.3.1 (2022-10-18)

    • 이제 방송 배경 이미지(방송 예고, 진행 중, 종료 후 이미지)에 애니메이션 이미지를 사용할 수 있습니다. (gif, apng, webp 등)


    v1.3.0 (2022-09-22)

    • 가로모드 방송을 지원하도록 업데이트 되었습니다. 가로모드 방송을 사용하기 위해서는 Shoplive 담당자에게 문의해주시기 바랍니다.

    • 미리보기를 고객사에서 직접 구현할 수 있도록 ShopLivePreview(또는 ShopLiveSwipeView)를 제공합니다.

    • 사용자 정의 메시지를 적용할 수 있도록 setUiMessage 인터페이스가 추가 되었습니다.

    • 상태바 영역까지 영상을 확대(상태바를 투명하게) 할 수 있도록 setStatusBarTransparent 인터페이스가 추가 되었습니다.

    • 오디오 포커스를 핸들링 할 수 있도록 setSoundFocusHandling 인터페이스가 추가 되었습니다.

    • Shoplive Player의 이벤트 로그를 전달하는 log 인터페이스가 추가 되었습니다.

    • onChangedPlayerStatus callback에 "CLOSING" 이벤트가 추가 되었습니다.

    • 'android.permission.BLUETOOTH' 권한이 targetSDkVersion 30까지만 적용되도록 변경 되었습니다.


    v1.2.7.1 (2022-07-01)

    • PIP의 상태를 체크하는 로직을 개선하였습니다.

    • 일부 디바이스에서 채팅 입력 버튼을 클릭할 경우 발생하는 UI 이슈를 개선하였습니다.


    v1.2.7 (2022-05-26)

    • Shoplive player가 PIP 모드로 실행 중인 상태에서 사용자의 인증 정보가 업데이트 되면 (예, 비로그인 -> 로그인) player가 전체 화면 모드로 변경되는 이슈를 개선하였습니다. 인증 정보가 변경되더라도 PIP 모드를 그대로 유지할 수 있습니다.


    v1.2.6 (2022-05-19)

    • 갤럭시 폴드 태블릿 모드에서의 UI 이슈를 수정하였습니다.


    v1.2.5 (2022-05-12)

    • 특정 기기에서 발생하는 UI 이슈를 수정하였습니다.

    • 태블릿에서 이미지(e.g., 방송 예고 이미지, 방송 중 이미지 등) 비율을 9:16으로 설정해도 반영되지 않는 이슈를 수정하였습니다.

    • 태블릿에서의 비디오의 기본 화면 비율을 9:16으로 변경하였습니다. 만약 Full 화면으로 사용하고자 할 경우 ShopLive.setKeepAspectOnTabletPortrait(false)를 설정해야 합니다.

    • PIP와 관련된 일부 기능을 개선하였습니다.


    v1.2.4 (2022-04-15)

    • 프리뷰 영역를 드래그하여 종료하는 기능을 추가하였습니다.

    • 음소거로 시작하기 기능을 추가하였습니다.

    • 딥링크를 열어주는 기능을 추가하였습니다. (이 기능을 추가하려면 Shoplive 담당자에게 문의하세요.)

    • 다른 앱 위에 표시 권한 요청 메시지를 Shoplive Android SDK에서 처리할 수 있도록 기능을 추가하였습니다.

    • 서버로 command와 payload를 전달하는 sendCommandMessage 인터페이스를 추가하였습니다.

    • 앱 버전을 설정하는 setAppVersion 인터페이스를 추가하였습니다.


    v1.2.3 (2022-03-30)

    • Exoplayer Library 2.13.0 버전을 2.16.0 버전으로 업데이트하였습니다.

    • 채팅 입력창이 키보드에 가려지는 오류를 수정하였습니다. (일부 기기에서만 발생)


    v1.2.2 (2022-03-10)

    • 진동, 효과음 등 퀴즈 기능을 연계할 수 있도록 개선하였습니다.

    • 미리보기 때 무음 재생하도록 개선하였습니다.

    • 상품 또는 공지사항을 사용자가 선택하였을 때 앱 내 PIP로 강제 전환되던 기능에 다음 동작을 선택할 수 있는 API를 추가하였습니다.

    • Endpoint를 설정할 수 있는 API를 추가하였습니다.


    v1.2.1 (2022-01-13)

    • 라이브 방송 진입시 네트워크 환경에 따라 간헐적으로 영상 재생이 원활하지 않는 이슈 해결


    v1.2.0 (2021-12-15)

    • ShopLive.getAuthToken() - JWT 인증키 가져오기

    • ShopLive.isSuccessCampaignJoin() - 방송에 성공적으로 진입했는지 확인

    • ShopLive.startPictureInPicture() - PIP 모드로 진입하기

    • ShopLive.stopPictureInPicture() - PIP 모드 해제(FULL 화면으로 복귀)


    v1.1.2 (2021-11-15)

    • SDK의 web으로부터 수신된 command 정보를 전달하기 위한 onReceivedCommand 핸들러 함수 추가


    v1.1.1 (2021-11-08)

    • coupon download와 custom action의 성공 또는 실패에 대한 콜백 추가

    • 사용자 이름 설정 또는 변경시 알림 추가

    • 영상 이벤트 동기화 지원


    v1.0.15 (2021-11-03)

    • 이미지 애니메이션 프로그레스 인터페이스 추가

    • 루트 액티비티가 종료 되어도 방송이 자동으로 종료되지 않도록 옵션 추가


    v1.0.13 (2021-10-14)

    • 프리뷰(다른 앱 위 표시 옵션 사용시) 재생중에 앱이 background/foreground 전환 시, 자동으로 hide/show 되도록 적용

    • 프리뷰(다른 앱 위 표시 옵션 사용시) 재생중에 잠시 숨길 수 있도록 ShopLive.hidePreview() 인터페이스 추가

    • 프리뷰가 재생도중 잠시 숨겨졌을 때, 다시 재개할 수 있도록 ShopLive.resumePreview() 인터페이스 추가


    v1.0.11 (2021-09-30)

    • 태블릿 모드에서 화면 비율 설정하기 옵션 추가 (영상 꽉 채우기 또는 영상 비율에 맞추기)

    • userScore 추가

    • onChangedPlayerStatus interface 추가


    v1.0.10 (2021-09-10)

    • onPause 이벤트를 받았을 때, 채팅 입력창과 키보드가 떠있는 경우에 채팅 입력창과 키보드를 숨김.


    v1.0.9 (2021-09-08)

    • 방송 진입시에만 로딩 프로그레스 출력. 그 이후, 버퍼가 발생한 경우에는 로딩 프로그레스 출력하지 않도록 변경.


    v1.0.8 (2021-09-06)

    • 방송 진입시, 로딩 프로그레스 출력 (색상 적용)


    v1.0.7 (2021-09-01)

    • PIP 모드에서 Full 화면으로 올라오면서 백그라운드로 내려간 앱의 activity를 포그라운드로 올라오도록 함.


    v1.0.6 (2021-08-31)

    • ShopLive.showPreview(campaignKey) 추가 (다른 앱 위에 표시 권한 필요)

    • ShopLive.showPreview(campaignKey, isOsPip = true) 추가 (방송 진입 후, PIP로 전환)

    • handlePreview(context, campaignKey) 인터페이스 추가

    • 오류 수정


    v1.0.5 (2021-08-25)

    • handleDownloadCoupon(context, couponId, callback) 인터페이스 추가


    v1.0.3 (2021-08-18)

    • 시청중인 방송에서 강제로 나가기 기능 추가

    • 방송 진입 시, 캠페인 정보 전달

    • 캠페인 상태 변경 시, 상태값 전달

    • 오류 상황 발생 시, 코드/메시지 전달

    • 통화 종료 후 영상 복귀 시, 기본값을 '영상 멈춤'에서 '영상 자동 재생'으로 변경

    v1.0.2 (2021-08-09)

    • 이어폰/헤드셋 연결 끊겼을 때에 계속 재생과 함께 mute 옵션 추가

    v1.0.1 (2021-08-05)

    • Custom payload 전달 지원 (CUSTOM_ACTION)

    • 대화 입력창 폰트 세팅 지원

    v1.0.0 (2021-08-04)

    • Android SDK 런칭



    What's Next