11. Version Update History
This document records the version update content of the iOS legacy VOD SDK (PolyvVodSDK), making it easy to review new capabilities, optimizations, fixes, and migration notes when integrating or upgrading the SDK.
The current page already includes the full changelog, so there is no need to navigate to GitHub to read it. To verify the source file, you can check the GitHub CHANGELOG.md.
This project has been published on CocoaPods. To view the versions, use the
pod trunk info PolyvVodSDKcommand.
[2.26.0] - 2026-05-16
New Features
- [SDK] Added playback link log collection
- [DEMO] Video screen supports gesture zoom
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for local video playback has been adjusted. To ensure compatibility with previously downloaded videos from older versions during an upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.25.3] - 2026-03-06
Fixes and Optimizations
- [SDK] Fixed an issue on iOS 26 where the progress bar stopped updating after being dragged.
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.25.2] - 2026-01-21
Adjustments and Optimizations
- [SDK] [Log] Optimized log sending logic
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for local video playback has been adjusted. To ensure compatibility with previously downloaded videos from older versions during an upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.25.1] - 2025-12-26
Adjustments and Optimizations
- [SDK] HTTPDNS pre-resolution optimization
Fixes and Optimizations
- [SDK, DEMO] Optimized watch statistics duration for multi-speed playback on systems below iOS 16.
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for local video playback has been adjusted. To ensure compatibility with previously downloaded videos from older versions during an upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.25.0] - 2025-12-10
New Features
- 【DEMO, SDK】Support dynamic domain name scheduling
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.24.3] - 2025-11-14
New Features
- 【DEMO, SDK】Added sprite sheet functionality
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.24.2] - 2025-10-27
New Features
- 【DEMO】Integrated self-developed screen casting SDK
Fixes and Optimizations
- [SDK] Fixed a bug with special characters in Elog logs.
Migration Notes
When upgrading from version 2.18.x or earlier to version 2.19.0 or later, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.24.1] - 2025-08-29
New Features
- 【DEMO】Playback speed settings unified to 7 levels
- 【DEMO】Subtitles now support LaTeX formula display
Adjustments and Optimizations
- [SDK] viewlog statistics optimization, supporting watch completion rate statistics.
Fixes and Optimizations
- [SDK] Fixed occasional audio decoding failures
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.24.0] - 2025-06-30
New Features
- 【DEMO】DLNA screen casting, added multicast capability configuration
Adjustments and Optimizations
- [SDK] QoS statistics optimization
- [SDK] QoS adds stalling event
Fixes and Optimizations
- [SDK] Fixed a crash in local video when upgrading to version 2.19.0 or later in multi-account mode.
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.23.0] - 2025-04-21
New Features
- 【DEMO】Added playback route configuration panel
- 【DEMO, SDK】Added network status monitoring and playback recovery mechanism
- 【SDK】Supports dynamic encryption factor
Adjustments and Optimizations
- 【DEMO, SDK】Xcode 16 adaptation
- 【DEMO】Optimized playback error popup panel
- 【SDK】Optimized interface request timeout configuration
- 【SDK】Optimized and enabled HTTPDNS optimization
- 【SDK】Enhanced log traceability for playback anomalies
- 【DEMO, SDK】Optimized playback from current progress during error retries
- 【SDK】PLVIJKPlayer upgraded to version 0.15.0
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.22.4] - 2025-01-16
New Features
- 【DEMO】Added player heatmap and custom tag annotation functionality. (Refer to the
updateSkinmethod in thePLVVodSkinPlayerControllerclass) - 【SDK】Added the
enableTeaserBackgroundPlaybackproperty to optimize teaser playback control.
@property (nonatomic, assign) BOOL enableTeaserBackgroundPlayback;
Fixes and Optimizations
- [SDK] Fixed an issue where watch time statistics were incorrect when playing at speeds above 2x on systems below iOS 15.
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.22.3] - 2024-11-28
New Features
- 【SDK】Added seek completion callback
/// seek完成回调
@property (nonatomic, copy) void (^seekCompleteHandler)(PLVVodPlayerViewController *player);
Adjustments and Optimizations
- [SDK] Elog log statistics optimization
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.22.2] - 2024-10-12
New Features
- 【DEMO】Anti-system screenshot feature demonstration
Fixes and Optimizations
- [SDK] Optimized error parameters when playing local videos offline.
Adjustments and Optimizations
- [SDK] iOS 18 Adaptation
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.22.1] - 2024-07-18
Fixes and Optimizations
- [SDK] Multi-account support for video migration
- [SDK] Fixed crash caused by resume playback under certain conditions
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for local video playback has been adjusted. To ensure compatibility with previously downloaded videos from older versions during an upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.22.0] - 2024-06-07
New Features
[Demo, SDK] Support for skipping ads
【Demo, SDK】Picture-in-picture can hide fast-forward and rewind buttons
Adjustments and Optimizations
- [Demo] Optimized quiz questions so that answer options can be clicked to select an answer.
- [Demo, SDK] Subtitle styles are now synchronized with player settings.
Fixes and Optimizations
- 【Demo】Fixed potential conflicts when integrating with other projects.
- 【Demo, SDK】Fixed the issue where uniapp stops downloading after completing 3 videos.
- 【SDK】Fixed the issue where switching playback speed, then switching resolution or audio, caused incorrect speed display.
- 【SDK】Fixed the issue where downloaded video information could not be retrieved under weak network conditions.
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
- Upgrading from 2.21.1 to 2.22.0 requires updating the demo layer.
- When upgrading from an older version to the VOD SDK version 2.22.0, you need to simultaneously update the demo layer code to version 2.22.0 to obtain the new features.
- If it is inconvenient to directly update the source code, you can refer to the diff changes to view the changes in the demo layer and manually update the demo layer source code.
[2.21.1] - 2024-03-19
Adjustments and Optimizations
- [SDK] Optimized HTTPDNS for obtaining IPv4 and IPv6 addresses
Fixes and Optimizations
- [SDK] Fixed crash when enabling Picture-in-Picture on some iPad devices
- [SDK] Fixed failure to load large GIF image files in advertisements
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for local video playback has been adjusted. To ensure compatibility with previously downloaded videos from older versions during an upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
- Upgrading from 2.20.1 to 2.21.0 does not require updating the demo layer.
- When upgrading from an older version to the VOD SDK version 2.21.0, you need to simultaneously update the demo layer code from version 2.20.1 to obtain the new features.
- If it is inconvenient to directly update the source code, you can refer to the diff changes to view the changes in the demo layer and manually update the demo layer source code.
[2.21.0] - 2024-01-05
New Features
- [SDK] Added seek parameter options to the player, optimizing the seek experience.
Adjustments and Optimizations
- [SDK] Dynamic domain name configuration for playback links to improve network resilience.
Fixes and Optimizations
- [SDK] Fixed AB stream video download failure
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
- Upgrading from 2.20.1 to 2.21.0 does not require updating the demo layer.
- For the VOD SDK upgrading from an older version to 2.21.0, the demo layer code from version 2.20.1 needs to be updated synchronously to obtain new features.
- If direct source code updates are inconvenient, refer to the diff changes to view the changes in the demo layer and manually update the demo layer source code.
[2.20.1] - 2023-10-30
Adjustments and Optimizations
- [SDK, Demo] Xcode 15 & iOS 17 compatibility adaptation
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
- When upgrading from an older version to the 2.20.1 version of the VOD SDK, you need to simultaneously update the Demo layer code to the 2.20.1 version to obtain the newly added features.
- If it is inconvenient to directly update the source code, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.20.0] - 2023-09-01
Adjustments and Optimizations
- [SDK, Demo] Removed the old marquee
- [SDK, Demo] Optimized Q&A submission statistics
- [Demo] Optimized marquee display style
- [SDK] Supports traceable watermark
- [SDK] Supports cross-platform resume playback
Fixes and Optimizations
- [Demo] Fixed the issue of route switching when downloading videos.
- [SDK] Fixed the issue where seeking was ineffective when playing third-party URL videos.
- [SDK] Fixed occasional crash issues.
- [SDK] Removed the unused
imeifield from previous versions.
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during a coverage upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
- When upgrading from an older version to the 2.20.0 version of the VOD SDK, you need to simultaneously update the Demo layer code of version 2.20.0 to obtain the newly added features.
- If it is inconvenient to directly update the source code, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.19.1] - 2023-07-21
Adjustments and Optimizations
- [SDK] Modified offline video authentication method
- [SDK] Player supports setting the start playback position
Fixes and Optimizations
- [SDK] Fixed a crash caused by setting userid to empty.
- [SDK] Fixed audio-video sync issues in some videos.
- [SDK] Major security upgrade.
Migration Notes
When upgrading from version 2.18.x or below to version 2.19.0 or above, pay attention to the migration of video downloads.
Starting from version 2.19.0, the authentication method for playing local videos has been adjusted. To ensure compatibility with previously downloaded videos from older versions during an upgrade, the SDK will automatically migrate upon initialization. It is essential to strictly test whether locally cached videos have been successfully migrated.
[2.18.4] - 2023-03-15
Fixes and Optimizations
- [SDK] Fixed a crash caused by invalid tokens.
- [SDK] Fixed an occasional crash issue.
Note:
- When upgrading from an older version to the 2.18.4 VOD SDK, it is recommended to also update the Demo layer code to the 2.18.4 version to take advantage of the newly added features.
- If direct source code updates are not convenient, you can refer to the diff changes to review the modifications in the Demo layer and manually update the Demo layer source code.
[2.18.3] - 2022-11-18
Adjustments and Optimizations
- [SDK] Added vrm13 switch to optimize playback experience.
- [SDK] vrm13 now uses software decoding by default.
- [Demo] Fixed the issue where the danmaku button had no effect when clicked.
Note:
- When upgrading from an older version to the 2.18.3 version of the VOD SDK, it is recommended to also update the Demo layer code to the 2.18.3 version to obtain the newly added features.
- If it is not convenient to directly update the source code, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.18.1] - 2022-10-12
Adjustments and Optimizations
- [SDK] Added support for system picture-in-picture playback speed control
- [SDK] Added support for dynamic toggle of HttpDNS
- [SDK, Demo] Added support for manual switching between software and hardware decoding
Note:
- When upgrading from an older version to the VOD SDK version 2.18.1, it is recommended to also update the Demo layer code to version 2.18.1 to obtain the newly added features.
- If direct source code update is not convenient, you can refer to the diff changes to review the changes in the Demo layer and manually update the Demo layer source code.
[2.18.0] - 2022-09-22
Adjustments and Optimizations
- [SDK] Added support for playing VRM13 encrypted videos
Fixes and Optimizations
- [SDK] Fixed the issue where the first frame overlay would not disappear during continuous video switching.
- [SDK] Added support for bitcode packaging.
Note:
- This upgrade mainly involves the SDK layer; there is no need to update the Demo layer code.
- If you need to update the demo source code, you can refer to the diff changes to see the changes in the Demo layer and manually update the Demo layer source code.
[2.17.0] - 2022-09-05
Adjustments and Optimizations
- [Demo] Replaced Lebo Cast SDK with Muxiang Cast SDK
- [Demo] Adapted for screen rotation on iOS 16
- [SDK] Added log reporting for httpdns resolution results
- [SDK] Supports local token input for playing encrypted videos
- [SDK] Supports system-level Picture-in-Picture for watching encrypted videos
- [SDK] Optimized loop filter configuration
- [SDK] Enhanced code protection in the download module to prevent crashes
- [SDK] Fixed the issue where not all download tasks were requested
- [SDK] Fixed the crash caused by premature release of download tasks during progress updates
Note:
- When upgrading from an older version to the VOD SDK version 2.16.6, it is recommended to also update the Demo layer code to version 2.17.0 to obtain the fixes in this release.
- If it is not convenient to directly update the source code, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.16.6] - 2022-04-06
Adjustments and Optimizations
- [SDK] The player now supports HTTPS + IP access to servers with SNI verification enabled.
- [SDK] Optimized the retry mechanism for m3u8 video errors.
- [SDK] Added elog error information reporting.
- [SDK] HttpDNS now includes an authentication feature.
- [SDK] Initialization supports the simultaneous use of multiple encryption strings.
Fixes and Optimizations
- 【Demo】Fixed the black border issue when rotating the screen while playing a video in a floating window.
- 【Demo】Fixed the issue where the screen would turn off following the system after playing an ad video.
- 【SDK】Fixed the issue where the number of clarity options did not match.
- 【SDK】Fixed the gesture invalidation issue caused by playing in audio mode.
Note:
- When upgrading from an older version to the VOD SDK version 2.16.6, it is recommended to also update the Demo layer code to version 2.16.6 to obtain the fixes in this release.
- If it is not convenient to directly update the source code, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.16.5] - 2021-12-02
Adjustments and Optimizations
- [Demo] Uploaded videos support custom file names
Fixes and Optimizations
- [Demo] Fixed the issue where the flashing dual marquee displayed two marquees.
- [Demo] Fixed the issue where the seek progress bar had no effect after network disconnection; seek is now disabled when offline.
- [Demo] Fixed the issue where video playback progress restarted from 0 after reconnecting from a network disconnection.
- [SDK] Fixed the occasional issue where video playback showed a black screen with audio after reconnecting from a network disconnection.
Note:
- When upgrading from an older version to the 2.16.5 VOD SDK, it is recommended to also update the Demo layer code to the 2.16.5 version to benefit from the fixes in this release.
- If direct source code updates are not convenient, you can refer to the diff changes to review the modifications in the Demo layer and manually update the Demo layer source code.
[2.16.4] - 2021-10-10
Adjustments and Optimizations
- [Demo] Marquee 2.0 Released
Fixes and Optimizations
- [SDK] Fixed an issue where switching video quality or stream routes affected the video playback start time when the memory playback feature was enabled.
- [Demo] Fixed an issue where the first frame image was stretched when the video had not yet loaded.
- [Demo] Fixed an issue where the lock screen button was obscured during full-screen playback on devices with a notch.
Note:
- When upgrading from an older version to the VOD SDK version 2.16.4, it is recommended to also update the Demo layer code to version 2.16.4 to obtain the new Marquee 2.0 feature.
- If direct source code updates are not convenient, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.16.3] - 2021-09-06
Adjustments and Optimizations
- [SDK] Optimization of pause ad placement parameters
- [Demo] Added knowledge list feature
Fixes and Optimizations
- [SDK] Fixed the issue of audio playback seek taking too long.
Note:
- When upgrading from an older version to the 2.16.3 version of the VOD SDK, it is recommended to also update the Demo layer code to the 2.16.3 version to obtain the knowledge list feature introduced in this update.
- If direct source code updates are not convenient, you can refer to the diff changes to review the changes in the Demo layer and manually update the Demo layer source code.
[2.16.2] - 2021-08-06
Adjustments and Optimizations
- 【Demo】【SDK】Added system volume control
- 【Demo】【SDK】Added prompt to switch clarity based on network environment
- 【Demo】Added support for top/bottom danmaku styles
Fixes and Optimizations
- 【Demo】Restrict source video playback from switching resolutions
- 【SDK】Download tasks in the "Ready" state will have their status changed to "Stopped" after calling the stop download method
Note:
- When upgrading from an older version to the VOD SDK version 2.16.2, it is recommended to also update the Demo layer code to version 2.16.2 to obtain the features added and fixed in this version.
- If direct source code updates are inconvenient, you can refer to the diff changes to review the changes in the Demo layer and manually update the Demo layer source code.
[2.16.1] - 2021-07-22
Adjustments and Optimizations
- [SDK] Added the ability to remember playback progress and resume playback when playing external videos.
- [SDK] Added the ability to customize the size and position of pause ads.
- [SDK] Fixed an issue where screen mirroring viewing logs were not being tracked.
- [SDK] Fixed an issue where requesting a downloading task would incorrectly show it as completed.
- [Demo] Added the ability to separate screen rotation from full/half-screen states.
Note:
- When upgrading from an older version to the 2.16.1 version of the VOD SDK, it is recommended to also update the Demo layer code to version 2.16.1 to gain the ability to separate screen rotation from full/half-screen states.
- If it is not convenient to directly update the source code, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.16.0] - 2021-06-29
Adjustments and Optimizations
- [SDK] Adapted video playback under the DRM12 scheme
Note:
- This upgrade mainly involves the SDK layer; no updates to the Demo layer code are required.
[2.15.2] - 2021-06-10
Adjustments and Optimizations
- [SDK] Optimized ad playback rules: when playback progress is remembered, ads can be configured to be skipped or not.
- [SDK] Fixed an issue where the playback progress would not update when the audio duration is shorter than the video duration.
Note:
- This upgrade mainly involves the SDK layer, and there is no need to update the Demo layer code.
[2.15.1] - 2021-05-12
Adjustments and Optimizations
- [SDK] Moved the concatenation of screen-casting URLs to the SDK layer
- [SDK] Optimized screen-casting URL parameters with base64 processing
- [SDK] Reduced the size of the FFMpeg package
- [SDK] Fixed the issue of black screen during video intro playback
- [SDK] Fixed the issue where the intro of the previous video continues playing when switching videos
- [SDK] Fixed the issue where certain m3u8 videos cannot seek to 0 or replay
- [SDK] Fixed the crash caused by network recovery from no network to 4G in the background state
- [SDK] Aligned with the Android SDK, modified the user-agent for network requests in the SDK
- [Demo] Changed the acquisition of screen-casting URLs from demo-layer concatenation to retrieval from the SDK
Note:
- When upgrading from an older version to the 2.15.1 VOD SDK, it is recommended to also update the Demo layer code to version 2.15.1 to obtain viewing statistics capability during screen casting playback.
- If direct source code updates are inconvenient, refer to the diff changes to review the Demo layer modifications and manually update the Demo layer source code.
[2.15.0] - 2021-04-14
Adjustments and Optimizations
- [SDK] Added video ban feature
- [SDK] Changed HTTP requests in the SDK to HTTPS requests
- [SDK] Fixed the issue where seeking in some live-to-archive videos would get stuck
- [Demo] Optimized the display of multiple-choice questions in the Q&A feature, added fill-in-the-blank question types
- [Demo] Supports viewing statistics for screen casting
Note:
- When upgrading from an older version to the 2.15.0 VOD SDK, it is recommended to also update the Demo layer code to the 2.15.0 version to obtain the latest Q&A functionality and screen casting viewing statistics.
- If it is not convenient to directly update the source code, you can refer to the diff changes to view the changes in the Demo layer and manually update the Demo layer source code.
[2.14.1] - 2021-02-25
Adjustments and Optimizations
- [SDK] Upgrade PolyvAliHttpDNS to version 1.8.0 or above
- [SDK] Fixed black screen issue when switching between foreground and background during video playback
- [SDK] Fixed issue where switching videos would start playback from the previous video's timestamp
- [SDK] Optimized Seek for live-to-archive videos
Note:
- When upgrading from an older version to the 2.14.1 VOD SDK, it is recommended to also update the Demo layer code to version 2.14.1.
- If direct source code updates are inconvenient, you can refer to the diff changes to review the modifications in the Demo layer and manually update the Demo layer source code.
[2.14.0] - 2020-12-23
Adjustments and Optimizations
- [SDK] Added IPv6 toggle
- [SDK] Optimized pre-roll logic
- [Demo] Added prompt message for disabling drag
- [Demo] Optimized start playback position when screen casting begins/ends
Note:
- When upgrading from an older version to the 2.14.0 version of the VOD SDK, it is recommended to also update the Demo layer code to the 2.14.0 version.
- If direct source code updates are inconvenient, you can refer to the diff changes to review the changes in the Demo layer and manually update the Demo layer source code.
[2.13.1] - 2020-11-20
Adjustments and Optimizations
- [SDK] Support for removing the marquee already set on the player
When setting the marquee attribute marquee of the player PLVVodPlayerViewController to nil, the previously set marquee will be removed.
Note:
- This upgrade mainly involves the SDK layer, so there is no need to update the Demo layer code.
- If the original project code contains
self.marquee = nil, ensure proper code protection; otherwise, it will be treated as removing the marquee.
[2.13.0] - 2020-10-26
Adjustments and Optimizations
- [SDK] Upgraded the IJK player dependency library to version 0.9.1, resolving conflicts with the client's IJK player.
Fixes and Optimizations
- [SDK] Updated source file download URL
Note:
- This upgrade mainly involves the SDK layer; no updates to the Demo layer code are required.
[2.12.1] - 2020-10-19
Adjustments and Optimizations
- 【Demo】Upgraded the version number of the third-party library Lebo Screen Mirroring SDK dependency in the demo to 30226.
Fixes and Optimizations
- [SDK] Fixed the issue where the list of all download tasks could not retrieve completed download tasks.
[2.12.0] - 2020-09-08
Adjustments and Optimizations
[Demo] Moved the layout code of the open-source video-on-demand player
PLVVodSkinPlayerControllerto the Demo layer.【Demo】PNG Image Size Compression
Note:
- This upgrade mainly involves updates to the Demo layer. To obtain the upgrade content, in addition to upgrading the SDK to version 2.12.0, you also need to synchronously update the Demo layer code to version 2.12.0.
- If it is inconvenient to directly update the source code, you can refer to the diff changes to review the changes in the Demo layer and manually update the Demo layer source code.
[2.11.0] - 2020-07-20
Adjustments and Optimizations
- [Demo] Made the
maxPositionproperty ofPLVVodSkinPlayerControllerpublic.
Fixes and Optimizations
- 【Demo】Fixed the issue where screen casting was not working on some devices
- 【SDK】Fixed the issue where the playback rate changed to 0
- 【SDK】Security upgrade
[2.10.0] - 2020-06-15
Adjustments and Optimizations
- [Demo] SDK account encryption strings and other items are uniformly defined in
PLVVodAccount.
Fixes and Optimizations
- 【Demo】Fixed a bug where the input box on the vid test playback page was blocked by the keyboard
- 【SDK】Fixed occasional crashes when the player is in fullscreen mode
- 【SDK】Fixed a bug where remembering the last playback position sometimes did not take effect
[2.9.1] - 2020-06-01
New Features
[SDK] Added method to retrieve the current playing video pid and method to obtain real-time playback status.
@interface PLVVodPlayerViewController : UIViewController - (NSString *)getPlayId;// 返回当前播放视频的 pid - (NSDictionary *)getRealPlayStatus; // 返回播放器实时状态 @end[SDK] Control the Viewlog sending frequency based on backend settings, with a default interval of 10 seconds.
Fixes and Optimizations
- 【SDK】Fixed occasional crash on some iOS 13.4 devices when launching the app
- 【Demo】Fixed the issue where the floating window scale changes during screen rotation in the floating window sample code. Requires syncing the floating window open-source code (PolyvOpenSourceModule/Floating)
[2.9.0] - 2020-05-19
New Features
- [SDK] Added parameter control for the duration and size of video preloading.
@interface PLVVodPlayerViewController : UIViewController
@property (nonatomic, assign) NSInteger maxCacheSize; // 预加载缓冲大小,单位字节
@property (nonatomic, assign) NSInteger maxCacheDuration; // 预加载缓冲时长,单位秒
@property (nonatomic, assign) NSInteger minCacheFrame; // 预加载最小缓冲帧数
@end
- [SDK] Supports delayed startup of HttpDNS. It starts by default when an encrypted string is configured. Delayed startup needs to be set before configuring the encrypted string.
@interface PLVVodSettings : NSObject
@property (class, nonatomic, assign) BOOL delayHttpDNS; // 延迟启动 HttpDNS,enableHttpDNS 为 YES 时生效,默认 NO
@property (class, nonatomic, assign) NSInteger delayHttpDNSTime; // 延迟启动 HttpDNS 的时间,delayHttpDNS 为 YES 时生效,默认 2,单位秒
- 【SDK】Supports setting up to two logos for the player. For code examples, refer to the
- (void)addLogomethod in the demo.
@class PLVVodPlayerLogoParam // logo 配置参数类
/// logo 图层 UIView 子类
@interface PLVVodPlayerLogo : UIView
- (void)insertLogoWithParam:(PLVVodPlayerLogoParam *)param; // 为 logo 图层添加 logo 图片
@end
@interface PLVVodPlayerViewController : UIViewController
- (void)addPlayerLogo:(PLVVodPlayerLogo *)logo; // 为播放器增加 logo 显示图层
@end
Adjustments and Optimizations
- 【Demo】Added screen casting feature macro definition
PLVCastFeature - 【SDK】Removed dependency library PLVNetworkDiagnosisTool
Fixes and Optimizations
- 【Demo】Fixed inaccurate volume adjustment when swiping the player with gestures
- 【SDK】Added support for playing WAV audio files
- 【SDK】Fixed occasional online crash when downloading videos
- 【SDK】Fixed online crash caused by memory leak
[2.8.1] - 2020-05-08
Fixes and Optimizations
- [SDK] Removed UIWebView related content
- [SDK] Fixed the issue where the interface briefly freezes when switching from background to foreground
[2.8.0] - 2020-03-31
New Features
- [SDK, Demo] Support long press on screen for fast-forward
@interface PLVVodSkinPlayerController : PLVVodPlayerViewController
@property (nonatomic, assign) BOOL disableLongPressGesture; // 是否屏蔽长按倍速快进手势,默认为 NO
@property (nonatomic, assign) double longPressPlaybackRate; // 长按快进时的倍速,默认为 2.0
@end
- 【SDK, Demo】Added video orientation setting for full-screen playback, requiring synchronized updates to the player skin (path: PolyvOpenSourceModule/Skin)
typedef NS_ENUM(NSInteger, PLVVodFullScreenOrientation) {
PLVVodFullScreenOrientationAuto = 0, // 根据视频宽高比自动判断,当宽高比 >=1 时,横向全屏;当宽高比 <1 时,竖向全屏
PLVVodFullScreenOrientationPortrait, // 竖向全屏
PLVVodFullScreenOrientationLandscape, // 横向全屏
};
@interface PLVVodPlayerViewController : UIViewController
@property (nonatomic, assign) PLVVodFullScreenOrientation fullScreenOrientation; // 设置全屏方向
@property (nonatomic, copy) void (^didFullScreenSwitch)(BOOL fullScreen); // 全屏状态变化回调
- (void)setPlayerFullScreen:(BOOL)full; // 设置播放器是否处于全屏模式
@end
- [Demo] Added a switch to disable dragging the progress bar. This should be set before calling the method
-addPlayerOnPlaceholderView:rootViewController.
@interface PLVVodSkinPlayerController : PLVVodPlayerViewController
@property (nonatomic, assign) BOOL restrictedDragging; // 是否限制拖拽进度功能,默认为 NO,可随意拖拽进度
@property (nonatomic, assign) BOOL allForbidDragging; // 在属性 restrictedDragging 为 YES 的基础上,是否允许对已播放的进度进行拖拽
@end
- [Demo] Added support for floating window playback. The open-source code under the path
PolyvOpenSourceModule/Floatingin the demo needs to be imported into the project.
Adjustments and Optimizations
- [SDK] Support for displaying quiz questions when playing offline videos
- [SDK] Differentiate between download and playback behaviors when requesting video resources
Fixes and Optimizations
- 【Demo】Fixed the issue where disabling the danmaku switch was ineffective
- 【SDK】Fixed a potential crash issue when playing in a child thread
[2.7.1] - 2020-03-22
New Features
【SDK】
PLVVodDownloadManagerAdded the following methods:/// 迁移已经缓存的视频数据 - (BOOL)moveDownloadVideoFromSourceDir:(NSString *)sourceDir toDestDir:(NSString *)destDir; /// 开始指定vid视频下载,根据priority 参数执行不同的下载策略 - (void)startDownloadWithVid:(NSString *)vid highPriority:(BOOL)priority; /// 停止下载指定视频,可选择是否自动开启下一个视频的下载 - (void)stopDownloadWithVid:(NSString *)vid autoNext:(BOOL)autoNext;【SDK】
PLVVodPlayerViewControllerAdded-leavePlayerWithPausemethod/// 离开播放器并暂停 - (void)leavePlayerWithPause;
Adjustments and Optimizations
- [SDK] Supports integration via pod subspec, resolving dependency library conflicts.
Fixes and Optimizations
- [SDK] Fixed a crash issue caused by destroying the player in a child thread.
[2.7.0] - 2020-01-06
Adjustments and Optimizations
- [SDK] Changed the dependency library PolyvIJKPlayer to a dynamic library. Meanwhile, the framework package name of PolyvIJKPlayer has been changed from IJKMediaFramework to PolyvIJKMediaFramework.
[2.6.6] - 2020-01-06
New Features
Added an interface for tracking video content watch duration
iOS adds an interface for setting software and hardware decoding for video playback.
Added seek elog statistics event
Traffic data statistics based on the appId dimension
PLVVodPlayerViewController,
@property (nonatomic, assign, readonly) NSTimeInterval videoContentPlayedTime;Duration of the watched video content@property (nonatomic, assign) BOOL isVideoToolBox;Default hardware decoding
Adjustments and Optimizations
- Unified the parameter passing method for
viewlog params - Added support for dynamically setting whether background playback is allowed
- Modified the signature rules for sub-accounts
Fixes and Optimizations
- [demo] Fixed the issue where input field predictive suggestions could not be selected on iOS 13
- [demo] Resolved conflicts with the Cloud Classroom SDK
- Ensured the player runs on the main thread to prevent crashes on iOS 13 in certain scenarios
[2.6.5] - 2019-10-28
New Features
Support for triple-screen playback
Display loading network speed when the video is loading
Added current playback progress callback
PLVVodPlayerViewController,
@property (nonatomic, assign) BOOL pptEnable;Three-part screen feature toggle@property (nonatomic, copy) void (^playbackProgressHandler)(PLVVodPlayerViewController *player, NSTimeInterval curPlayTime);Playback progress callback
PLVPPTSimpleDetailController: Three-Split Screen Feature Playback Page (DEMO)
Adjustments and Optimizations
- Added the
flowplayback traffic field to the VOD viewlog. - Optimized the logic for validating
vidlegality, and improved error prompts.
Fixes and Optimizations
- When clearing all videos in the download directory, the database records are also cleared simultaneously.
- Fixed the issue where the auto-play parameter does not take effect in the
setURLmethod.
[2.6.4] - 2019-08-13
New Features
VOD sub-account support
Custom intro support
Local Q&A feature supported
Randomly update custom Q&A support (demo)
Added return of danmaku ID and parameter validation to the danmaku sending interface
PLVVodSettings,
+ (instancetype)settingsWithAppId:(NSString *)appId secretKey:(NSString *)secretKey userId:(NSString *)userId;VOD Sub-account Initialization
PLVVodExam,
+ (NSArray <PLVVodExam *> *)localExamsWithVid:(NSString *)vid downloadDir:(NSString *)downloadDir;Retrieve local Q&A data
PLVVodPlayerViewController,
- (BOOL)setCustomTeaser:(NSString *)teaserUrl teaserDuration:(NSInteger )teaserDuration;Set custom intro
Adjustments and Optimizations
- m3u8 playback URLs now support HTTPDNS resolution for playback.
- The marquee now supports setting a fixed time interval, updated to version 0.0.4.
Fixes and Optimizations
- Fixed the issue where the end time of some videos did not match the video duration.
- Fixed the issue where some old video requests resulted in a Key 404 error.
[2.6.3] - 2019-06-25
New Features
Added a toggle for sending viewlog logs during offline playback.
Third-party video playback, supports custom request headers
PLVVodPlayerViewController,
@property (nonatomic, assign) BOOL enableLocalViewLogOffline playback sends viewlog- (void)setURL:(NSURL *)videoUrl withHeaders:(NSDictionary<NSString *, NSString *> *)headers;Third-party playback links support custom headers
Adjustments and Optimizations
- Optimized retry logic and prompts for player network errors.
- Improved the SDK's elog error log reporting.
Fixes and Optimizations
- Fixed the issue where the auto-play toggle setting was ineffective in audio playback mode.
- Fixed the issue where the marquee might display outside the view area during landscape/portrait switching.
[2.6.2] - 2019-05-20
- Added video upload feature, integration method:
pod 'PLVVodUploadSDK', '~> 0.1.0' - For detailed integration instructions, see: iOS Upload SDK Integration Guide
[2.6.1] - 2019-05-20
New Features
- Download supports multi-account functionality
- Local video playback supports subtitle display
- Player provides an interface for displaying Q&A
- Player adds a method to retrieve video width and height
PLVVodDownloadManager,@property (nonatomic, assign) BOOL isMultiAccountMulti-account support switch, default is NO@property (nonatomic, copy) NSString *previousDownloadDirVideo download directory set for a single account, used for migrating old account data to a new account-switchDownloadAccountLog in or switch to a specific account-logoutMultiAccountLog out of the current account. After logging out, the default account will be used for download-related operations
PLVVodExam+createExamWithDicConvert the Q&A information dictionary to a PLVVodExam model object+createExamArrayWithDicArrayConvert the Q&A information dictionary array to a PLVVodExam model object array
PLVVodPlayerViewController-getVideoSizeRetrieve the video width and height. The values can be obtained after the video is ready for playback
Adjustments and Optimizations
- Live streaming saved as on-demand video, chat room messages loaded as danmaku into the player
- Danmaku interface upgrade
- Added playback failure retry mechanism, automatic bitrate switching/route switching
- Optimized playback logic: automatically switch to a lower bitrate video if the high-bitrate video has not yet been encoded successfully
Fixes and Optimizations
- Fixed the issue of inaccurate secondary buffering time statistics in QoS buffer statistics.
- Changed the default database path to resolve the problem where the database might be cleared by the system when storage space is full.
- Created a new thread to perform decompression operations, fixing the issue where callback methods for receiving video data during other downloads were not executed.
- Fixed a potential crash caused by continuous changes in network status.
[2.6.0] - 2019-05-15
New Features
- Added audio file download functionality
- Network type prompt during video playback
- Added video decompression progress callback
- Playback statistics: added
viewerAvatarparameter to track viewer avatar PLVVodVideoParams, added data type for parameter passing in download management interfaces, compatible with video/audio file processingvideoParamsWithVid:fileType:initialization method
PLVVodDownloadManageradded interface compatible with audio/video download management; users who do not need audio downloads are advised to use the old method+downloadAudioaudio file download method-startDownloadWithVideoParamsstart download from specified video/audio file-stopDownloadWithVideoParamsstop downloading specified video/audio file-removeDownloadWithVideoParamsremove video/audio download task and delete corresponding files-requestDownloadInfoWithVideoParamsget detailed information of video/audio download-removeVideoWithVideoParamsdelete specified video/audio file (unrelated to download tasks)
PLVVodNetworkTipsView(Demo) prompts network type during online video playback, allowing users to choose to play or cancel; refer to the demo for specific implementation@property (nonatomic, copy) void (^playBtnClickBlock) (void);button click callback-showshow prompt dialog-hidehide prompt dialog
PLVVodDownloadInfoadded video decompression progress callback, optimized download progress UI display@property (nonatomic, copy) void (^unzipProgressDidChangeBlock)(PLVVodDownloadInfo *info)
PLVVodSettingsplayback statistics: addedviewerAvatarparameter@property (nonatomic, copy) NSString *viewerAvatar;
Adjustments and Optimizations
- Playback statistics: Unified viewing duration statistics rules when switching between audio/video, streams, and bitrates.
- HTTPDNS is enabled by default.
- Optimized ATS settings: HTTPDNS does not depend on ATS settings; screen mirroring depends on ATS settings and needs to support HTTP requests. Refer to the demo for specific settings.
- Quiz distinguishes between single-choice and multiple-choice question types.
- When the app goes to the background, save the current playback progress.
Fixes and Optimizations
- Fixed incorrect layout of the Q&A analysis panel in vertical canvas mode; options may be obscured when rotating the screen after answering; Q&A panel is obscured on iPad.
- Fixed the issue where clicking "Skip" in Q&A caused the video playback to rewind.
- Fixed the issue where the question title in the Q&A panel was too long and not fully displayed.
- Resolved the issue of slow video playback under precise Seek.
- Resolved the flickering issue of the buffering progress bar.
[2.5.6] - 2019-04-03
New Features
Added screen recording prevention feature for the player
The player supports multi-route switching.
Portrait small window playback, supports custom definition/route speed button display
PLVVodVideo, added audio file route attribute for route switching.@property (nonatomic, strong, readonly) NSArray<NSString *> *availableVoiceRouteLines;
PLVVodPlayerViewController, screen recording prevention feature, disabled by default (NO)@property (nonatomic, assign) BOOL videoCaptureProtect;
PLVVodShrinkscreenView, (DEMO) Picture-in-picture playback, custom display button
@property (nonatomic, assign) BOOL isShowRoutelineWhether to display the route button@property (nonatomic, assign) BOOL isShowRateWhether to display the bitrate button@property (nonatomic, assign) BOOL isShowQualityWhether to display the resolution button
Adjustments and Optimizations
- Display the video cover image before video playback
- Added comments to the screen-casting component, including annotations for the usage timing of the anti-screen-recording feature; the default screen-casting button is hidden (customers can simply uncomment the code to use the screen-casting function)
Fixes and Optimizations
- Fixed an issue where the marquee remained centered and unchanged when switching from portrait to landscape mode.
- Fixed an issue where seeking was ineffective when the video was playable but had not started playing.
- Fixed an issue where deleting a video caused the database record to be recreated.
- Fixed an issue where deleting all videos caused the auto-download feature of autoStar to fail.
[2.5.5] - 2019-02-26
New Features
- Added video bookmark functionality to the player. Refer to the demo for implementation details.
PLVVodPlayerViewController, added a click callback for video bookmark information, passing the index of the selected bookmark.@property (nonatomic, copy) void (^videoTipsSelectedHandler)(NSUInteger tipIndex);
PLVVodPlayerSkin,-addVideoPlayTips, added video bookmark information.-showVideoPlayTips, displays video bookmark information.
@property (nonatomic, copy) void(^plvVideoTipsPlayerBlock)(NSUInteger playIndex);Handles playback events when clicking on bookmark information.
Fixes and Optimizations
- Screen casting SDK upgrade, with partial bug fixes.
[2.5.4] - 2019-02-15
New Features
- Added screen casting functionality to the player
- Added lock screen button functionality to the player
PLVVodPlayUtil,requestCastKeyIvWitVideoRetrieve screen casting encryption information based on the video model
PLVCastBusinessManager, added a screen casting business management class, with some methods as follows. Refer to the demo for specific implementation.-initCastBusinessWithListPlaceholderViewInitialize screen casting functionality-setupEnable screen casting functionality
PLVCastManager, added a screen casting manager, with some methods as follows. Refer to the demo for specific implementation.+getCastAuthorizationObtain screen casting permissions, can be called in advance in AppDelegate+authorizationInfoIsLegalWhether authorization information has been set-quitAllFuntioncStop screen casting functionality-startPlayWithVideoStart video playback-pausePause playback-resumeResume playback-stopStop playback
PLVCastManagerDelegate, added a screen casting manager delegate protocol, with some delegate methods as follows. Refer to the demo for specific implementation.-plvCastManager_findServicesDevice discovery callback-plvCastManager_connectServicesResultDevice connection callback-plvCastManager_castErrorScreen casting error callback-plvCastManager_playStatusChangedWithStatusPlayback status callback-plvCastManager_playTimeChangedWithCurrentTimePlayback progress callback
PLVVodLockScreenView, added lock screen button functionality to the player. Refer to the demo for specific implementation.
Adjustments and Optimizations
- Upgraded ijkplayer to version 0.4.0
- Display the first image when playing audio
- Optimized the Q&A player
- Clicking on the progress bar allows seeking to a specified position
- Optimized remembering the original playback speed when switching resolutions
- Adapted to UI-less audio playback scenarios
Fixes and Optimizations
- Fixed an issue where some live-to-archive videos failed to replay after playback ended.
- Fixed an issue where switching videos caused overlapping audio when the intro/intro ad had not finished playing.
- Fixed a crash that occurred in certain scenarios when
vidwas empty duringsetVideo.
[2.5.3] - 2018-12-17
New Features
PLVVodDownloadManager, supports multi-task download functionality, 1 to 3 tasks@property (nonatomic, assign) NSUInteger maxRuningCountSet the maximum number of simultaneous download tasks, default is 1
PLVVodDownloadManager (Database), added download management categories, extended SDK database functionality-createExtendTableWithClassCreate extension table-insertOrUpdateWithExtendInfoInsert or update a record-getExtendInfoWithClass:conditionQuery records based on conditions-getAllExtendInfoWithClassQuery all records-deleteExtendInfoWithClass:conditionDelete a record based on conditions-deleteAllExtendInfoWithClassDelete all records
PLVVodExtendVideoInfo, (Demo) Example of database extension table structure, refer to the demo for detailsPLVVodDBManager, (Demo) Added PLVVodDBManager, a secondary encapsulation of SDK database operation APIs for easier application handling, refer to the demo for detailsPLVVodPlayerViewController, added seekType attribute to implement precise seek functionality@property (nonatomic, assign) PLVVodPlaySeekType seekType;
PLVSubtitleManager, (Demo) Player supports top-displayed subtitle functionality, pod 'PLVSubtitle', '~> 0.1.0'-managerWithSubtitle:lale:topLable:errorSupports initialization method for top-displayed subtitles
PLVVodServiceUtil, (Demo) Added batch retrieval interface for video play counts-requestPlayTimesWithVidsBatch retrieve play counts based on vid array
Adjustments and Optimizations
- Cocoapods supports integrating the SDK as a dynamic library, resolving partial conflicts with other audio/video SDKs. Integration method:
pod 'PolyvVodSDK_Dylib'
Fixes and Optimizations
- Fixed the issue where answering correctly would restart playback instead of continuing (Demo)
- Fixed the issue where the playback animation would stop when returning from the background to the foreground in audio mode (Demo)
- Fixed the issue where long-pressing the skin function settings button would cause the player skin to never display again (Demo)
- Fixed the issue where the video could not be downloaded again after the resume data became invalid
- Fixed the issue where the player would still interrupt third-party app background playback in some scenarios after exiting
[2.5.2] - 2018-11-08
New Features
PLVVodPlayerViewController, supports URL-based video playback, compatible with third-party platform video playback-setURLPlay/switch videos via URL
PLVVodPlayerUtil, added a player utility class, providing methods to retrieve playback progress and playback progress timestamps-lastPositionWithVidGet the last playback progress by vid-lastPositionTimestampWithVidGet the last playback progress timestamp by vid
PLVVodPlayerViewController, added a loop playback property (m3u8 videos not yet supported), suitable for short video playback scenarios@property (nonatomic, assign) BOOL enablePlayRecycle;
PLVVodErrorUtil, added an error handling utility class in the Demo, returning error prompts based on error codes, with support for custom error prompts-getErrorMsgWithCodeReturn error prompts based on error codes
PLVVodServiceUtil, added a business utility class in the Demo, providing related extended API interfaces-requestVideoListWithAccountGet video list information based on sub-account, video category ID, and other parameters
Adjustments and Optimizations
- The
titleproperty of thePLVVodVideomodel has been changed to read-write, allowing users to customize the title. - For player volume adjustment, you can choose to adjust either the system volume or the player volume. Refer to the volume adjustment logic in the
PLVVodSkinPlayerControllerclass in the Demo.
Fixes and Optimizations
- Fixed compatibility issues with cached videos when upgrading from version 1.0 to 2.0.
- The playback token interface now supports base64 encoding for
viewerIdandviewerName, resolving token retrieval failures when parameters contain Chinese characters. - Fixed data statistics errors after switching videos in the same player.
- Fixed a crash on iPad when initializing the player outside the
ViewDidLoadfunction.
[2.5.1] - 2018-09-26
Fixes and Optimizations
- Fixed an issue where switching bitrate via API would cause the video to pause playback.
- Added immediate saving of records to the database when adding a video to the download queue, resolving the issue where download records were sometimes not saved after exiting the app.
[2.5.0] - 2018-09-17
New Features
PLVVodDownloadManager, added pause/resume functionality for specified videos in the download queue. See the demo for usage.
-startDownloadWithVidStart downloading the specified video-stopDownloadWithVidStop downloading the specified video
PLVVodDownloadManager, added functionality to retrieve cached video list information from the database. See the demo for usage.
-requstDownloadProcessingListWithCompletionRetrieve all video information from the database that is in the cache (preparing cache, caching, cache failed, etc.)-requestDownloadCompleteListRetrieve all successfully cached video information from the database
PLVVodDownloadManager, added a download completion callback for individual videos. See the demo for usage.@property (nonatomic, copy) void(^downloadCompleteBlock)(PLVVodDownloadInfo *info);
PLVVodDownloadManager, added a method to retrieve download information based on vid.-requestDownloadInfoWithVid
PLVVodVideo, added avideojsonretrieval method. This method automatically updates and saves thevideojsonto the local database, and prioritizes returning local data.
-requestVideoPriorityCacheWithVidAdd video to download queue; prioritize using this method when retrieving video JSON.
- Added video detail database caching functionality
Adjustments and Optimizations
- Redesigned the download page, optimizing the interface interaction to display a list of "Caching" / "Cached" items.
- Optimized the playback logic for the cached interface. First, use the
-localVideosmethod to retrieve basic information about the cached video list from the local directory. Then, use the-requestDownloadCompleteListmethod to obtain detailed information about the cached video list. After combining the data, it is used for local video playback and interface display. See the demo for details.
Fixes and Optimizations
- Restored the HLS encrypted video zip download method
- mp4 / flv and other single-file video downloads now support background downloading
- Fixed a bug in the
PLVVodDownloadManager-localVideosmethod, filtering out HLS videos that have not been fully cached - Adapted the player for iPad landscape and portrait orientation
- Fixed playback failures for some source file videos
- Fixed incorrect download status after reconnecting to the network
- Improved the overall stability of the download functionality
[2.4.1] - 2018-08-31
New Features
The player now supports default audio playback.
PLVVodPlayerViewController, added a normal playback end flag attribute to determine whether the player ended playback normally or abnormally.@property (nonatomic, readonly) BOOL reachEndSuccess;
PLVVodPlayerViewController, added playback recovery callback. After an abnormal playback ends, this block is called back every 5 seconds. In this block, you can implement the playback recovery logic. For details, refer to the relevant logic in the PLVVodSkinPlayerController file.@property (nonatomic, copy) void (^playbackRecoveryHandle)(PLVVodPlayerViewController *player);
Fixes and Optimizations
- Bitrate switching causes the video to restart playback.
- When video playback ends, it cannot distinguish between normal and abnormal termination.
- When the same player plays different videos, it cannot accurately record the historical playback position for each video.
- Playing offline videos in a disconnected state results in incorrect total video duration display.
- The video duration parsed by the player does not match the video duration in the video JSON, leading to incorrect recording of the historical playback position, causing the video to always start playing from the last few seconds upon replay.
[2.4.0] - 2018-07-16
New Features
PLVVodDownloadManager, added methods for App entering foreground and background states to improve background download stability;-applicationWillEnterForegroundCalled when the App returns to the foreground, refer to the calling method in AppDelegate for details.-applicationDidEnterBackgroundCalled when the App switches to the background, refer to the calling method in AppDelegate for details.
Fixes and Optimizations
- Optimized download logic to improve the stability of background downloads.
[2.3.3] - 2018-06-26
New Features
PLVVodDownloadManager, added a call method for when the app is about to terminate, modifying and saving the video download status to restore the video download state when the app is next launched.+ `-applicationWillTerminate`
Fixes and Optimizations
- Urgent fix for an issue where, after the app terminates during video download and is restarted, the download list shows incorrect video status and videos cannot be downloaded properly.
- General fix for an issue where the player speed display does not match after switching bitrates.
[2.3.0] - 2018-06-08
New Features
- Added audio/video playback switching functionality. For detailed usage, refer to the
PLVVodSkinPlayerControllerexample in the demo.
Fixes and Optimizations
- Fixed a bug where locally downloaded videos could not be played when offline.
[2.2.0] - 2018-04-12
New Features
PLVVodDownloadManager, added compatibility with 1.x.x offline video methods;-compatibleWithPreviousVideos
[2.1.0] - 2018-03-27
New Features
PLVVodPlayerViewController, added a callback for playback readiness;@property (nonatomic, copy) void (^preparedToPlayHandler)(PLVVodPlayerViewController *player);
PLVVodPlayerViewController, added a callback for playback status;@property (nonatomic, copy) void (^playbackStateHandler)(PLVVodPlayerViewController *player);
PLVVodPlayerViewController, added a callback for loading status;@property (nonatomic, copy) void (^loadStateHandler)(PLVVodPlayerViewController *player);
PLVVodPlayerViewController, added a callback for playback completion;@property (nonatomic, copy) void (^reachEndHandler)(PLVVodPlayerViewController *player);
[2.0.0] - 2018-03-21
Adjustments and Optimizations
- Optimized API documentation comments;
- Renamed
autoContinueinPLVVodPlayerViewControllerto the more accuraterememberLastPosition;
[2.0.0] - 2018-03-19
Adjustments and Optimizations
- Optimized API documentation comments by adding documentation comments to classes, enums, and constants.
[2.0.0] - 2018-03-16
New Features
- Added error annotation, correct annotation attributes and logic to Q&A.
Adjustments and Optimizations
- Optimized the logic for updating player status values when switching videos.
- Improved API documentation comments by adding descriptions of default values.
- Enhanced the auto-play logic.
- Updated the version number.
[0.0.5] - 2018-03-14
New Features
- Added error type "Video and account mismatch";
- Added network monitoring functionality;
- Added error type "Network unreachable";
- Established cache queues for viewlog, Qos, and error collection;
Adjustments and Optimizations
- Optimized the player interface layout;
- Optimized the ad player layout;
- Optimized the ad playback logic;
- Optimized the intro playback logic;
- Optimized the player event callbacks;
- Optimized the download manager interface;
- (void)requestDownloadInfosWithCompletion:(void (^)(NSMutableArray<PLVVodDownloadInfo *> *downloadInfos))completion;->- (void)requestDownloadInfosWithCompletion:(void (^)(NSArray<PLVVodDownloadInfo *> *downloadInfos))completion;
- Optimized the auto-resume playback logic;
- Optimized the ad status callbacks;
- Optimized the UI when there are no ads;
- Optimized the
PLVVodVideointerface; - Added the
PLVVodVideoobject description; PLVVodAdimplements theNSStringFromPLVVodAdTypeandNSStringFromPLVVodAdLocationfunctions;- Optimized the ad matching logic to enable each ad to be traced back and set within its respective category;
- Optimized the player marquee view hierarchy;
- Optimized network request error logs;
- Optimized the retrieval of local video file sizes;
- Optimized the logic for removing download tasks;
PLVVodDownloadManagerandenableBackgroundDownloaddefault to YES on iOS 8 and above;- Optimized the
PLVVodVideojudgment logic for-available; - Optimized the error callback when
PLVVodDownloadManagerfails to create a downloader; - Optimized the httpDNS logic;
- Optimized code documentation comments;
Remove Content
PLVVodPlayerViewControllerRemove redundant attributes:enableSrt,srtKey;
Fixes and Optimizations
- Fixed the issue where memory could not be released when playing intros and ads.
- Fixed the issue where timers could not be destroyed and released due to duplicate property names in player subclasses.
- Fixed the download failure caused by incorrect video type judgment during live stream recording.
- Fixed the ad duration logic.
- Fixed the synchronization issue between volume and player values.
- Fixed the time display format.
- Fixed the infinite loop crash issue in
-requestDownloadInfosWithCompletion:.
