Release Notes
2.3.36
Release Date: 2026-06-11
Fixed
- Improved failure handling logic when file path is missing after content download completion
- Reason for change: After content download is complete, if the file save path cannot be retrieved, the download is treated as failed
- Impact scope: None
- App change required: None
2.3.35
Release Date: 2026-04-14
Added APIs
- Use the server-configured maximum playback speed for content
/// KollusPlayerView.h
/// Max playback Rate
@property (nonatomic, unsafe_unretained, readonly) NSInteger maxPlaybackRate;- Reason for change: Use the server-configured maximum value for content playback speed
- Impact scope: None
- App change required: None
2.3.34
Release Date: 2026-03-17
Added Features
-
Live concurrent viewers count reporting transmission
- Reason for change: To collect detailed statistics on live concurrent viewers
- Impact scope: None
- App change required: None
-
Live unauthorized IP playback blocking
- Reason for change: Prevent playback by applying 'IP restriction'
- Impact scope: None
- App change required: None
2.3.33
Release Date: 2026-01-26
Added APIs
- Block playback after a certain time has passed since content started playing
/// KollusPlayerView.h
/// Playback Limit Duration
@property (nonatomic, unsafe_unretained, readonly) NSInteger nPlaybackLimitDuration;
/// Playback Limit Message
@property (nonatomic, copy) NSString *strPlaybackLimitMessage;- Reason for change: Block playback after a certain time has passed since content started playing
- Impact scope: None
- App change required: None
2.3.32
Release Date: 2025-12-30
Added Features
- Content download event data transmission
- Reason for change: QoE data collection
- Impact scope: None
- App change required: None
2.3.31
Release Date: 2025-12-10
Added APIs
-
Added chapter class (
Chapter.h)/// Chapter Dictionary
@interface ChapterDict : NSObject
/// Language code for the chapter
@property (nonatomic, retain) NSString* strLanguage;
/// A list of Chapter objects
@property (nonatomic, retain) NSMutableArray* listChapter;
/// Chapter Information Object
@interface Chapter : NSObject
/// Start position of the chapter
@property (nonatomic, unsafe_unretained) NSTimeInterval position;
/// The display title or text content of the chapter
@property (nonatomic, retain) NSString *value;- Reason for change: Enable easy video navigation using chapter information
- Impact scope: None
- App change required: None
-
Added chapter information query property
- Added a property to
KollusPlayerView.hto query the chapter list of a video
@property (nonatomic, readonly) NSMutableDictionary* chapterInfo;- Reason for change: Enable easy video navigation using chapter information
- Impact scope: None
- App change required: None
- Usage example
- When to call: Chapter information should be referenced after the player's playback preparation is complete (
prepareToPlayWithError) to obtain accurate data.func kollusPlayerView(_ kollusPlayerView: KollusPlayerView!, prepareToPlayWithError error: Error!) - Reference:
func setChapterInfo()if let chapterInfo = playerView.chapterInfo as? [String: ChapterDict] {
if chapterInfo.keys.contains("default_language_code") {
NLog("The value \(String(describing: "default")) exists in the chapter language.")
chapterList = chapterInfo["default_language_code"]?.listChapter as! [Chapter]
} else {
NLog("No default value in chapter language.")
}
NLog("chapterList : \(chapterList)")
for chapter in chapterList {
let value = (Float(chapter.position))/Float(data!.duration)
controlView.sliderView.addChapter(value: value)
}
}
- When to call: Chapter information should be referenced after the player's playback preparation is complete (
- Added a property to
Fixed
- Fixed tv out setting error via playback callback during live playback
- Reason for change: Bug fix
- Impact scope: None
- App change required: None
2.3.30
Release Date: 2025-11-10
Added APIs
- Added content provider identification information to
KollusPlayerView.h@property (nonatomic) NSString *contentProviderKey;- Reason for change: Utilize data in user behavior analytics action stats
- Impact scope: None
- App change required: None
Added Features
-
Applied keep-alive when downloading from Kollus Edge
- Reason for change: Reduce time and resources consumed by network connections
- Impact scope: None
- App change required: None
-
Added new fields and changed timestamp in network API
- Reason for change: Utilize collected QoE data
- Impact scope: None
- App change required: None
-
Added cpk field to action stats API
- Reason for change: Improve data usability in user behavior analytics action stats
- Impact scope: None
- App change required: None
2.3.29
Release Date: 2025-10-27
Added Features
-
Toggle user behavior analytics data transmission on/off (Kollus Player only)
- Reason for change: Not applicable to SDK customers; added a scenario to toggle user behavior analytics data transmission on/off per customer
- Impact scope: None
- App change required: None
-
Detailed device type classification in User-Agent
- Reason for change: Distinguish hits by device
- Impact scope: None
- App change required: None
-
Fixed issue where customer-configured message in DRM Callback response was not displayed during download request
- Reason for change: When a content download request is made and the DRM Callback response is set to false, the configured message should be displayed
- Impact scope: None
- App change required: None
2.3.28
Release Date: 2025-08-12
Added Features
- Recording prevention during PIP mode playback
- Reason for change: Prevent recording during PIP mode playback
- Impact scope: None
- App change required: None
2.3.27
Release Date: 2025-08-06
Added Features
- Error code and error report when a known black screen occurs during live playback
- Reason for change: Identify black screen occurrences
- Impact scope: None
- App change required: None
2.3.26
Release Date: 2025-06-24
Added Features
- Network quality monitoring
- Reason for change: Collect network quality data
- Impact scope: None
- App change required: None
2.3.25
Release Date: 2025-06-05
Added APIs
- In "KollusStorage.h"
- /// Set Kollus SDK storage folder: creates a kollus subfolder
@property (nonatomic, copy, readonly) NSString *storagePath; - (BOOL)setKollusPath:(NSString *)path;
- Reason for change: Added API for specifying SDK storage folder
- Impact scope: None
- App change required: None
- Usage example
- Use before calling (BOOL)startStorage:(NSError**)error;
storage = KollusStorage()
let dateString = "2025/12/31"
storage.applicationKey = "4172322ee271bxxxxxxxxxxx…..2880b2411"
storage.applicationBundleID = "com.example.KollusPlayer"
let paths = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)
storage.setKollusPath(paths.first)
try storage.start() - This method should only be used in new apps. Otherwise, previously downloaded content will not be accessible.
- Must be used before calling the startStorage function. Uses the Document folder as the default path.
- Use before calling (BOOL)startStorage:(NSError**)error;
- /// Set Kollus SDK storage folder: creates a kollus subfolder
2.3.24
Release Date: 2025-05-15
Added APIs
- In "SubTitleInfo.h"
- /// Whether AI Subtitle
@property (nonatomic) BOOL isAISubtitles; - Reason for change: Added API to check whether AI Subtitle is applied
- Impact scope: None
- App change required: None
- /// Whether AI Subtitle
2.3.23
Release Date: 2025-03-25
Added APIs
- In "KollusPlayerView.h"
- /// Content Provider Name
@property (nonatomic) NSString *contentProviderName; - Reason for change: Provide customer name
- Impact scope: None
- App change required: None
- /// Whether background playback is enabled
@property (nonatomic, unsafe_unretained, readonly) BOOL disableBackgroundAudio; - Reason for change: Whether content playback is allowed in the background state
- Impact scope: None
- App change required: None
- /// Content Provider Name
2.3.22
Release Date: 2025-02-25
Added Features
- Enhanced KollusSDK error collection
- Reason for change: To collect errors that occur before player initialization
- Impact scope: None
- App change required: None
Fixed
-
Fixed currentPlaybackTime error when switching from background paused state to foreground while using HW Decoder
- Reason for change: Bug fix
- Impact scope: None
- App change required: None
-
Fixed app crash when entering background while stopping playback with HW Decoder
- Reason for change: Bug fix
- Impact scope: None
- App change required: None
2.3.21
Release Date: 2025-02-06
Added Features
- Minimum supported OS for iOS Kollus Player SDK: iOS 15.0 and above
- Reason for change: Xcode 16 supports on-device debugging from iOS 15
- Impact scope: YES (not supported on devices running below iOS 15)
- App change required: YES (Minimum Deployments must be changed to at least 15.0 in Xcode settings)
Fixed
- Removed Last-modified check in
m3u8header during iOS HLS streaming playback- Reason for change: When streaming HLS on-the-fly, the Last-modified information is not included in the header, causing playback failure
- Impact scope: None
- App change required: None
2.3.20
Release Date: 2025-01-14
Added APIs
- In "KollusPlayerView.h"
- /// Next episode playback Show Button
@property (nonatomic, unsafe_unretained, readonly) BOOL nextEpisodeShowButton; - Reason for change: Show/hide the [Next Episode] button based on the media_info option even when the auto-play next episode setting is On
- Impact scope: None (only applicable to customers who require this flag value)
- App change required: None (only applicable to customers who require this flag value)
- /// Next episode playback Show Button
Deleted APIs
- In "KollusPlayerView.h"
- /// Whether audio watermark is applied
@property (nonatomic, unsafe_unretained, readonly) BOOL isWaterMark; - Reason for change: AWT (Audio watermark) EOL declared & no current users
- Impact scope: None
- App change required: None
- /// Whether audio watermark is applied
Added Features
-
UI distinction when using debug SDK
- When an app is built using the debug SDK, a UI element is added to notify users. (Displays "Debug" text at the top of the video)
- Reason for change: Prevent the debug SDK from being applied to production apps
- Impact scope: None
- App change required: None
-
Apply per-content media info decryption key
- Apply per-content media info encryption key
- Reason for change: Security enhancement
- Impact scope: None
- App change required: None
2.3.19
Release Date: 2024-12-17
Changed APIs
- In "KollusPlayerLMSDelegate.h"
- @param json JSON object sent as request
@param error Network error (nil: success) - (void)kollusPlayerView:(KollusPlayerView *)kollusPlayerView json:(NSDictionary *)json error:(NSError *)error;
- =>
- @param lmsData lms data information
@param resultJson lms result information - (void)kollusPlayerView:(KollusPlayerView *)kollusPlayerView lmsData:(NSString *)lmsData resultJson:(NSDictionary *)resultJson;
- Reason for change: API changed due to request to add the received URL to LMS data information
- Impact scope: Yes (app must apply the changed API as build errors will occur)
- App change required: Yes (app must apply the changed API as build errors will occur)
- @param json JSON object sent as request
Added Features
-
Prevent auto-play when setting playback speed
- Paused state → playback speed event → SDK stores the set value, then applies the playback speed value at the time of the Play event
- Reason for change: Prevent the content from playing when playback speed is set in a paused state
- Impact scope: None
- App change required: None
-
Skip Pause event while seeking
- When seeking during content playback, if a pause event occurs before the seek is complete, the pause result is inconsistent
- Reason for change: Pause event during seeking may affect the seek operation, so it is ignored
- Impact scope: None
- App change required: None
2.3.18
Release Date: 2024-11-07
Added APIs
- Added ignoreZero in "KollusPlayerView.h"
- /// Resume is valid even when the resume time value is small
@property (nonatomic, unsafe_unretained, readonly) BOOL ignoreZero; - Returns the value of the ign_z flag passed as a query parameter in the playback URL. (default: false)
- Reason for change: Added at the request of customers who want to resume playback even when the resume time is within a certain duration from the beginning or end (less than 10 seconds for Kollus Player), ignoring the scenario of playing from the start
- Impact scope: None (only applicable to customers who require this flag value)
- App change required: None (only applicable to customers who require this flag value)
- /// Resume is valid even when the resume time value is small
Added Features
-
Resume valid flag even when resume time value is small
- Returns the value of the ign_z flag passed as a query parameter in the playback URL. (default: false)
- Reason for change: Added at the request of customers who want to resume playback even when the resume time is within a certain duration from the beginning or end (less than 10 seconds for Kollus Player), ignoring the scenario of playing from the start
- Impact scope: None (only applicable to customers who require this flag value)
- App change required: None (only applicable to customers who require this flag value)
-
Kollus DRM and content security enhancement
- Reason for change: Kollus security enhancement
- Impact scope: Kollus customers (V/G encryption version upgrade and DRM encryption/decryption module update)
- App change required: None
2.3.17
Release Date: 2024-09-11
Added Features
- Added LMS Callback delivery items (background and foreground timestamp values)
- After change: Added feature to calculate the time a user spends in the background
- Impact scope: No impact as this is a new API
- App change required: Not required
2.3.16
Release Date: 2024-08-29
Added Features
- Applied on-the-fly DRM: Apply Kollus DRM per content
2.3.15
Release Date: 2024-08-13
- Applied
PallyConFPSSDK.framework2.3.0: must be replaced in the app - Exception handling for missing newline characters in SRT subtitles
- ERROR_KOLLUS_STORAGE_IS_EMPTY error handling when StorageManager is nil
2.3.14
Release Date: 2024-06-25
- Applied
PallyConFPSSDK.framework2.1.0: must be replaced in the app
2.3.13
Release Date: 2024-06-19
- Supplemented exception handling for [KollusAVPlayerView checkOutPut] crash
2.3.12
Release Date: 2024-05-09
- Improved choppy playback issue with AI Speed on iPhone
2.3.11
Release Date: 2024-04-15
- AI Speed content plays according to ios_player_type
- Added AI Speed content information to N-screen
- Added privacy manifest file
/// Player type: hw, sw, native
@property (nonatomic, copy, readonly) NSString *iosPlayerType;
2.3.10
Release Date: 2024-03-28
- Exception handling for [KollusProxyPlayerView checkOutPut] crash
- Background sound playback support during H/W Decoder playback
- Applied next episode playback scenario
- Added next episode APIs
/// Next episode playback Show Time
@property (nonatomic, unsafe_unretained, readonly) NSInteger nextEpisodeShowTime;
/// Next episode playback URL
@property (nonatomic, copy, readonly) NSString *nextEpisodeCallbackURL;
/// Next episode playback Params
@property (nonatomic, readonly) NSMutableDictionary *nextEpisodeCallbackParams;
2.3.9
Release Date: 2024-03-04
- Added AI Speed playback time in LMS callback: at_playtime
- iOS support: iOS 12 and above
- Fixed issue where subtitles from a previous timing were briefly displayed when seeking multiple times consecutively
2.3.8
Release Date: 2024-02-05
- Backup storage to prevent player ID from changing
- AI Speed information is also passed in the Native player
2.3.7
Release Date: 2024-01-12
- Fixed abnormal display issue when seeking H.265 video with iOS Player sw decoder setting
- AI Speed feature
- Added section playback parameters
Added AI Speed related APIs
In KollusPlayerView.h/// Whether AI Speed is supported
@property(nonatomic, unsafe_unretained) BOOL AIRateEnable;
/// AI Speed usage setting (YES: AI Speed, NO: normal playback speed)
@param YES(default);
(void) setAIRate:(bool)bAIRate;
/// Repeat Start Time
@property (nonatomic, unsafe_unretained, readonly) NSInteger nRepeatStartTime;
/// Repeat End Time
@property (nonatomic, unsafe_unretained, readonly) NSInteger nRepeatEndTime;