From ebde759f091ae3ce6e3e979ef83dc5d74e74e25c Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Tue, 4 Nov 2025 18:18:06 +0100 Subject: [PATCH 1/7] Optimise bindings. --- .../Source/Base/Events/ConvivaHandlers/PlayerHandler.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift index 743cfdc3..bf4651da 100644 --- a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift +++ b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift @@ -236,7 +236,7 @@ class PlayerHandler { func updateMetadata() { log("handling updateMetadata") guard let convivaSessionSource = self.currentConvivaSession.source, - let url = self.currentConvivaSession.source?.url as? String else { + let url = convivaSessionSource.url else { return } From fcd6d3ad25466bd396d226d4d9fd99d9c1f30584 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Tue, 4 Nov 2025 18:18:41 +0100 Subject: [PATCH 2/7] Add func to extract THEOAdDescription metadata --- .../Base/Events/ConvivaHandlers/PlayerHandler.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift index bf4651da..b1e37d5b 100644 --- a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift +++ b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift @@ -248,6 +248,15 @@ class PlayerHandler { self.setContentInfo(metadata) } + private func collectAdDescriptionMetadata(from sourceDescription: SourceDescription) -> [String: Any] { + var metadata: [String: Any] = [:] + if let theoAdDescription = sourceDescription.ads?.first as? THEOAdDescription, + let streamActivityMonitorId = theoAdDescription.streamActivityMonitorId { + metadata["streamActivityMonitorId"] = streamActivityMonitorId + } + return metadata + } + func durationChange(event: DurationChangeEvent) { log("handling durationChange") var metadata: [String: Any] = [:] From 36e14147eaec14c742e0f5b2618d652d0d089678 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Tue, 4 Nov 2025 18:19:18 +0100 Subject: [PATCH 3/7] Collect adDescription metadata and merge with player metadata --- .../Source/Base/Events/ConvivaHandlers/PlayerHandler.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift index b1e37d5b..c7e9a476 100644 --- a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift +++ b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift @@ -240,11 +240,15 @@ class PlayerHandler { return } - let metadata: [String: Any] = [ + var metadata: [String: Any] = [ CIS_SSDK_METADATA_PLAYER_NAME: self.storage?.metadataEntryForKey(CIS_SSDK_METADATA_PLAYER_NAME) ?? Utilities.playerName, CIS_SSDK_METADATA_STREAM_URL: url, CIS_SSDK_METADATA_ASSET_NAME: convivaSessionSource.description.metadata?.title ?? Utilities.defaultStringValue, ] + + let adDescriptionMetadata: [String: Any] = collectAdDescriptionMetadata(from: convivaSessionSource.description) + metadata.merge(adDescriptionMetadata) { (_, new) in new } + self.setContentInfo(metadata) } From b714bfe6a2f7ab501bbe5928580f2e49ca6a8b3b Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Tue, 4 Nov 2025 18:20:23 +0100 Subject: [PATCH 4/7] Add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20076b80..d3d2b046 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Conviva - Report average bitrate from activeQualityChange event. + - Report streamActivityMonitorId from theoads AdDescription ## [10.2.0] - 2025-10-09 From ab31dd837d3ce757374f06e176abf7cb77689cb1 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Wed, 5 Nov 2025 17:12:30 +0100 Subject: [PATCH 5/7] Also parse streamActivityMonitorId from GoogleDAIConfiguration --- .../Source/Base/Events/ConvivaHandlers/PlayerHandler.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift index c7e9a476..8bfb4758 100644 --- a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift +++ b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift @@ -257,6 +257,10 @@ class PlayerHandler { if let theoAdDescription = sourceDescription.ads?.first as? THEOAdDescription, let streamActivityMonitorId = theoAdDescription.streamActivityMonitorId { metadata["streamActivityMonitorId"] = streamActivityMonitorId + } else if let daiConfiguration = sourceDescription.sources.first?.ssai as? GoogleDAIConfiguration, + let streamActivityMonitorId = daiConfiguration.streamActivityMonitorID { + metadata["streamActivityMonitorId"] = streamActivityMonitorId + return metadata } return metadata } From 430cc7fe0a307717eb6bbcfd220af9ea454154f1 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Wed, 5 Nov 2025 17:13:34 +0100 Subject: [PATCH 6/7] Update changelog entry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3d2b046..279a20eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Conviva - Report average bitrate from activeQualityChange event. - - Report streamActivityMonitorId from theoads AdDescription + - Report streamActivityMonitorId from theoads AdDescription and GoogleDAIConfiguration. ## [10.2.0] - 2025-10-09 From e1b64c7c1563ac30448954cdff8efe327ffd0c79 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Fri, 14 Nov 2025 14:08:03 +0100 Subject: [PATCH 7/7] Take into account possible additional ads in the ads array --- .../Source/Base/Events/ConvivaHandlers/PlayerHandler.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift index 8bfb4758..182c0cd1 100644 --- a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift +++ b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift @@ -254,7 +254,7 @@ class PlayerHandler { private func collectAdDescriptionMetadata(from sourceDescription: SourceDescription) -> [String: Any] { var metadata: [String: Any] = [:] - if let theoAdDescription = sourceDescription.ads?.first as? THEOAdDescription, + if let theoAdDescription = sourceDescription.ads?.first(where: { $0 is THEOAdDescription }) as? THEOAdDescription, let streamActivityMonitorId = theoAdDescription.streamActivityMonitorId { metadata["streamActivityMonitorId"] = streamActivityMonitorId } else if let daiConfiguration = sourceDescription.sources.first?.ssai as? GoogleDAIConfiguration,