From 2a8a0e86c3e92eb93b4906f7ce4fda1ae4cbff5e Mon Sep 17 00:00:00 2001 From: Raffi Date: Mon, 30 Mar 2026 15:13:44 +0200 Subject: [PATCH 1/2] adopt v11 changes to conviva --- .../Source/Base/Events/ConvivaHandlers/AdHandler.swift | 2 +- .../Source/Base/Events/Observers/AdEventForwarder.swift | 4 ++-- .../Source/Base/Events/Observers/AppEventForwarder.swift | 4 ---- .../Source/Base/Events/Observers/PlayerEventForwarder.swift | 4 ++-- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Code/Conviva/Source/Base/Events/ConvivaHandlers/AdHandler.swift b/Code/Conviva/Source/Base/Events/ConvivaHandlers/AdHandler.swift index 7b82d2d1..e43f00f9 100644 --- a/Code/Conviva/Source/Base/Events/ConvivaHandlers/AdHandler.swift +++ b/Code/Conviva/Source/Base/Events/ConvivaHandlers/AdHandler.swift @@ -223,7 +223,7 @@ extension Ad { result["c3.ad.firstCreativeId"] = nonEmpty(googleImaAd?.wrapperCreativeIds.first) ?? nonEmpty(googleImaAd?.creativeId) ?? Utilities.defaultStringValue result["c3.ad.firstAdSystem"] = nonEmpty(googleImaAd?.wrapperAdSystems.first) ?? nonEmpty(googleImaAd?.adSystem) ?? Utilities.defaultStringValue result["c3.ad.adStitcher"] = Utilities.defaultStringValue - result["c3.ad.position"] = self.adBreak.calculateCurrentAdBreakPosition() + result["c3.ad.position"] = self.adBreak?.calculateCurrentAdBreakPosition() ?? Utilities.defaultStringValue // linearAd specific if self.type == THEOplayerSDK.AdType.linear, let duration = self.duration { result[CIS_SSDK_METADATA_IS_LIVE] = false diff --git a/Code/Conviva/Source/Base/Events/Observers/AdEventForwarder.swift b/Code/Conviva/Source/Base/Events/Observers/AdEventForwarder.swift index 77974e84..06452424 100644 --- a/Code/Conviva/Source/Base/Events/Observers/AdEventForwarder.swift +++ b/Code/Conviva/Source/Base/Events/Observers/AdEventForwarder.swift @@ -27,8 +27,8 @@ struct AdEventForwarder { player.addRemovableEventListener(type: PlayerEventTypes.PLAYING, listener: filter.conditionalSender(handler.adPlaying)), player.addRemovableEventListener(type: PlayerEventTypes.TIME_UPDATE) { filter.conditionalSender(handler.adTimeUpdate)($0.currentTimeInMilliseconds) - filter.conditionalSender(handler.adRenderedFramerateUpdate)(NSNumber(value: Int(player.playerMetrics.renderedFramerate.rounded()))) - filter.conditionalSender(handler.adDroppedFramesUpdate)(NSNumber(value: player.playerMetrics.droppedVideoFrames)) + filter.conditionalSender(handler.adRenderedFramerateUpdate)(NSNumber(value: Int(player.metrics.renderedFramerate.rounded()))) + filter.conditionalSender(handler.adDroppedFramesUpdate)(NSNumber(value: player.metrics.droppedVideoFrames)) }, player.addRemovableEventListener(type: PlayerEventTypes.PAUSE, listener: filter.conditionalSender(handler.adPause)) ] diff --git a/Code/Conviva/Source/Base/Events/Observers/AppEventForwarder.swift b/Code/Conviva/Source/Base/Events/Observers/AppEventForwarder.swift index 197bc0d0..6acdd199 100644 --- a/Code/Conviva/Source/Base/Events/Observers/AppEventForwarder.swift +++ b/Code/Conviva/Source/Base/Events/Observers/AppEventForwarder.swift @@ -9,10 +9,6 @@ import THEOplayerConnectorUtilities fileprivate let willEnterForeground = UIApplication.willEnterForegroundNotification fileprivate let didEnterBackground = UIApplication.didEnterBackgroundNotification -// Xcode 15 (Swift 5.9) introduces (and only fires notification with) `AVPlayerItem.newAccessLogEntryNotification`, and deprecates `Notification.Name.AVPlayerItemNewAccessLogEntry` (doesn't fire notification anymore) -// Older Xcode and Swift versions only fire notification with `Notification.Name.AVPlayerItemNewAccessLogEntry` -// Both `AVPlayerItem.newAccessLogEntryNotification` and `Notification.Name.AVPlayerItemNewAccessLogEntry` are mapped to `Notification.Name("AVPlayerItemNewAccessLogEntry")`, hence we use that. -// Once we drop support for older versions (below Xcode 15 and Swift 5.9) we can switch from `Notification.Name("AVPlayerItemNewAccessLogEntry")` to `AVPlayerItem.newAccessLogEntryNotification`. class AppEventForwarder { private let center = NotificationCenter.default diff --git a/Code/Conviva/Source/Base/Events/Observers/PlayerEventForwarder.swift b/Code/Conviva/Source/Base/Events/Observers/PlayerEventForwarder.swift index 31cf64ba..f0a82a6e 100644 --- a/Code/Conviva/Source/Base/Events/Observers/PlayerEventForwarder.swift +++ b/Code/Conviva/Source/Base/Events/Observers/PlayerEventForwarder.swift @@ -45,8 +45,8 @@ class PlayerEventForwarder { player.addRemovableEventListener(type: PlayerEventTypes.TIME_UPDATE) { handler.timeUpdate( currentTimeInMilliseconds: $0.currentTimeInMilliseconds, - renderedFramerate: NSNumber(value: Int(player.playerMetrics.renderedFramerate.rounded())), - droppedFrames: NSNumber(value: player.playerMetrics.droppedVideoFrames) + renderedFramerate: NSNumber(value: Int(player.metrics.renderedFramerate.rounded())), + droppedFrames: NSNumber(value: player.metrics.droppedVideoFrames) ) }, player.addRemovableEventListener(type: PlayerEventTypes.SOURCE_CHANGE) { From 695dc6b0549195182bcf514a8a388c6474cded73 Mon Sep 17 00:00:00 2001 From: Raffi Date: Mon, 30 Mar 2026 15:25:13 +0200 Subject: [PATCH 2/2] adopt v11 changes to nielsen --- .../Nielsen/Source/Events/NielsenReporter/AdEventReporter.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Nielsen/Source/Events/NielsenReporter/AdEventReporter.swift b/Code/Nielsen/Source/Events/NielsenReporter/AdEventReporter.swift index fa56f811..b66af877 100644 --- a/Code/Nielsen/Source/Events/NielsenReporter/AdEventReporter.swift +++ b/Code/Nielsen/Source/Events/NielsenReporter/AdEventReporter.swift @@ -25,7 +25,7 @@ public class AdEventReporter: AdEventProcessor { nielsen.stop() nielsen.loadMetadata( [ - "type": ad.adBreak.nielsenType, + "type": ad.adBreak?.nielsenType, "assetid": ad.id ] )