Surfmeter Player SDK (iOS) Changelog
This is the changelog for the Surfmeter Player SDK for iOS.
v1.9.0 (2026-11-03)
- Send a standardized SVTA2070 code, a fatal flag and the HTTP status with each player error, next to the raw code of the player
- Change in behavior: a fatal player error no longer ends the session at once. The session stays open for 30 seconds, so that it can continue after a retry with a new item for the same URL. If playback does not resume, it ends as aborted with the reason
playbackError. - Send entries of the error log of the player item as non-fatal errors
- Add the parameters
svtaCode,fatalandhttpStatustoonPlaybackError
v1.8.1 (2026-10-30)
- Fix video and audio bitrates being reported about 2.4% too low
- Fix the last segment of a session sometimes missing from the report, which made the reported play time too short
v1.8.0 (2026-10-30)
- Add the builder methods
setContentType(contentType:),setDeviceType(deviceType:)andsetDisplaySize(width:height:), which set the content type of the videos (for example,liveorfeature), and the device type (mobileorpc) and display size used to calculate the video quality score. The SDK logs a warning and ignores invalid values. - Change in behavior: the device type for the quality score is now detected from the device. iPhones and iPads use
mobile, all other devices (Apple TV, Mac) usepc. Previously, all devices usedmobile, so the quality score on Apple TVs can change. - Change in behavior: live streams are now sent with the content type
liveif the app does not set a content type. Previously, all videos were sent withunknown. - Send the type of hardware (iPhone, iPad, Apple TV or Mac), the device model and the screen resolution with each measurement
- Fix for a possible hang when the Analytics instance was released right after it was created
v1.7.1 (2026-10-30)
- A session that ends with a fatal player error now has the aborted reason
playbackError. The error message is still part of the error event, and is still passed toonError() - Fix for
onSendingData()not being called when the final report of a session was sent because the player item changed - Fix for resolution changes not being recorded when the player switched to another variant of the stream, which could report a session at its initial resolution
v1.7.0 (2026-10-29)
- Retry sending the final report of a session if it fails, up to five times with increasing delays between attempts
- Do not retry reports that the server rejected as invalid, or requests that were cancelled
v1.6.0 (2026-10-29)
- Send a final report exactly once when a session ends, also when playback reaches the end, when the player item is removed or changed, or when the Analytics instance is released
- End the session when the player fails with a fatal error, and report the error as an error event with its error code
- Send sessions that end before the video started playing, so that video start failures and exits before playback are counted
- Do not count stalls and pauses as play time
- Fix for the final report of the first session not being sent when switching to another player item
v1.5.1 (2026-10-29)
- Compress reports with gzip and reuse the HTTPS connection between reports, which reduces the data usage on mobile networks
- Fix for segments that could be missing from a report when the previous report was still being sent
v1.5.0 (2026-07-29)
- Breaking change: the video quality test is no longer part of this SDK. It is now a separate product, the Surfmeter Mobile Quality SDK
- Add error event tracking, with a new
onPlaybackError()method, and errors reported byAVPlayeritself picked up automatically - API documentation is now generated with DocC, and can be read in Xcode or in the browser
v1.4.1 (2025-09-10)
- Improve data sending resiliency
v1.4.0 (2025-09-10)
- Fix for invalid internal IDs being used, preventing final video data from being sent
- Improve resilience for data sending
- Add debug symbols to release builds
v1.3.8 (2025-08-18)
- Fix for possible crashes
v1.3.7 (2025-07-03)
- Fix for large duration chunks leading to too long total play time statistics
v1.3.6 (2025-06-23)
- Fix for possible crashes during fast video switching
v1.3.5 (2025-06-18)
- Fix for canceled network requests upon finishing Analytics instances
- Exclude too long, erroneously logged stalling events
v1.3.4 (2025-06-17)
- Fix for sending of shorter video session durations when exchanging Analytics instance
v1.3.3 (2025-05-21)
- Fix for "aborted reason" being sent even when measurement was properly finished
v1.3.2 (2025-04-08)
- Fix for possible crashes regarding chunks (
Fatal error: Cannot set end time of chunk without setting start time first)
v1.3.1 (2025-04-03)
- Release without changes to fix SHA checksums of
Package.swift
v1.3.0 (2025-03-25)
- Add support for disabling logs altogether
- Breaking change: SurfmeterAnalyticsListener interface changed
v1.2.1 (2025-03-25)
- Fix for parsing
zavcvideo codec
v1.2.0 (2024-12-09)
- Add audio-only support
- Backoff for sending data in the background
- Send client context attributes
v1.1.2 (2024-09-03)
- Add support for tvOS simulator
v1.1.1 (2024-08-28)
- Build for lower iOS versions
v1.1.0 (2024-08-26)
- Add support for tvOS
v1.0.6 (2024-07-09)
- Sending final data on library finish
v1.0.5 (2024-07-09)
- Clean up references to handle memory leaks
v1.0.4 (2024-07-01)
- Sending of client context attributes
v1.0.3 (2024-06-28)
- Allow setting aborted reason
v1.0.2 (2024-06-26)
- Handle analysis state already ended
- Fix issue of detecting new tracks
v1.0.1 (2024-06-26)
- Issue with not sending new segments
v1.0.0 (2023-11-27)
- Initial release