From f3c3bb08f93049a762489e55ed92dbe75ecfd99b Mon Sep 17 00:00:00 2001 From: mavinash Date: Thu, 21 May 2026 22:58:10 +0530 Subject: [PATCH 1/3] docs: fix CocoaPods install name in README [skip ci] The README listed `pod 'NewRelicVideoCore'`, but the published pod is `NewRelicVideoAgent` (NewRelicVideoCore is only the internal module_name for backward-compat on the framework import). INSTALLATION.md is already correct; this aligns the README with it. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e87c64d..5ec9b802 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Download the latest pre-built XCFrameworks from the [Releases](https://github.co Add the dependencies to your `Podfile`: ```ruby -pod 'NewRelicVideoCore' +pod 'NewRelicVideoAgent' pod 'NRAVPlayerTracker' pod 'NRIMATracker' # Optional — only if using Google IMA ads ``` From f2506d599ff6b7e2c42c9dc937ebbf285962e9ca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Jun 2026 05:52:32 +0000 Subject: [PATCH 2/3] chore(release): update version to 4.1.4 --- CHANGELOG.md | 10 ++++++++++ NRAVPlayerTracker.podspec | 2 +- .../NRAVPlayerTracker/Tracker/NRTrackerAVPlayer.m | 2 +- NRIMATracker.podspec | 2 +- NRIMATracker/NRIMATracker/Tracker/NRTrackerIMA.m | 2 +- NewRelicVideoAgent.podspec | 2 +- .../NewRelicVideoCore/Auth/NRVATokenManager.m | 2 +- .../NewRelicVideoCore/Device/NRVADeviceInformation.m | 6 +++--- .../Harvest/NRVAOptimizedHttpClient.m | 2 +- NewRelicVideoCore/NewRelicVideoCore/NRVideoDefs.h | 2 +- 10 files changed, 21 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 695599f6..fcf3b4e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +## [4.1.4](https://github.com/newrelic/video-agent-iOS/compare/v4.1.3...v4.1.4) (2026-06-05) + +### Bug Fixes + +* expose sendSeekStart/sendSeekEnd on NRVAVideo; auto-detect seek in AVPlayerTracker ([34493b4](https://github.com/newrelic/video-agent-iOS/commit/34493b4999968ff4e726c3f3ba3d266ff6d3f4e2)) +* NRTrackerPair must not leak NSNull sentinel to callers ([82ef94f](https://github.com/newrelic/video-agent-iOS/commit/82ef94fcbd4f432dedf2dabbc523a19fe8134d34)) +* partial container sanitization, nil guard, and dead code removal ([6aac79f](https://github.com/newrelic/video-agent-iOS/commit/6aac79f7ef52d648a4f3c0636ed97d5b01edc314)) +* read totalPreRollAdTime from CONTENT_START attributes ([d565378](https://github.com/newrelic/video-agent-iOS/commit/d565378286af59e2d7109566bc0081ea31872246)) +* sanitize attribute values at setAttribute storage boundary ([7d07298](https://github.com/newrelic/video-agent-iOS/commit/7d072980d1e6b4a85339c864ea8245194a38f688)) + ## [4.1.3](https://github.com/newrelic/video-agent-iOS/compare/v4.1.2...v4.1.3) (2026-05-20) ### Bug Fixes diff --git a/NRAVPlayerTracker.podspec b/NRAVPlayerTracker.podspec index 2a251568..f145b58b 100644 --- a/NRAVPlayerTracker.podspec +++ b/NRAVPlayerTracker.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'NRAVPlayerTracker' - s.version = '4.1.3' + s.version = '4.1.4' s.summary = 'New Relic Video Agent, AVPlayer Tracker.' # This description is used to generate tags and improve search results. diff --git a/NRAVPlayerTracker/NRAVPlayerTracker/Tracker/NRTrackerAVPlayer.m b/NRAVPlayerTracker/NRAVPlayerTracker/Tracker/NRTrackerAVPlayer.m index a59f844f..34490ed7 100644 --- a/NRAVPlayerTracker/NRAVPlayerTracker/Tracker/NRTrackerAVPlayer.m +++ b/NRAVPlayerTracker/NRAVPlayerTracker/Tracker/NRTrackerAVPlayer.m @@ -406,7 +406,7 @@ - (NSString *)getTrackerSrc { - (NSString *)getTrackerVersion { - return @"4.1.3"; + return @"4.1.4"; } - (NSString *)getPlayerVersion { diff --git a/NRIMATracker.podspec b/NRIMATracker.podspec index 6c82b256..50b0ad5c 100644 --- a/NRIMATracker.podspec +++ b/NRIMATracker.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'NRIMATracker' - s.version = '4.1.3' + s.version = '4.1.4' s.summary = 'New Relic Video Agent, Google IMA Ads Tracker.' # This description is used to generate tags and improve search results. diff --git a/NRIMATracker/NRIMATracker/Tracker/NRTrackerIMA.m b/NRIMATracker/NRIMATracker/Tracker/NRTrackerIMA.m index d52ad6a9..c69fd666 100644 --- a/NRIMATracker/NRIMATracker/Tracker/NRTrackerIMA.m +++ b/NRIMATracker/NRIMATracker/Tracker/NRTrackerIMA.m @@ -104,7 +104,7 @@ - (NSString *)getTrackerSrc { } - (NSString *)getTrackerVersion { - return @"4.1.3"; + return @"4.1.4"; } - (NSNumber *)getPlayhead { diff --git a/NewRelicVideoAgent.podspec b/NewRelicVideoAgent.podspec index 2c8bbd5b..4eedbcd8 100644 --- a/NewRelicVideoAgent.podspec +++ b/NewRelicVideoAgent.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = 'NewRelicVideoAgent' - s.version = '4.1.3' + s.version = '4.1.4' s.summary = 'New Relic Video Agent for iOS' # This description is used to generate tags and improve search results. diff --git a/NewRelicVideoCore/NewRelicVideoCore/Auth/NRVATokenManager.m b/NewRelicVideoCore/NewRelicVideoCore/Auth/NRVATokenManager.m index a9fe95fc..ffe017ee 100644 --- a/NewRelicVideoCore/NewRelicVideoCore/Auth/NRVATokenManager.m +++ b/NewRelicVideoCore/NewRelicVideoCore/Auth/NRVATokenManager.m @@ -277,7 +277,7 @@ - (NSArray *)buildTokenRequestPayload { NSString *osVersion = [[UIDevice currentDevice] systemVersion]; NSString *architecture = [self getArchitecture]; NSString *agentName = @"NewRelic-VideoAgent-iOS"; - NSString *agentVersion = @"4.1.3"; + NSString *agentVersion = @"4.1.4"; NSString *deviceId = [NRVAUtils generateSessionId]; // Use session ID as device identifier NSString *manufacturer = @"Apple"; diff --git a/NewRelicVideoCore/NewRelicVideoCore/Device/NRVADeviceInformation.m b/NewRelicVideoCore/NewRelicVideoCore/Device/NRVADeviceInformation.m index 787c063b..d34bf964 100644 --- a/NewRelicVideoCore/NewRelicVideoCore/Device/NRVADeviceInformation.m +++ b/NewRelicVideoCore/NewRelicVideoCore/Device/NRVADeviceInformation.m @@ -65,7 +65,7 @@ - (void)initializeDeviceInformation { self.osBuild = [self getOSBuildVersion]; self.model = [[UIDevice currentDevice] model]; self.agentName = @"NewRelic-VideoAgent-iOS"; - self.agentVersion = @"4.1.3"; // Should be pulled from build configuration + self.agentVersion = @"4.1.4"; // Should be pulled from build configuration self.manufacturer = @"Apple"; self.deviceId = [self generatePersistentDeviceId]; self.architecture = [self getSystemArchitecture]; @@ -93,7 +93,7 @@ - (void)setDefaultValues { self.osBuild = @"Unknown"; self.model = @"Unknown"; self.agentName = @"NewRelic-VideoAgent-iOS"; - self.agentVersion = @"4.1.3"; + self.agentVersion = @"4.1.4"; self.manufacturer = @"Apple"; self.deviceId = [[NSUUID UUID] UUIDString]; self.architecture = @"unknown"; @@ -101,7 +101,7 @@ - (void)setDefaultValues { self.size = @""; // Empty string for now self.applicationFramework = @"Native iOS"; self.applicationFrameworkVersion = @"Unknown"; - self.userAgent = @"NewRelic-VideoAgent-iOS/4.1.3"; + self.userAgent = @"NewRelic-VideoAgent-iOS/4.1.4"; self.isTV = NO; self.isLowMemoryDevice = NO; } diff --git a/NewRelicVideoCore/NewRelicVideoCore/Harvest/NRVAOptimizedHttpClient.m b/NewRelicVideoCore/NewRelicVideoCore/Harvest/NRVAOptimizedHttpClient.m index 4119e157..b50b79e2 100644 --- a/NewRelicVideoCore/NewRelicVideoCore/Harvest/NRVAOptimizedHttpClient.m +++ b/NewRelicVideoCore/NewRelicVideoCore/Harvest/NRVAOptimizedHttpClient.m @@ -218,7 +218,7 @@ - (NSArray *)buildCompletePayload:(NSArray *)appToken events:(NSArra NSString *osVersion = [[UIDevice currentDevice] systemVersion]; NSString *architecture = [self getArchitecture]; NSString *agentName = @"NewRelic-VideoAgent-iOS"; - NSString *agentVersion = @"4.1.3"; + NSString *agentVersion = @"4.1.4"; NSString *deviceId = [NRVAUtils generateSessionId]; NSString *manufacturer = @"Apple"; diff --git a/NewRelicVideoCore/NewRelicVideoCore/NRVideoDefs.h b/NewRelicVideoCore/NewRelicVideoCore/NRVideoDefs.h index 995876df..640128be 100644 --- a/NewRelicVideoCore/NewRelicVideoCore/NRVideoDefs.h +++ b/NewRelicVideoCore/NewRelicVideoCore/NRVideoDefs.h @@ -8,7 +8,7 @@ #ifndef NRVideoDefs_h #define NRVideoDefs_h -#define NRVIDEO_CORE_VERSION @"4.1.3" +#define NRVIDEO_CORE_VERSION @"4.1.4" #define NR_VIDEO_EVENT @"VideoAction" #define NR_VIDEO_AD_EVENT @"VideoAdAction" From c7c10146676d6899e79bb1a6c165ed4844be0154 Mon Sep 17 00:00:00 2001 From: Aravind Metku Date: Tue, 9 Jun 2026 12:16:40 +0530 Subject: [PATCH 3/3] feat: enable QoE by default with interval multiplier 2 --- NewRelicVideoCore/NewRelicVideoCore/NRVAVideoConfiguration.m | 4 ++-- README.md | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/NewRelicVideoCore/NewRelicVideoCore/NRVAVideoConfiguration.m b/NewRelicVideoCore/NewRelicVideoCore/NRVAVideoConfiguration.m index 51c85321..7b5d960f 100644 --- a/NewRelicVideoCore/NewRelicVideoCore/NRVAVideoConfiguration.m +++ b/NewRelicVideoCore/NewRelicVideoCore/NRVAVideoConfiguration.m @@ -203,8 +203,8 @@ - (instancetype)init { _debugLoggingEnabled = NO; _collectorAddress = nil; // Will use default based on region - _qoeAggregateEnabled = NO; - _qoeAggregateIntervalMultiplier = 1; + _qoeAggregateEnabled = YES; + _qoeAggregateIntervalMultiplier = 2; _obfuscationRules = nil; } return self; diff --git a/README.md b/README.md index b0ce81e3..63930184 100644 --- a/README.md +++ b/README.md @@ -319,7 +319,8 @@ if shouldEnable { | `withApplicationToken(_:)` | `String` | — | **Required.** Your New Relic application token. | | `withHarvestCycle(_:)` | `Int` | 300 (Mobile) / 180 (TV) | Interval in seconds between data harvests. | | `withDebugLogging(_:)` | `Bool` | `false` | Enable debug logging for development. | -| `withQoeAggregate(_:)` | `Bool` | `false` | Enable Quality of Experience event aggregation. | +| `withQoeAggregateEnabled(_:)` | `Bool` | `true` | QoE aggregation is enabled out of the box. Disable with `withQoeAggregateEnabled(NO)`. | +| `withQoeAggregateIntervalMultiplier(_:)` | `Int` | `2` | Multiplier applied to the harvest interval for QoE aggregation. Configure with `withQoeAggregateIntervalMultiplier:`. | ### NRVAVideoPlayerConfiguration