Changelog

    Changelog


    Article summary

    v1.5.8 (2024-05-01)

    • Live player

      • Added a Preview mute option.

      • Video mute status  event  has been added. (video_muted, video_unmuted)

    • Short-form

      • Added features from Preview.

      • When clicking Preview to enter full screen, the detail screen has been changed to continue playback while maintaining the playback time.

    Migration guide

    • ShopLive.sendCommandMessage(command: String?, payload: Map<String, Any?>)

    @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)

    • Live player

      • ShopLive.setUser(user: ShopLiveCommonUser).

    • Short-form

      • Short-form performance has been improved.

      • Groups feature has been added.

      • ShopLiveShortformReceiveHandler and ShopLiveShortformDetailHandler have been renamed ShopLiveShortformHandler.

    Migration guide

    • ShopLive.setUser(user: ShopLiveCommonUser).

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

    v1.5.5 (2024-02-06)

    Migration guide

    • ShopLiveHandler.handleShare() interface now can use OG tag

      @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

    • ShopLiveHandler.handleCustomAction() interface has been changed

      @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

      • The performance of the player has been improved.

    • Short-form

      • The performance of Short-form player has been imporoved

    v1.5.3 (2024-01-09)

    Migration guide

    • Shortform.setNativeHandler() interface has been changed as below

      @Deprecated("Use `Shortform.setNativeHandler(nativeHandler: ShopLiveShortformNativeHandler)` instead.")
      fun setNativeHandler(activity: Activity, nativeHandler: ShopLiveShortformNativeHandler)
      
      // Use this method
      fun setNativeHandler(nativeHandler: ShopLiveShortformNativeHandler)
      

    v1.5.2 (2023-12-04)

    • Live player

      • The performance of the player has been improved.

      • a feature to hide the StatusBar has been added

      • Preview click custom feature has been added

      • ShopLive Java code has been migrated to Kotlin code

      • ShopLiveHandler has been migrated from interface to abstract class 

    • Short-form

      • Mute control is now persistant

    Migration guide

    • ShopLive.play() interface has been changed

      @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 has been changed

      @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 has been changed

      @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 has been changed

      @Deprecated("Use `ShopLive.setLoadingAnimation(@DrawableRes drawableRes: Int)` instead.")
      fun setLoadingProgressColor(hexColor: String?)
      
      // Use this method
      fun setLoadingProgressColor(@ColorInt colorInt: Int)
      
    • ShopLive.setStatusBarTransparent() interface has been changed

      @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() is no longer required

    Migration to MaveCentral (2023-11-20)

    • Migration to repository

      • You no longer need to add a separate maven repository.

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

    v1.5.1 (2023-11-02)

    v1.5.0 (2023-10-19)

    • Live player

      • Preview the movement has been smoothed.

    v1.4.9 (2023-10-12)

    • Live player

    • Short-form

    • build.gradle

      • cloud.shoplive:shoplive-network Changed to mandatory 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

      • Improved preview performance.

    v1.4.8 (2023-09-15)

    v1.4.7 (2023-08-09)

    v1.4.6 (2023-08-04)

    v1.4.5 (2023-07-27)

    v1.4.4 (2023-07-25)

    v1.4.3 (2023-07-04)

    • Improved player playback performance.

    v1.4.2 (2023-06-16)

    • Improved player playback performance.

    v1.4.1 (2023-06-05)

    v1.4.0 (2023-05-15)

    • Added an interface that allows you to set whether or not to swipe Preview to exit.

    • Modularized preview interface.

    • Drawing on top of other existing apps has been deprecated.

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

    v1.3.4 (2023-04-13)

    v1.3.3.1 (2023-03-09)

    • In Preview, I changed the close button to Android style.

    • Improved stability in some environments.

    v1.3.3 (2023-02-23)

    • You can watch the broadcast with external audio.

      ShopLive.setMixWithOthers(isMixAudio: Boolean)
      
    • Added a parameter to measure entry path statistics.

      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)
      
    • You can now enable the close button in Preview.

      ShopLivePreview.useCloseButton(use: Boolean = false)
      
    • Improved player playback performance.

    • You can now control your audio without receiving Bluetooth permission.

    v1.3.2 (2022-11-30)

    • Improved the picture-in-picture switching interface (startPictureInPicture, stopPictureInPicture) to work only once, even if it is called multiple times at the same time.

    • If the URL is not set when the share button is clicked, the error code will be forwarded to the onError Handler.

    • Fixed an issue that could impact the lifecycle of a customer's app when switching to picture-in-picture after launching Shoplive Player with deep links.

    • Animations have been applied to make the chat input box appear more naturally.

    • Fixed an issue where the chat input box could hide chats.

    v1.3.1 (2022-10-18)

    • You can now use animated images for broadcast background images (broadcast announcements, in progress, and after the broadcast). (GIF, APNG, WEBP, etc.)

    v1.3.0 (2022-09-22)

    • Updated to support landscape mode broadcasting. If you would like to use landscape broadcasting, please contact your Shoplive representative.

    • We provide a ShopLivePreview (or ShopLiveSwipeView) so that customers can implement the preview themselves.

    • The setUiMessage interface has been added to allow you to apply custom messages.

    • A setStatusBarTransparent interface has been added to zoom in on the status bar area.

    • The setSoundFocusHandling interface has been added to handle audio focus.

    • A log interface has been added to forward the event log of the Shoplive Player.

    • Added a "CLOSING" event to the onChangedPlayerStatus callback.

    • The 'android.permission.BLUETOOTH' permission has been changed to only apply up to targetSDkVersion 30.

    v1.2.7.1 (2022-07-01)

    • Improved the logic for checking the status of PIP.

    • Fixed a UI issue that occurred when clicking the chat input button on some devices.

    v1.2.7 (2022-05-26)

    • Fixed an issue where when the user's credentials are updated while the Shoplive player is running in picture-in-picture mode (e.g., non-login -> login), the player changes to full-screen mode. If your credentials change, you can still stay in picture-in-picture mode.

    v1.2.6 (2022-05-19)

    • Fixed a UI issue in Galaxy Fold tablet mode.

    v1.2.5 (2022-05-12)

    • Fixed UI issues on certain devices.

    • Fixed an issue where the image ratio (e.g., broadcast preview image, broadcast image, etc.) was not reflected even if the ratio was set to 9:16 on the tablet.

    • Changed the default aspect ratio for video on tablets to 9:16. If you want to use it as a full screen, you need to set ShopLive.setKeepAspectOnTabletPortrait(false).

    • Improved some features related to PIP.

    v1.2.4 (2022-04-15)

    • Added the ability to drag the preview area to exit.

    • Added the ability to start with mute.

    • Added the ability to open deep links.
      (If you'd like to add this feature, contact your Shoplive representative.)

    • We've added a feature that allows the Shoplive Android SDK to handle display permission request messages on top of other apps.

    • Added a sendCommandMessage interface that passes commands and payloads to the server.

    • Added a setAppVersion interface to set the app version.

    v1.2.3 (2022-03-30)

    • Exoplayer Library version 2.13.0 updated to version 2.16.0.

    • Fixed an issue where chat input was hidden from the keyboard. (Occurs on some devices only)

    v1.2.2 (2022-03-10)

    • Vibrations, sound effects, and other quiz functions have been improved to be linked.

    • Improved silent playback during preview.

    • We've added an API that allows users to select the next action to a feature that was forced into in-app PIP when a product or announcement was selected by the user.

    • Added an API that allows you to set an endpoint.

    v1.2.1 (2022-01-13)

    • Fixed an issue when entering a live broadcast where video playback is not smooth intermittently depending on the network environment

    v1.2.0 (2021-12-15)

    • ShopLive.getAuthToken() - Get JWT authentication key

    • ShopLive.isSuccessCampaignJoin() - Checks if the broadcast has been successfully entered

    • ShopLive.startPictureInPicture() - Enter picture-in-picture mode

    • ShopLive.stopPictureInPicture() - Disable picture-in-picture mode (return to FULL screen)

    v1.1.2 (2021-11-15)

    • Add an onReceivedCommand handler function to pass command information received from the SDK's web

    v1.1.1 (2021-11-08)

    • Add callbacks for coupon downloads and the success or failure of custom actions

    • Add a notification when setting or changing a username

    • Support for synchronizing video events

    v1.0.15 (2021-11-03)

    • Add Image Animation Progress Interface

    • Added an option so that the broadcast does not end automatically when the root activity ends.

    v1.0.13 (2021-10-14)

    • Preview (when using the Show on top of other apps) When the app switches between background/foreground during playback, it is automatically hid/showed.

    • Added ShopLive.hidePreview() interface to temporarily hide during preview (when using the Show on top of other app option) playback

    • Added ShopLive.resumePreview() interface so that when the preview is hidden for a short period of time during playback, it can be resumed again.

    v1.0.11 (2021-09-30)

    • Added option to set aspect ratio in tablet mode (fill the video or match the aspect ratio)

    • Add userScore

    • Add onChangedPlayerStatus interface

    v1.0.10 (2021-09-10)

    • When the onPause event is received, the chat input box and keyboard are hidden when the chat input box and keyboard are floating.

    v1.0.9 (2021-09-08)

    • Loading progress output only on broadcast entry. After that, the buffer was changed so that loading progress would not output if it occurred.

    v1.0.8 (2021-09-06)

    • On broadcast entry, loading progress output (color applied)

    v1.0.7 (2021-09-01)

    • In picture-in-picture mode, the activity of the app that has been lowered to the background is brought up to the foreground while coming up to the full screen.

    v1.0.6 (2021-08-31)

    • Add ShopLive.showPreview(campaignKey) (requires display permission on top of other apps)

    • Added ShopLive.showPreview(campaignKey, isOsPip = true) (switch to PIP after entering the broadcast)

    • Add handlePreview(context, campaignKey) interface

    • Error correction

    v1.0.5 (2021-08-25)

    • Add handleDownloadCoupon(context, couponId, callback) interface

    v1.0.3 (2021-08-18)

    • Added the ability to leave a stream you're watching

    • When you enter the broadcast, you will receive campaign information

    • When the campaign status changes, the status value is passed

    • In the event of an error, code/message delivery

    • When returning to video after ending a call, change the default from 'Video Stops' to 'Auto Play Video'

    v1.0.2 (2021-08-09)

    • When earphones/headset are disconnected, a mute option has been added with continued playback

    v1.0.1 (2021-08-05)

    • Custom Payload Delivery Support (CUSTOM_ACTION)

    • Chat input font setting support

    v1.0.0 (2021-08-04)

    • Android SDK Launch