Polyv Help Center

Help Center

11. Version Update History

Updated: 2026-05-21 18:10:59

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 PolyvVodSDK command.

[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 updateSkin method in the PLVVodSkinPlayerController class)
  • 【SDK】Added the enableTeaserBackgroundPlayback property 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.

  1. Upgrading from 2.21.1 to 2.22.0 requires updating the demo layer.
  2. 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.
  3. 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.

  1. Upgrading from 2.20.1 to 2.21.0 does not require updating the demo layer.
  2. 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.
  3. 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.

  1. Upgrading from 2.20.1 to 2.21.0 does not require updating the demo layer.
  2. 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.
  3. 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.

  1. 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.
  2. 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 imei field 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.

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. This upgrade mainly involves the SDK layer; there is no need to update the Demo layer code.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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:

  1. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. This upgrade mainly involves the SDK layer, so there is no need to update the Demo layer code.
  2. 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:

  1. 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 PLVVodSkinPlayerController to the Demo layer.

  • 【Demo】PNG Image Size Compression

Note:

  1. 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.
  2. 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 maxPosition property of PLVVodSkinPlayerController public.

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)addLogo method 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/Floating in 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】PLVVodDownloadManager Added 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】PLVVodPlayerViewController Added -leavePlayerWithPause method

    /// 离开播放器并暂停
    - (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 flow playback traffic field to the VOD viewlog.
  • Optimized the logic for validating vid legality, 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 setURL method.

[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 enableLocalViewLog Offline 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 isMultiAccount Multi-account support switch, default is NO
    • @property (nonatomic, copy) NSString *previousDownloadDir Video download directory set for a single account, used for migrating old account data to a new account
    • -switchDownloadAccount Log in or switch to a specific account
    • -logoutMultiAccount Log out of the current account. After logging out, the default account will be used for download-related operations
  • PLVVodExam
    • +createExamWithDic Convert the Q&A information dictionary to a PLVVodExam model object
    • +createExamArrayWithDicArray Convert the Q&A information dictionary array to a PLVVodExam model object array
  • PLVVodPlayerViewController
    • -getVideoSize Retrieve 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 viewerAvatar parameter to track viewer avatar
  • PLVVodVideoParams, added data type for parameter passing in download management interfaces, compatible with video/audio file processing
    • videoParamsWithVid:fileType: initialization method
  • PLVVodDownloadManager added interface compatible with audio/video download management; users who do not need audio downloads are advised to use the old method
    • +downloadAudio audio file download method
    • -startDownloadWithVideoParams start download from specified video/audio file
    • -stopDownloadWithVideoParams stop downloading specified video/audio file
    • -removeDownloadWithVideoParams remove video/audio download task and delete corresponding files
    • -requestDownloadInfoWithVideoParams get detailed information of video/audio download
    • -removeVideoWithVideoParams delete 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
    • -show show prompt dialog
    • -hide hide prompt dialog
  • PLVVodDownloadInfo added video decompression progress callback, optimized download progress UI display
    • @property (nonatomic, copy) void (^unzipProgressDidChangeBlock)(PLVVodDownloadInfo *info)
  • PLVVodSettings playback statistics: added viewerAvatar parameter
    • @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 isShowRouteline Whether to display the route button
  • @property (nonatomic, assign) BOOL isShowRate Whether to display the bitrate button
  • @property (nonatomic, assign) BOOL isShowQuality Whether 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 ,
    • requestCastKeyIvWitVideo Retrieve 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.
    • -initCastBusinessWithListPlaceholderView Initialize screen casting functionality
    • -setup Enable screen casting functionality
  • PLVCastManager, added a screen casting manager, with some methods as follows. Refer to the demo for specific implementation.
    • +getCastAuthorization Obtain screen casting permissions, can be called in advance in AppDelegate
    • +authorizationInfoIsLegal Whether authorization information has been set
    • -quitAllFuntionc Stop screen casting functionality
    • -startPlayWithVideo Start video playback
    • -pause Pause playback
    • -resume Resume playback
    • -stop Stop playback
  • PLVCastManagerDelegate, added a screen casting manager delegate protocol, with some delegate methods as follows. Refer to the demo for specific implementation.
    • -plvCastManager_findServices Device discovery callback
    • -plvCastManager_connectServicesResult Device connection callback
    • -plvCastManager_castError Screen casting error callback
    • -plvCastManager_playStatusChangedWithStatus Playback status callback
    • -plvCastManager_playTimeChangedWithCurrentTime Playback 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 vid was empty during setVideo.

[2.5.3] - 2018-12-17

New Features

  • PLVVodDownloadManager, supports multi-task download functionality, 1 to 3 tasks
    • @property (nonatomic, assign) NSUInteger maxRuningCount Set the maximum number of simultaneous download tasks, default is 1
  • PLVVodDownloadManager (Database), added download management categories, extended SDK database functionality
    • -createExtendTableWithClass Create extension table
    • -insertOrUpdateWithExtendInfo Insert or update a record
    • -getExtendInfoWithClass:condition Query records based on conditions
    • -getAllExtendInfoWithClass Query all records
    • -deleteExtendInfoWithClass:condition Delete a record based on conditions
    • -deleteAllExtendInfoWithClass Delete all records
  • PLVVodExtendVideoInfo, (Demo) Example of database extension table structure, refer to the demo for details
  • PLVVodDBManager, (Demo) Added PLVVodDBManager, a secondary encapsulation of SDK database operation APIs for easier application handling, refer to the demo for details
  • PLVVodPlayerViewController, 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:error Supports initialization method for top-displayed subtitles
  • PLVVodServiceUtil, (Demo) Added batch retrieval interface for video play counts
    • -requestPlayTimesWithVids Batch 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
    • -setURL Play/switch videos via URL
  • PLVVodPlayerUtil, added a player utility class, providing methods to retrieve playback progress and playback progress timestamps
    • -lastPositionWithVid Get the last playback progress by vid
    • -lastPositionTimestampWithVid Get 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
    • -getErrorMsgWithCode Return error prompts based on error codes
  • PLVVodServiceUtil, added a business utility class in the Demo, providing related extended API interfaces
    • -requestVideoListWithAccount Get video list information based on sub-account, video category ID, and other parameters

Adjustments and Optimizations

  • The title property of the PLVVodVideo model 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 PLVVodSkinPlayerController class 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 viewerId and viewerName, 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 ViewDidLoad function.

[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.
  • -startDownloadWithVid Start downloading the specified video
  • -stopDownloadWithVid Stop downloading the specified video
  • PLVVodDownloadManager, added functionality to retrieve cached video list information from the database. See the demo for usage.
  • -requstDownloadProcessingListWithCompletion Retrieve all video information from the database that is in the cache (preparing cache, caching, cache failed, etc.)
  • -requestDownloadCompleteList Retrieve 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 a videojson retrieval method. This method automatically updates and saves the videojson to the local database, and prioritizes returning local data.

  • -requestVideoPriorityCacheWithVid Add 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 -localVideos method to retrieve basic information about the cached video list from the local directory. Then, use the -requestDownloadCompleteList method 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 -localVideos method, 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;
    • -applicationWillEnterForeground Called when the App returns to the foreground, refer to the calling method in AppDelegate for details.
    • -applicationDidEnterBackground Called 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 PLVVodSkinPlayerController example 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 autoContinue in PLVVodPlayerViewController to the more accurate rememberLastPosition;

[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 PLVVodVideo interface;
  • Added the PLVVodVideo object description;
  • PLVVodAd implements the NSStringFromPLVVodAdType and NSStringFromPLVVodAdLocation functions;
  • 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;
  • PLVVodDownloadManager and enableBackgroundDownload default to YES on iOS 8 and above;
  • Optimized the PLVVodVideo judgment logic for -available;
  • Optimized the error callback when PLVVodDownloadManager fails to create a downloader;
  • Optimized the httpDNS logic;
  • Optimized code documentation comments;

Remove Content

  • PLVVodPlayerViewController Remove 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:.
联系客服,在线咨询