Skip to main content

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, fatal and httpStatus to onPlaybackError

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:) and setDisplaySize(width:height:), which set the content type of the videos (for example, live or feature), and the device type (mobile or pc) 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) use pc. Previously, all devices used mobile, so the quality score on Apple TVs can change.
  • Change in behavior: live streams are now sent with the content type live if the app does not set a content type. Previously, all videos were sent with unknown.
  • 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 to onError()
  • 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 by AVPlayer itself 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 zavc video 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