Skip to content

Custom tracking support

Pre-release
Pre-release
Compare
Choose a tag to compare
@defagos defagos released this 04 Apr 05:17
· 438 commits to main since this release
fbebd11

This Pillarbox alpha release adds custom tracking implementation. It also introduces several tools making player user interface implementation richer and fixes end of playback behavior. This pre-release is not complete yet but can be used for early adoption in app prototypes.

Custom tracking support

  • Custom stream trackers can be implemented using the PlayerItemTracker protocol. Trackers can be used for all sorts of purposes, from analytics data collection to saving the current playback position into a history.
  • Player items can be associated with a list of trackers through dedicated adapters, matching the output of their asset publisher to the input required by a tracker.
  • Trackers associated with a player can be enabled or disabled on-the-fly at any time.

Note that official SRG trackers have not been implemented and are expected for the next release.

End of playback behavior

Behavior at the end of playback has been made consistent:

  • Control center information is correctly cleared when the current playlist has been exhausted.
  • Correct end of playback detection is possible, making it possible to provide a dedicated user interface (e.g. a restart button).
  • A restart API is provided by Player to make it easier to implement end of playback experiences.

User interface implementation

  • An InteractionView view has been added to detect user interaction in a specific area. This can be for example useful to ensure a custom user interface remains visible while the user is still interacting with it.
  • A LayoutReader view has been added to detect whether some area is covering the full screen or the current context. This view can be used to implement behaviors depending on user interface screen coverage.

Miscellaneous improvements

  • Seeking to the default position has been improved for DVR livestreams.
  • Add preventsDisplaySleepDuringVideoPlayback to the player configuration to make it possible to control whether device is allowed to sleep during playback.
  • The type of the media currently being played is now provided by the Player.
  • Make interactive seeks snappier.

Demo improvements

  • A Lists tab has been added, with which almost all Play SRG content can be browsed.
  • An environment selector is available from the Lists tab.
  • A Search tab has been added, with which content can be searched across all business units.
  • The user interface can be toggled with a tap gesture.
  • Video can be zoomed in with a pinch gesture.
  • DRM and token-protected examples are updated automatically with recent content.
  • URNs and URLs can be directly played from the Examples tab.
  • The player displays an audio icon when audio content is played.
  • The player user interface cannot be toggled while using AirPlay or playing audio.
  • Add player layout selection to the demo settings (remark: The system player currently leaks resources).

Fixes

  • Fix incorrect type briefly reported for on-demand audio content.

What's Changed

  • Display version information in the demo settings by @waliid in #276
  • Fix test instabilities with ephemeral sessions by @defagos in #279
  • Load IL media lists in demo by @waliid in #282
  • Fix Fastlane xcversion warning by @defagos in #283
  • Load DRM and token protected examples dynamically by @waliid in #284
  • Add a basic search to the demo by @waliid in #285
  • Direct url and urn entry in the demo by @waliid in #286
  • Improve demo application by @defagos in #287
  • Add some icons for the list sections by @waliid in #291
  • Improve seek to default behavior for DVR streams by @defagos in #293
  • Add server selection to demo by @waliid in #294
  • Manage user interface visibility support by @defagos in #295
  • Add pinch to zoom support to the demo player by @defagos in #302
  • Fix briefly incorrect stream type for AOD content by @defagos in #303
  • Improve view wrappers by @defagos in #307
  • Make behavior consistent at the end of a playback by @waliid in #309
  • Add parameter to control device sleep during video playback by @defagos in #313
  • Keep the controls displayed when AirPlay is enabled by @waliid in #314
  • Inhibit layout info updates during rotation by @defagos in #316
  • Add player layout selection setting to the iOS demo by @defagos in #319
  • Extract media type by @waliid in #321
  • Add make command to update SPM dependencies by @waliid in #322
  • Make interactive seeks snappier by @defagos in #320
  • Add custom tracker support by @defagos in #325
  • Improve project structure by @defagos in #326
  • Deliver the tracker metadata from a publisher by @waliid in #328
  • Flag for tracking activation/deactivation by @waliid in #329
  • Update swiftlint to version 0.51.0 by @defagos in #330
  • Add a way to use an adapter without any configuration or any mapper by @waliid in #331

Full Changelog: 0.3.0...0.4.0