diff --git a/CHANGELOG.md b/CHANGELOG.md index 20076b80..279a20eb 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 and GoogleDAIConfiguration. ## [10.2.0] - 2025-10-09 diff --git a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift index 743cfdc3..182c0cd1 100644 --- a/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift +++ b/Code/Conviva/Source/Base/Events/ConvivaHandlers/PlayerHandler.swift @@ -236,18 +236,35 @@ 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 } - 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) } + private func collectAdDescriptionMetadata(from sourceDescription: SourceDescription) -> [String: Any] { + var metadata: [String: Any] = [:] + 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, + let streamActivityMonitorId = daiConfiguration.streamActivityMonitorID { + metadata["streamActivityMonitorId"] = streamActivityMonitorId + return metadata + } + return metadata + } + func durationChange(event: DurationChangeEvent) { log("handling durationChange") var metadata: [String: Any] = [:]