Standard SRG SSR analytics
Pre-release
Pre-release
This Pillarbox release implements standard SRG SSR streaming analytics. It also provides the necessary toolset to measure page views and events in SRG SSR applications.
This release also adds support for playback speed controls and makes it possible to promote a single instance for system integration in the context of multi-instance player experiences.
Analytics must still be validated but otherwise Pillarbox can be considered suitable for production.
Standard SRG SSR analytics
Standard SRG SSR analytics (comScore / Mediapulse and Commanders Act / Mapp) have been added:
- Introduce
Analytics
singleton to manage analytics setup as well as page view and event tracking. - Implement standard
ComScoreTracker
andCommandersAct
stream trackers. These trackers are automatically associated with URN-based items played usingCoreBusiness
but can also be integrated with other data sources if needed. - Provide helpers for user interface tracking:
PageViewTracking
makes it possible to associate page view analytics metadata with view controllers in UIKit contexts.PageViewContainerTracking
can be used to integrate custom view controllers with the page view analytics engine. Integration with standard UIKit containers (UINavigationController
,UITabBarController
, etc.) is provided.- Modifiers for declarative view tracking in SwiftUI contexts.
- Provide helpers for event tracking.
Playback speed
Playback speed support has been added to the Player
. Applications are responsible of displaying associated controls however they like:
- Add APIs to set a desired playback speed, retrieve the available speed range and the currently effective playback speed.
- Implement support for livestreams, including dynamic speed adjustments for DVR.
- Support playback speed in playlists.
Multi-instance support
- Several instances have always been supported by Pillarbox but this release adds APIs to promote one instance for integration into the Control Center and with AirPlay.
Miscellaneous improvements
- A
BufferTracker
has been introduced to to be notified about content buffering, in a way similar toProgressTracker
. - The
LayoutReader
view has been replaced by aView.readLayout(into:)
modifier which is more convenient to use. - The
InteractionView
detecting any kind of user interaction has been removed. Use a combination of gesture recognizers to detect user interaction and report them to aVisibilityTracker
instead. - Improve seek smoothness to match the native system user experience.
- Add muted playback support.
- Provide presentation size information, which can be used to determine the content aspect ratio and adjust the player layout accordingly.
- Add overlay support to
SystemVideoView
. - Ensure proper support for Xcode 15 and iOS / iPadOS / tvOS 17 beta.
- Automatically enable body counters display in Xcode previews.
Demo improvements and fixes
- Improve slider appearance and behavior.
- Add ability to play YouTube content for tests purposes.
- Add playback speed support.
- Add full-screen support to the playlist demo.
- Add blurred layout example.
- Add demo descriptions.
- Add more sample streams.
- Automatically resume playback when returning from background in selected demos.
- Fix server selection.
Fixes
- Rename
Environment
asServer
to avoid frequent conflicts with SwiftUIEnvironment
. - Support for iPad applications run on Silicon Macs has been restored.
What's Changed
- Rename a
LayoutInfo
property by @waliid in #334 - Setup tracking by @defagos in #335
- Provide library version in analytics by @waliid in #338
- Add full screen support to the demo player by @defagos in #341
- Provide presentation size information by @defagos in #340
- Add blurred layout example by @defagos in #342
- Support page view and event tracking by @waliid in #343
- Implement streaming analytics testing tools by @waliid in #345
- Improve Circumspect file structure by @defagos in #346
- Update to Xcode 14.3 by @defagos in #347
- Update Nimble to version 12 by @defagos in #348
- Implement comScore stream tracking by @defagos in #352
- Implement Commanders Act stream tracking by @waliid in #354
- typo by @mbruegmann in #357
- Add automatic page view tracking support by @defagos in #358
- Fix failing local test data generation by @defagos in #361
- Avoid ghost views by @defagos in #359
- Support iPad applications run on Silicon Macs by @defagos in #364
- Fix incorrectly inhibited taps on tracked views by @defagos in #366
- Add muted playback support by @defagos in #363
- Update Swiftlint to version 0.52.0 by @defagos in #365
- Remove debugging helpers in release builds by @defagos in #370
- Fix incorrect volume button position in safe area by @defagos in #371
- Enable body counter debugging in Xcode previews by @defagos in #374
- Avoid conflicts with SwiftUI environment attribute by @defagos in #377
- Add playback speed support by @defagos in #394
- Fix compilation with Xcode 15 by @defagos in #396
- Update analytics based on the current playback speed by @defagos in #395
- Split player implementation over several files by @defagos in #397
- Fix metadata display and remote commands on the Control Center by @waliid in #398
- Support multiple player instances by @waliid in #399
- Add Apple reference to known issues by @waliid in #402
- Add ability to disable AirPlay and Control Center integration by @defagos in #400
- Fix server selection by @defagos in #407
- Automatically resume playback when returning from background in specific demos by @defagos in #405
- Add the PresentationSize issue with AirPlay among the list of known issues by @waliid in #406
- Add a new
animation
method that take two values by @waliid in #408 - Add showcase demo descriptions by @defagos in #404
- Polish documentation by @defagos in #403
- Fix broken documentation links by @defagos in #409
- Fix analytics by @waliid in #414
- Apply the speed even though the player is paused by @waliid in #415
- Fix duplicate page views by @defagos in #416
- Drive demo navigation with iOS 16 navigation API by @defagos in #421
- Avoid measuring video streaming in background by @waliid in #425
- Align analytics demo configuration with Android by @defagos in #426
- Adjust page view analytics according to Mediapulse specifications by @waliid in #427
- Automatically link against AdSupport.framework by @defagos in #428
- Add system video view overlay support by @defagos in #430
- Fix conflict with standard Commanders Act event by @defagos in #432
- Remove sentinel by @waliid in #433
- Add some Bitmovin streams by @waliid in #434
- Make the project compile again with Xcode 14 by @defagos in #436
- Remove media bandwidth from CommandersAct analytics by @waliid in #449
- Remove playback rate from Commanders Act analytics by @waliid in #450
- Rename site by appSiteName for the analytics configuration by @waliid in #452
- Add sample streams by @defagos in #437
- Add loaded time ranges by @waliid in #439
- Fix slider label contrast issues by @defagos in #454
- Fix some flaky tests by @waliid in #455
- Document route picker view known issue by @defagos in #460
- Fix animation issues in custom player user interfaces by @defagos in #459
- Update readme showcase by @defagos in #461
- Provide analytics data per service by @defagos in #462
- Add a pulse animation on the slider by @waliid in #463
- Rename page view properties from title to name by @waliid in #465
- Improve seek user experience by @defagos in #466
- Fix tests running unnecessarily for 20 seconds by @defagos in #471
- Update dependencies, including Google Cast SDK 4.8.0 by @defagos in #469
- Separate buffer tracking from progress tracking by @defagos in #467
- Fix control centering by @defagos in #474
- Fix uptime implementation by @defagos in #472
- Support some YouTube streams by @waliid in #475
- Further improve seek user experience by @defagos in #476
- Fix YouTube identifier parsing by @defagos in #477
New Contributors
- @mbruegmann made their first contribution in #357
Full Changelog: 0.4.0...0.5.0