diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a39391..b51b933 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +# 1.0.0 + +* Improvements + +The native iOS Agent has been updated to version 7.4.12, bringing performance enhancements and bug fixes. + +* New Features + +A new backgroundReportingEnabled feature flag has been introduced to enable background reporting functionality. +A new newEventSystemEnabled feature flag has been added to enable the new event system. + + + +# 0.0.9 + +- Addressed a problem where the MAUI agent failed to start when the application transitioned from the foreground to the background state, ensuring that the agent now initializes correctly in such scenarios. + + # 0.0.7 - Updated native iOS Agent: We've upgraded the native iOS agent to version 7.4.10, which includes performance improvements and bug fixes. @@ -41,4 +59,4 @@ The mobile agent team is proud to announce GA support for our .NET MAUI agent! - Capture C# errors and crashes to quickly identify and fix problems - Track network requests to see how your app is interacting with the backend - Use distributed tracing to drill down into handled exceptions and identify the root cause of problems -- Create custom tracking events and metrics to fully understand how your users are interacting with your app \ No newline at end of file +- Create custom tracking events and metrics to fully understand how your users are interacting with your app diff --git a/NewRelic.MAUI.Android.Binding/Jars/android-agent-static-7.3.0.jar b/NewRelic.MAUI.Android.Binding/Jars/android-agent-static-7.3.1.jar similarity index 84% rename from NewRelic.MAUI.Android.Binding/Jars/android-agent-static-7.3.0.jar rename to NewRelic.MAUI.Android.Binding/Jars/android-agent-static-7.3.1.jar index d7d2eb8..f4746f4 100644 Binary files a/NewRelic.MAUI.Android.Binding/Jars/android-agent-static-7.3.0.jar and b/NewRelic.MAUI.Android.Binding/Jars/android-agent-static-7.3.1.jar differ diff --git a/NewRelic.MAUI.Android.Binding/NewRelic.MAUI.Android.Binding.csproj b/NewRelic.MAUI.Android.Binding/NewRelic.MAUI.Android.Binding.csproj index 33c2494..62fd436 100644 --- a/NewRelic.MAUI.Android.Binding/NewRelic.MAUI.Android.Binding.csproj +++ b/NewRelic.MAUI.Android.Binding/NewRelic.MAUI.Android.Binding.csproj @@ -14,7 +14,7 @@ true New Relic newrelic;MAUI;android;new relic;observability;monitoring;telemetry - 7.3.0 + 7.3.2 true @@ -25,4 +25,7 @@ + + + \ No newline at end of file diff --git a/NewRelic.MAUI.Android.Binding/NewRelic.MAUI.Android.Binding.sln b/NewRelic.MAUI.Android.Binding/NewRelic.MAUI.Android.Binding.sln new file mode 100644 index 0000000..617a3f7 --- /dev/null +++ b/NewRelic.MAUI.Android.Binding/NewRelic.MAUI.Android.Binding.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 25.0.1706.10 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewRelic.MAUI.Android.Binding", "NewRelic.MAUI.Android.Binding.csproj", "{333253D9-59A3-488D-9AB0-A5A941AB60F0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {333253D9-59A3-488D-9AB0-A5A941AB60F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {333253D9-59A3-488D-9AB0-A5A941AB60F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {333253D9-59A3-488D-9AB0-A5A941AB60F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {333253D9-59A3-488D-9AB0-A5A941AB60F0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {941786DC-A419-4354-954D-637A9D162820} + EndGlobalSection +EndGlobal diff --git a/NewRelic.MAUI.Plugin/NewRelic.MAUI.Plugin.csproj b/NewRelic.MAUI.Plugin/NewRelic.MAUI.Plugin.csproj index 0b6f786..a0db3f1 100644 --- a/NewRelic.MAUI.Plugin/NewRelic.MAUI.Plugin.csproj +++ b/NewRelic.MAUI.Plugin/NewRelic.MAUI.Plugin.csproj @@ -8,7 +8,7 @@ true enable NewRelic.MAUI.Plugin - 0.0.7 + 1.0.0 New Relic Plugin for .NET MAUI mobile apps With the New Relic .NET MAUI mobile plugin, your team can monitor the performance of .NET MAUI apps and identify code errors. The plugin collects crash data, network traffic, and other information for your apps using native components. New Relic @@ -31,10 +31,10 @@ - - - - + + + + \ No newline at end of file diff --git a/NewRelic.MAUI.Plugin/NewRelic.MAUI.Plugin.sln b/NewRelic.MAUI.Plugin/NewRelic.MAUI.Plugin.sln new file mode 100644 index 0000000..c55d257 --- /dev/null +++ b/NewRelic.MAUI.Plugin/NewRelic.MAUI.Plugin.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 25.0.1706.10 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewRelic.MAUI.Plugin", "NewRelic.MAUI.Plugin.csproj", "{39628EC8-8298-4582-B149-4C7A13A90941}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {39628EC8-8298-4582-B149-4C7A13A90941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39628EC8-8298-4582-B149-4C7A13A90941}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39628EC8-8298-4582-B149-4C7A13A90941}.Release|Any CPU.ActiveCfg = Release|Any CPU + {39628EC8-8298-4582-B149-4C7A13A90941}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FF8BB316-158C-4BA2-9B98-908EF05388D5} + EndGlobalSection +EndGlobal diff --git a/NewRelic.MAUI.Plugin/Platforms/Android/NewRelicMethodsImplementation.cs b/NewRelic.MAUI.Plugin/Platforms/Android/NewRelicMethodsImplementation.cs index 9af145a..df5bb6a 100644 --- a/NewRelic.MAUI.Plugin/Platforms/Android/NewRelicMethodsImplementation.cs +++ b/NewRelic.MAUI.Plugin/Platforms/Android/NewRelicMethodsImplementation.cs @@ -127,8 +127,6 @@ public void Start(string applicationToken, AgentStartConfiguration agentConfig = } newRelic.Start(global::Android.App.Application.Context); - // Temporary workaround, will be fixed in next Android agent release. - Com.Newrelic.Agent.Android.Background.ApplicationStateMonitor.Instance.ActivityStarted(); isStarted = true; } diff --git a/NewRelic.MAUI.Plugin/Platforms/iOS/NewRelicMethodsImplementation.cs b/NewRelic.MAUI.Plugin/Platforms/iOS/NewRelicMethodsImplementation.cs index cf413b5..4cbee47 100644 --- a/NewRelic.MAUI.Plugin/Platforms/iOS/NewRelicMethodsImplementation.cs +++ b/NewRelic.MAUI.Plugin/Platforms/iOS/NewRelicMethodsImplementation.cs @@ -93,6 +93,26 @@ public void Start(string applicationToken, AgentStartConfiguration agentConfig = { NRIosAgent.DisableFeatures(iOS.NewRelic.NRMAFeatureFlags.OfflineStorage); } + + if (agentConfig.newEventSystemEnabled) + { + NRIosAgent.EnableFeatures(iOS.NewRelic.NRMAFeatureFlags.NewEventSystem); + } + else + { + NRIosAgent.DisableFeatures(iOS.NewRelic.NRMAFeatureFlags.NewEventSystem); + } + + + if (agentConfig.backgroundReportingEnabled) + { + NRIosAgent.EnableFeatures(iOS.NewRelic.NRMAFeatureFlags.BackgroundReporting); + } + else + { + NRIosAgent.DisableFeatures(iOS.NewRelic.NRMAFeatureFlags.BackgroundReporting); + } + diff --git a/NewRelic.MAUI.Plugin/Shared/AgentStartConfiguration.cs b/NewRelic.MAUI.Plugin/Shared/AgentStartConfiguration.cs index 428b54d..9b24196 100644 --- a/NewRelic.MAUI.Plugin/Shared/AgentStartConfiguration.cs +++ b/NewRelic.MAUI.Plugin/Shared/AgentStartConfiguration.cs @@ -71,6 +71,16 @@ public class AgentStartConfiguration /// public bool offlineStorageEnabled = true; + /// Enable or disable to use our new, more stable, event system for iOS agent. + /// iOS Specific + /// true + /// + public Boolean newEventSystemEnabled = true; + + /// Enable or disable Background Events Reporting When app is in background. + /// true + /// + public Boolean backgroundReportingEnabled = false; /// /// Initialize the AgentStartConfiguration with default settings. @@ -94,11 +104,13 @@ public AgentStartConfiguration() /// Enable/Disable automatic instrumentation of WebViews. /// Enable or disable reporting data using different endpoints for US government clients /// Enable or disable offline data storage when no internet connection is available. + /// Enable or disable to use our new, more stable, event system for iOS agent. + /// Enable or disable Background Events Reporting When app is in background. public AgentStartConfiguration(bool crashReportingEnabled = true, bool loggingEnabled = true, LogLevel logLevel = LogLevel.INFO, string collectorAddress = "DEFAULT", string crashCollectorAddress = "DEFAULT", bool analyticsEventEnabled = true, bool networkErrorRequestEnabled = true, bool networkRequestEnabled = true, - bool interactionTracingEnabled = false, bool webViewInstrumentation = true, bool fedRampEnabled = false, bool offlineStorageEnabled = true) + bool interactionTracingEnabled = false, bool webViewInstrumentation = true, bool fedRampEnabled = false, bool offlineStorageEnabled = true, bool backgroundReportingEnabled = false,bool newEventSystemEnabled = true) { this.crashReportingEnabled = crashReportingEnabled; this.loggingEnabled = loggingEnabled; @@ -112,6 +124,8 @@ public AgentStartConfiguration(bool crashReportingEnabled = true, bool loggingEn this.webViewInstrumentation = webViewInstrumentation; this.fedRampEnabled = fedRampEnabled; this.offlineStorageEnabled = offlineStorageEnabled; + this.newEventSystemEnabled = newEventSystemEnabled; + this.backgroundReportingEnabled = backgroundReportingEnabled; } } } diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.MAUI.iOS.Binding.csproj b/NewRelic.MAUI.iOS.Binding/NewRelic.MAUI.iOS.Binding.csproj index 21dd4db..f509319 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.MAUI.iOS.Binding.csproj +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.MAUI.iOS.Binding.csproj @@ -6,7 +6,7 @@ true NewRelic.MAUI.iOS.Binding New Relic - 7.4.10 + 7.4.12 true NewRelic iOS SDK binding for .NET MAUI A .NET iOS library that binds the native New Relic iOS SDK. With NewRelic, you can collect crashes, network traffic, and other information for .NET MAUI iOS apps using native components. @@ -35,4 +35,7 @@ + + + \ No newline at end of file diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/Info.plist b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/Info.plist index 43e3e57..0fbbf30 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/Info.plist +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/Info.plist @@ -5,33 +5,33 @@ AvailableLibraries - DebugSymbolsPath - dSYMs LibraryIdentifier - ios-arm64 + ios-arm64_x86_64-simulator LibraryPath NewRelic.framework SupportedArchitectures arm64 + x86_64 SupportedPlatform ios + SupportedPlatformVariant + simulator + DebugSymbolsPath + dSYMs LibraryIdentifier - ios-arm64_x86_64-simulator + ios-arm64 LibraryPath NewRelic.framework SupportedArchitectures arm64 - x86_64 SupportedPlatform ios - SupportedPlatformVariant - simulator CFBundlePackageType diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeDirectory b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeDirectory index 32e10cd..b6942f0 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeDirectory and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeDirectory differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeRequirements-1 b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeRequirements-1 index 4ead156..4da87c6 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeRequirements-1 and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeRequirements-1 differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeResources b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeResources index ec6ba62..726945b 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeResources +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeResources @@ -10,7 +10,7 @@ ios-arm64/NewRelic.framework/Headers/NRConstants.h - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= ios-arm64/NewRelic.framework/Headers/NRCustomMetrics.h @@ -22,7 +22,7 @@ ios-arm64/NewRelic.framework/Headers/NRLogger.h - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= ios-arm64/NewRelic.framework/Headers/NRTimer.h @@ -42,7 +42,7 @@ ios-arm64/NewRelic.framework/Headers/NewRelic.h - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= ios-arm64/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -50,11 +50,11 @@ ios-arm64/NewRelic.framework/Headers/NewRelicFeatureFlags.h - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= ios-arm64/NewRelic.framework/Info.plist - mFrKL4bk/vC1mJzyWewf7DW+VFQ= + MVhCtAcrOEw2M+f5DV9lpsPVTCQ= ios-arm64/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-ios.abi.json @@ -78,7 +78,7 @@ ios-arm64/NewRelic.framework/NewRelic - J81ypy+ZYmHLFUxtTOXGqgDTL3g= + QlN1QRuycF3gFuATrBPfr1BUG98= ios-arm64/NewRelic.framework/PrivacyInfo.xcprivacy @@ -86,15 +86,15 @@ ios-arm64/NewRelic.framework/_CodeSignature/CodeResources - HilSW9e8JL40BQMQuqFTu2Aj7To= + QVq1/UoGMn6nfYxr58tRgomcvTs= ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist - 5YvUnQzcYM8Xl6zM8pHPjgyNHNM= + AwrP4+LUaLWkJ3VS6Rc22IFfpRY= ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic - 9Mb470pTwezMdfvOxgegjwWFt4E= + ALpd+l3+hRIYhAWT+FOLQIHFvC8= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/Agent.h @@ -102,7 +102,7 @@ ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NRConstants.h - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NRCustomMetrics.h @@ -114,7 +114,7 @@ ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NRLogger.h - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NRTimer.h @@ -134,7 +134,7 @@ ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NewRelic.h - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NewRelicCustomInteractionInterface.h @@ -142,7 +142,7 @@ ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NewRelicFeatureFlags.h - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Modules/NewRelic.swiftmodule/arm64-apple-ios-macabi.abi.json @@ -182,11 +182,11 @@ ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/NewRelic - aP4EuZVHG38WS00Y+OBizPwH7/E= + c+QzxWxV7sbv8fnuN1CbZIJrBvM= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Resources/Info.plist - hC1JyQ1Mp3S5U9sAysA4HBjMcOE= + vPV1xyn827wdDOWS6kBvRFmxDNo= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Resources/PrivacyInfo.xcprivacy @@ -194,15 +194,15 @@ ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/_CodeSignature/CodeResources - C1ANPA+hUIardXlES64wbyYYcKw= + 2xut5QiSqxc/p2lh2I75iyOWOP0= ios-arm64_x86_64-maccatalyst/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist - 5YvUnQzcYM8Xl6zM8pHPjgyNHNM= + AwrP4+LUaLWkJ3VS6Rc22IFfpRY= ios-arm64_x86_64-maccatalyst/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic - M0PlvO+M4zIbRbLssPmg450StWc= + mGmUCd0KKzfVESvSjRoJcEvmpOM= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/Agent.h @@ -210,7 +210,7 @@ ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRConstants.h - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRCustomMetrics.h @@ -222,7 +222,7 @@ ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRLogger.h - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRTimer.h @@ -242,7 +242,7 @@ ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelic.h - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -250,19 +250,19 @@ ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicFeatureFlags.h - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= ios-arm64_x86_64-simulator/NewRelic.framework/Info.plist - NkqCK7414G/PTZm9OLY/GQLjrdc= + Bw2tUSU09qFIVsSfr1bi1wfcxfQ= ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo - ILrC436wyO30quGJ9+D2GFA2oLA= + iQiYlNnwFdEiFOuKoE6DpVIMkpg= ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo - n9lq3p2iyVhB6XTREn7+8m4O8cE= + psN6/K5TbTugFGVh2jsAM7sLvdM= ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -302,7 +302,7 @@ ios-arm64_x86_64-simulator/NewRelic.framework/NewRelic - hExLZRyO4QzYz02ieZWxQrLP3Ug= + hJ9HImQI/P/DM/YyUyFb8NToR98= ios-arm64_x86_64-simulator/NewRelic.framework/PrivacyInfo.xcprivacy @@ -310,7 +310,7 @@ ios-arm64_x86_64-simulator/NewRelic.framework/_CodeSignature/CodeResources - P7DBWHiDIXwwoovD2Ftl8ieRCMY= + NjrDFn6V3LDmaLttPZxXosG3u8I= tvos-arm64/NewRelic.framework/Headers/Agent.h @@ -318,7 +318,7 @@ tvos-arm64/NewRelic.framework/Headers/NRConstants.h - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= tvos-arm64/NewRelic.framework/Headers/NRCustomMetrics.h @@ -330,7 +330,7 @@ tvos-arm64/NewRelic.framework/Headers/NRLogger.h - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= tvos-arm64/NewRelic.framework/Headers/NRTimer.h @@ -350,7 +350,7 @@ tvos-arm64/NewRelic.framework/Headers/NewRelic.h - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= tvos-arm64/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -358,11 +358,11 @@ tvos-arm64/NewRelic.framework/Headers/NewRelicFeatureFlags.h - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= tvos-arm64/NewRelic.framework/Info.plist - H1C3XGMIuzZ43FNfHZPC5FX5D5k= + rArdyE/vwkkEtATwXDOLq5hSfxg= tvos-arm64/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-tvos.abi.json @@ -386,19 +386,23 @@ tvos-arm64/NewRelic.framework/NewRelic - cVLseC0ssv4eQdH4P4vYe4c/SEM= + SYMEgrUutyu2aP1tLUx00SY3QIU= + + tvos-arm64/NewRelic.framework/PrivacyInfo.xcprivacy + + pqHC5KSLnBNg5Hk9usF5y1/9bk8= tvos-arm64/NewRelic.framework/_CodeSignature/CodeResources - ZBZH1NP3mX2QTA8J6Jzvqh0OxCA= + ksS2FySDfB5N/MHF3FLq9PsyTL8= tvos-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist - 5YvUnQzcYM8Xl6zM8pHPjgyNHNM= + AwrP4+LUaLWkJ3VS6Rc22IFfpRY= tvos-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic - vSUxEIoze3w42fDlR3eY+3WL5yo= + JWm7Skyesu3ZCYHE5c30pf8ZZ34= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/Agent.h @@ -406,7 +410,7 @@ tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NRConstants.h - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NRCustomMetrics.h @@ -418,7 +422,7 @@ tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NRLogger.h - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NRTimer.h @@ -438,7 +442,7 @@ tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelic.h - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -446,19 +450,19 @@ tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicFeatureFlags.h - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= tvos-arm64_x86_64-simulator/NewRelic.framework/Info.plist - fdm2ukdxtoUc1+YMrRy1eAxVkUM= + MNW/vpHv/y9h1tmaCN7KMSIZ1Ak= tvos-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo - fUA0nU2YS7wBRRsMCwBElCRqX5U= + fSylFk3YxnQmBX6KgPMSGVbBwT8= tvos-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo - G67Hgg2TGoBXhbhD+MFYF5P+bZw= + 5m7gd7XzMcurHasHlJyIc0SIoI8= tvos-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-tvos-simulator.abi.json @@ -498,11 +502,15 @@ tvos-arm64_x86_64-simulator/NewRelic.framework/NewRelic - sldvTkSoSEBq6gdh/DjGTFWqO9s= + VFbx0qcgX80+d8Z/hYKyda72CM8= + + tvos-arm64_x86_64-simulator/NewRelic.framework/PrivacyInfo.xcprivacy + + pqHC5KSLnBNg5Hk9usF5y1/9bk8= tvos-arm64_x86_64-simulator/NewRelic.framework/_CodeSignature/CodeResources - xiWYeYF7HXGtnLSl7q+l+YGs3PE= + StlZNrbHhcm+GCgsbv7vyvB5Hjw= files2 @@ -522,11 +530,11 @@ hash - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= hash2 - NtGj9kAVIgRkrDlbDXGtqLsmJ11/9qhAKpUMfwppeHc= + 4LvCXvTxxkrtZS75teoUwWnziAMiIpAMxFKm4MfEY3E= ios-arm64/NewRelic.framework/Headers/NRCustomMetrics.h @@ -555,11 +563,11 @@ hash - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= hash2 - 4vxK5kp/+eEFzpuyQQSWSRV6ZHq6KXfN9dyJcEyN194= + pbWBlIvnzr2y1LBvOKCbyt2/GEPE0l/Js6Wi2R6NaLI= ios-arm64/NewRelic.framework/Headers/NRTimer.h @@ -610,11 +618,11 @@ hash - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= hash2 - HQR53S25phFrrBVyr+9vuTEciy6f3mzZ2ESA/1gIwDo= + qxJJGRRcfqgsEWQJLNCXNSHWz61RE55o53OI3heXEZc= ios-arm64/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -632,22 +640,22 @@ hash - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= hash2 - hf9JD8dpa+1mhrO6qxiGJ5S1A8j0HmldTt8tyF+kb2A= + aoDSWnbRWoHsl1MH7228a4QxjeYiAFOJjqDVhdMgAkQ= ios-arm64/NewRelic.framework/Info.plist hash - mFrKL4bk/vC1mJzyWewf7DW+VFQ= + MVhCtAcrOEw2M+f5DV9lpsPVTCQ= hash2 - jXdXGExBQuTlCTN1+RuHavewSsKUR+t4ngLTIO5ryTY= + nconQwIdvWTpqQuuApa7K7pkXhtf8+1yNRoBb4AApuQ= ios-arm64/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-ios.abi.json @@ -709,11 +717,11 @@ hash - J81ypy+ZYmHLFUxtTOXGqgDTL3g= + QlN1QRuycF3gFuATrBPfr1BUG98= hash2 - Dg3mVJqT/NDRNWuJt8QtGGTrnIitCxlm9XkH38uOqjY= + P6sMDehGouHWZNaDrnbjjjmI+hEreZcgxmMMkzOnMLQ= ios-arm64/NewRelic.framework/PrivacyInfo.xcprivacy @@ -731,33 +739,33 @@ hash - HilSW9e8JL40BQMQuqFTu2Aj7To= + QVq1/UoGMn6nfYxr58tRgomcvTs= hash2 - 06fQpvvjk19Ucm0M2gk9jWS2DCnD6KPnmtfeJ+yuzSA= + Bl5hiHG2uRzMsjYSzOhrAewTWsyvoEOEJXpCeslt/Hk= ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist hash - 5YvUnQzcYM8Xl6zM8pHPjgyNHNM= + AwrP4+LUaLWkJ3VS6Rc22IFfpRY= hash2 - ksLOQATz3W7UJ4tYqKo/M6cVBf7xNXwPYR4sOlssrig= + 6iqcLF3fm3zDdxLk8YvYfULoqDRadodoAmYDQDqWSao= ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic hash - 9Mb470pTwezMdfvOxgegjwWFt4E= + ALpd+l3+hRIYhAWT+FOLQIHFvC8= hash2 - BvnJ9Cp85Xt8GC7Ioq/P4KJGvpHCW5qteXIHskLjbaU= + nWWDdUp9EsplmK6m0GKqH7CjGrRy9fTgt+B62UufXKU= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Headers @@ -795,11 +803,11 @@ hash - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= hash2 - NtGj9kAVIgRkrDlbDXGtqLsmJ11/9qhAKpUMfwppeHc= + 4LvCXvTxxkrtZS75teoUwWnziAMiIpAMxFKm4MfEY3E= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NRCustomMetrics.h @@ -828,11 +836,11 @@ hash - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= hash2 - 4vxK5kp/+eEFzpuyQQSWSRV6ZHq6KXfN9dyJcEyN194= + pbWBlIvnzr2y1LBvOKCbyt2/GEPE0l/Js6Wi2R6NaLI= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NRTimer.h @@ -883,11 +891,11 @@ hash - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= hash2 - HQR53S25phFrrBVyr+9vuTEciy6f3mzZ2ESA/1gIwDo= + qxJJGRRcfqgsEWQJLNCXNSHWz61RE55o53OI3heXEZc= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Headers/NewRelicCustomInteractionInterface.h @@ -905,11 +913,11 @@ hash - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= hash2 - hf9JD8dpa+1mhrO6qxiGJ5S1A8j0HmldTt8tyF+kb2A= + aoDSWnbRWoHsl1MH7228a4QxjeYiAFOJjqDVhdMgAkQ= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Modules/NewRelic.swiftmodule/arm64-apple-ios-macabi.abi.json @@ -1015,22 +1023,22 @@ hash - aP4EuZVHG38WS00Y+OBizPwH7/E= + c+QzxWxV7sbv8fnuN1CbZIJrBvM= hash2 - SMweH07ejmOzeuo9Jenj+u5pnjtWFOb2uZaGMYKx/Nk= + 8aqqsABtGYeEdhiLZCCad11Fn9QtB4BtSGOK0w4MqUE= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Resources/Info.plist hash - hC1JyQ1Mp3S5U9sAysA4HBjMcOE= + vPV1xyn827wdDOWS6kBvRFmxDNo= hash2 - ylsb2sJAvZo74KaUCWT7NeZ90dadjSoqD+SrRMg8uAY= + ufTkQTLYG73rpJ/FEFn/DQTz9T/TH05dczirwz/Rik8= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/A/Resources/PrivacyInfo.xcprivacy @@ -1048,11 +1056,11 @@ hash - C1ANPA+hUIardXlES64wbyYYcKw= + 2xut5QiSqxc/p2lh2I75iyOWOP0= hash2 - Rpv0J06bJ7wHBkhzO6TZOnGZcKczrdD0i+lIXW5JT/U= + HbO9hfdsXVAh8tdtASCtorNT0F63BtCadtKlNOK5a04= ios-arm64_x86_64-maccatalyst/NewRelic.framework/Versions/Current @@ -1069,22 +1077,22 @@ hash - 5YvUnQzcYM8Xl6zM8pHPjgyNHNM= + AwrP4+LUaLWkJ3VS6Rc22IFfpRY= hash2 - ksLOQATz3W7UJ4tYqKo/M6cVBf7xNXwPYR4sOlssrig= + 6iqcLF3fm3zDdxLk8YvYfULoqDRadodoAmYDQDqWSao= ios-arm64_x86_64-maccatalyst/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic hash - M0PlvO+M4zIbRbLssPmg450StWc= + mGmUCd0KKzfVESvSjRoJcEvmpOM= hash2 - KCGestsiFqsRn/OznP8Lgpd+Xu7e3uFpPMiCZzlkzZs= + OoEyWFcTMVIsDuYBa3hWeqUAGxizM1D6O2csDAw9BGk= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/Agent.h @@ -1102,11 +1110,11 @@ hash - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= hash2 - NtGj9kAVIgRkrDlbDXGtqLsmJ11/9qhAKpUMfwppeHc= + 4LvCXvTxxkrtZS75teoUwWnziAMiIpAMxFKm4MfEY3E= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRCustomMetrics.h @@ -1135,11 +1143,11 @@ hash - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= hash2 - 4vxK5kp/+eEFzpuyQQSWSRV6ZHq6KXfN9dyJcEyN194= + pbWBlIvnzr2y1LBvOKCbyt2/GEPE0l/Js6Wi2R6NaLI= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRTimer.h @@ -1190,11 +1198,11 @@ hash - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= hash2 - HQR53S25phFrrBVyr+9vuTEciy6f3mzZ2ESA/1gIwDo= + qxJJGRRcfqgsEWQJLNCXNSHWz61RE55o53OI3heXEZc= ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -1212,44 +1220,44 @@ hash - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= hash2 - hf9JD8dpa+1mhrO6qxiGJ5S1A8j0HmldTt8tyF+kb2A= + aoDSWnbRWoHsl1MH7228a4QxjeYiAFOJjqDVhdMgAkQ= ios-arm64_x86_64-simulator/NewRelic.framework/Info.plist hash - NkqCK7414G/PTZm9OLY/GQLjrdc= + Bw2tUSU09qFIVsSfr1bi1wfcxfQ= hash2 - OYyqhqTVah4XbKPfF+1kEzQfW7vHSmYUwI6SnyzTZx0= + +LaOaFAFtWlWXsw4otGI7Ud8SdFWoBYg7QBg1HC6qpw= ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo hash - ILrC436wyO30quGJ9+D2GFA2oLA= + iQiYlNnwFdEiFOuKoE6DpVIMkpg= hash2 - k8zcEeQAQL/J5RNuNr2zTGMYE471VzZ4ctebaMjCSJM= + Bq+djM8DjJZlZEOxqmKCOqzs5ImHgBqu0hVDj2xpZ5o= ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo hash - n9lq3p2iyVhB6XTREn7+8m4O8cE= + psN6/K5TbTugFGVh2jsAM7sLvdM= hash2 - iVj+na3UVdyhRiGQglPFUA7qgrlIWt8ku0fVsPAaogg= + Hf0nNlRWEeK1D3vtacc69ff2owBT//9vqZN1zR3542M= ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -1355,11 +1363,11 @@ hash - hExLZRyO4QzYz02ieZWxQrLP3Ug= + hJ9HImQI/P/DM/YyUyFb8NToR98= hash2 - 5TZ2Jys47y0g/7qsNvERU+6wwEVnCVLd0NGZXvWK67s= + QaeQfxwaVtZ4GQOHJ1i0Xen8gQfyncWZha1hUXkkXEo= ios-arm64_x86_64-simulator/NewRelic.framework/PrivacyInfo.xcprivacy @@ -1377,11 +1385,11 @@ hash - P7DBWHiDIXwwoovD2Ftl8ieRCMY= + NjrDFn6V3LDmaLttPZxXosG3u8I= hash2 - KT7YvDlO3oMg7hEIJM/m/PBuFYaMuIL1q+KvVJPPZ1s= + ga3+KYprsszlYcsMIXCQQxunopJ50XS0zdoe45qo+AA= tvos-arm64/NewRelic.framework/Headers/Agent.h @@ -1399,11 +1407,11 @@ hash - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= hash2 - NtGj9kAVIgRkrDlbDXGtqLsmJ11/9qhAKpUMfwppeHc= + 4LvCXvTxxkrtZS75teoUwWnziAMiIpAMxFKm4MfEY3E= tvos-arm64/NewRelic.framework/Headers/NRCustomMetrics.h @@ -1432,11 +1440,11 @@ hash - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= hash2 - 4vxK5kp/+eEFzpuyQQSWSRV6ZHq6KXfN9dyJcEyN194= + pbWBlIvnzr2y1LBvOKCbyt2/GEPE0l/Js6Wi2R6NaLI= tvos-arm64/NewRelic.framework/Headers/NRTimer.h @@ -1487,11 +1495,11 @@ hash - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= hash2 - HQR53S25phFrrBVyr+9vuTEciy6f3mzZ2ESA/1gIwDo= + qxJJGRRcfqgsEWQJLNCXNSHWz61RE55o53OI3heXEZc= tvos-arm64/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -1509,22 +1517,22 @@ hash - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= hash2 - hf9JD8dpa+1mhrO6qxiGJ5S1A8j0HmldTt8tyF+kb2A= + aoDSWnbRWoHsl1MH7228a4QxjeYiAFOJjqDVhdMgAkQ= tvos-arm64/NewRelic.framework/Info.plist hash - H1C3XGMIuzZ43FNfHZPC5FX5D5k= + rArdyE/vwkkEtATwXDOLq5hSfxg= hash2 - pb6ayu68+uUp/X78Z9/g7rdBl6yufMLxV60A9N0UQQI= + dLUso7BrOLIKiLFHQwNEAaTxVWN9UVB+zD8QDTK9Ons= tvos-arm64/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-tvos.abi.json @@ -1586,44 +1594,55 @@ hash - cVLseC0ssv4eQdH4P4vYe4c/SEM= + SYMEgrUutyu2aP1tLUx00SY3QIU= + + hash2 + + e/snF0UeFHUHyy7sze4uYgOo1LhssRf6ue/Ezhq9Ct4= + + + tvos-arm64/NewRelic.framework/PrivacyInfo.xcprivacy + + hash + + pqHC5KSLnBNg5Hk9usF5y1/9bk8= hash2 - h3/SlImIJQ6znZiP9LKYM/Xpx1WFkvvCec3Dgm2Uui0= + /3CJtqx2AwDuMUV9sZ/9olcPTWkxGYQZU1sf0NWT3bs= tvos-arm64/NewRelic.framework/_CodeSignature/CodeResources hash - ZBZH1NP3mX2QTA8J6Jzvqh0OxCA= + ksS2FySDfB5N/MHF3FLq9PsyTL8= hash2 - G7duyqGvfzHXotG/RK16hcYnhRA6X8UzbIqLfA+us6k= + EjhyLj0UT96QwDe3F+jlqcyvRred1XE9katEW4gClWM= tvos-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist hash - 5YvUnQzcYM8Xl6zM8pHPjgyNHNM= + AwrP4+LUaLWkJ3VS6Rc22IFfpRY= hash2 - ksLOQATz3W7UJ4tYqKo/M6cVBf7xNXwPYR4sOlssrig= + 6iqcLF3fm3zDdxLk8YvYfULoqDRadodoAmYDQDqWSao= tvos-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic hash - vSUxEIoze3w42fDlR3eY+3WL5yo= + JWm7Skyesu3ZCYHE5c30pf8ZZ34= hash2 - +4spDx6ozTCjwaFNPM+eq2dsnLc5+V7LcrTOVnMAqSA= + KjaRA/52zyGxnFo9YGkQiRQ0yh7VpqKPwW34BvpWC5w= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/Agent.h @@ -1641,11 +1660,11 @@ hash - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= hash2 - NtGj9kAVIgRkrDlbDXGtqLsmJ11/9qhAKpUMfwppeHc= + 4LvCXvTxxkrtZS75teoUwWnziAMiIpAMxFKm4MfEY3E= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NRCustomMetrics.h @@ -1674,11 +1693,11 @@ hash - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= hash2 - 4vxK5kp/+eEFzpuyQQSWSRV6ZHq6KXfN9dyJcEyN194= + pbWBlIvnzr2y1LBvOKCbyt2/GEPE0l/Js6Wi2R6NaLI= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NRTimer.h @@ -1729,11 +1748,11 @@ hash - WMBfxqH7HlW12UDGdRtzxgEkAYE= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= hash2 - HQR53S25phFrrBVyr+9vuTEciy6f3mzZ2ESA/1gIwDo= + qxJJGRRcfqgsEWQJLNCXNSHWz61RE55o53OI3heXEZc= tvos-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicCustomInteractionInterface.h @@ -1751,44 +1770,44 @@ hash - NfbhZKvEQP1J0cMhYWRAUkPRDOY= + 85ShAwQQEzV5f8B41jj+uKQR/ks= hash2 - hf9JD8dpa+1mhrO6qxiGJ5S1A8j0HmldTt8tyF+kb2A= + aoDSWnbRWoHsl1MH7228a4QxjeYiAFOJjqDVhdMgAkQ= tvos-arm64_x86_64-simulator/NewRelic.framework/Info.plist hash - fdm2ukdxtoUc1+YMrRy1eAxVkUM= + MNW/vpHv/y9h1tmaCN7KMSIZ1Ak= hash2 - ZZdFn16vF/RRbcMAcTo+ZXtxiJG1PuRFzTRELn46nR0= + M7WdcwzMClDZcgcWiYId+zpf9J3XTTHzQYkidd8jbhQ= tvos-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo hash - fUA0nU2YS7wBRRsMCwBElCRqX5U= + fSylFk3YxnQmBX6KgPMSGVbBwT8= hash2 - IrfGO5LzZRBpHFNht5GDjxca9dYMgm6EICSFHa7cBec= + DxKk6EmN7IFEKv5NCLPtlAveBLZnMB0K2RweT2ZtiGM= tvos-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo hash - G67Hgg2TGoBXhbhD+MFYF5P+bZw= + 5m7gd7XzMcurHasHlJyIc0SIoI8= hash2 - i53wgf8vC5M5LycoI84GxZogDgnyDiJEfE+Ffmd1Li4= + cC+wmtZdaTyW55UboDRyVnQaFArhl0ilivUJ3MRQEBA= tvos-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/arm64-apple-tvos-simulator.abi.json @@ -1894,22 +1913,33 @@ hash - sldvTkSoSEBq6gdh/DjGTFWqO9s= + VFbx0qcgX80+d8Z/hYKyda72CM8= hash2 - JVkjeonLcHIdpKPBKtXfCmj/VywCQvgK4Bx9JNZYXvg= + P8qfTcdL1ic9UbgQHE3IAbpDnnfAgMEsLc2VAHwZO0A= + + + tvos-arm64_x86_64-simulator/NewRelic.framework/PrivacyInfo.xcprivacy + + hash + + pqHC5KSLnBNg5Hk9usF5y1/9bk8= + + hash2 + + /3CJtqx2AwDuMUV9sZ/9olcPTWkxGYQZU1sf0NWT3bs= tvos-arm64_x86_64-simulator/NewRelic.framework/_CodeSignature/CodeResources hash - xiWYeYF7HXGtnLSl7q+l+YGs3PE= + StlZNrbHhcm+GCgsbv7vyvB5Hjw= hash2 - TNc93aCIPpZIF+XWT593+IsLriBrXgs4JaLvijE1LFc= + pJicBzRpztysRcWuQ7va7LstCMDpebdB9sW61yKL508= diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeSignature b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeSignature index bd03aec..dc9284a 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeSignature and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/_CodeSignature/CodeSignature differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRConstants.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRConstants.h index 4aac2e4..3a26900 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRConstants.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRConstants.h @@ -125,6 +125,7 @@ typedef NSString NRMetricUnit; // Defines Format string where 4 arguments are NativePlatform, Platform, Destination and Endpoint. #define kNRMAMaxPayloadSizeLimitSupportabilityFormatString @"Supportability/Mobile/%@/%@/%@/MaxPayloadSizeLimit/%@" #define kNRMAMaxPayloadSizeLimit 1000000 // bytes +#define kNRMAMaxLogPayloadSizeLimit 700000 // bytes #define kNRMAOfflineSupportabilityFormatString @"Supportability/Mobile/%@/%@/%@/OfflinePayload/bytes" @@ -140,6 +141,8 @@ typedef NSString NRMetricUnit; #define kNRMAExceptionHandlerHijackedMetric kNRAgentHealthPrefix @"/Hijacked/ExceptionHandler" +#define kNRMAConfigurationUpdated @"Supportability/Mobile/%@/%@/Configuration/Updated" + //Network info cache constants #define kNRCarrierNameCacheLifetime 50 // milliseconds #define kNRWanTypeCacheLifetime 25 // milliseconds @@ -162,6 +165,11 @@ typedef NSString NRMetricUnit; #define NRMA_METRIC_APP_LAUNCH_COLD @"AppLaunch/Cold" #define NRMA_METRIC_APP_LAUNCH_RESUME @"AppLaunch/Hot" +// Logging +#define kNRMALoggingMetric kNRAgentHealthPrefix @"/%@/%@/LogReporting" +#define kNRMALoggingMetricFailedUpload kNRMALoggingMetric @"/FailedUpload" +#define kNRMALoggingMetricSuccessfulSize kNRMALoggingMetric @"/Size/Uncompressed" + // Network Failure Codes enum NRNetworkFailureCode { NRURLErrorUnknown = -1, diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRLogger.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRLogger.h index 3cf9205..dfef039 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRLogger.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NRLogger.h @@ -56,6 +56,7 @@ typedef enum _NRLogLevels { NRLogLevelInfo = 1 << 2, NRLogLevelVerbose = 1 << 3, NRLogLevelAudit = 1 << 4, + NRLogLevelDebug = 1 << 5, NRLogLevelALL = 0xffff } NRLogLevels; @@ -93,9 +94,15 @@ typedef enum _NRLogTargets { NSString *logURL; NSString *logIngestKey; + NSString *logEntityGuid; + dispatch_queue_t logQueue; unsigned long long lastFileSize; + NSMutableArray *uploadQueue; + BOOL isUploading; + unsigned int failureCount; + } + (void)log:(unsigned int)level @@ -126,12 +133,18 @@ withMessage:(NSString *)message; + (void)setLogTargets:(unsigned int)targets; /* -Configure the New Relic headerless logging API URL. +Configure the New Relic logging API. @param url A single NSString constant, the logging API URL. */ + (void)setLogIngestKey:(NSString*) key; +/* + Configure the New Relic logging API. + +@param url A single NSString constant, the logging API URL. +*/ ++ (void)setLogEntityGuid:(NSString*) key; + (void)setLogURL:(NSString*) url; @@ -148,9 +161,15 @@ Configure the New Relic headerless logging API URL. + (void)clearLog; /*! - Upload current log since last upload. + Enqueue current log since last upload. + */ ++ (void)enqueueLogUpload; + + +/* + Convert NSString to NRLogLevel. */ -+ (void)upload; ++ (NRLogLevels)stringToLevel:(NSString*)string; /*! return currently set logLevels @@ -168,6 +187,7 @@ Configure the New Relic headerless logging API URL. #define NRLOG_INFO(format, ...) NRLOG(NRLogLevelInfo, format, ##__VA_ARGS__) #define NRLOG_VERBOSE(format, ...) NRLOG(NRLogLevelVerbose, format, ##__VA_ARGS__) #define NRLOG_AUDIT(format, ...) NRLOG(NRLogLevelAudit, format, ##__VA_ARGS__) +#define NRLOG_DEBUG(format, ...) NRLOG(NRLogLevelDebug, format, ##__VA_ARGS__) #endif // _NEWRELIC_AGENT_LOGGING_ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelic.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelic.h index 38d0374..b5b9297 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelic.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelic.h @@ -59,14 +59,19 @@ extern "C" { #pragma mark - Logging + (void) logInfo:(NSString* __nonnull) message; - + (void) logError:(NSString* __nonnull) message; - + (void) logVerbose:(NSString* __nonnull) message; + (void) logWarning:(NSString* __nonnull) message; - + (void) logAudit:(NSString* __nonnull) message; ++ (void) logDebug:(NSString* __nonnull) message; +// Only one level can be passed, no passing bitsets (multiple log levels at once.) ++ (void) log:(NSString* __nonnull) message level:(NRLogLevels)level; +// Dict should contain at minimum => String: "message" and String: "logLevel" where logLevel is one of NONE < ERROR < WARN < INFO < DEBUG < VERBOSE ++ (void) logAll:(NSDictionary* __nonnull) dict; + ++ (void) logAttributes:(NSDictionary* __nonnull) dict; ++ (void) logErrorObject:(NSError* __nonnull) error; #pragma mark - Configuring the New Relic SDK @@ -624,9 +629,15 @@ extern "C" { /******************************************************************************* * Add a NSArray of NSStrings of the header * fields you want added to network events - *******************************************************************************/ + *******************************************************************************/ + (void)addHTTPHeaderTrackingFor:(NSArray*_Nonnull)headers; +/******************************************************************************* + * Returns the NSArray of NSStrings of the header + * fields that were added to network events + *******************************************************************************/ ++ (NSArray* _Nonnull)httpHeadersAddedForTracking; + #pragma mark - Recording custom events /*! diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelicFeatureFlags.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelicFeatureFlags.h index 67f22e6..ae4dd82 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelicFeatureFlags.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Headers/NewRelicFeatureFlags.h @@ -79,7 +79,6 @@ */ - typedef NS_OPTIONS(unsigned long long, NRMAFeatureFlags){ NRFeatureFlag_InteractionTracing = 1 << 1, NRFeatureFlag_SwiftInteractionTracing = 1 << 2, // Disabled by default @@ -99,8 +98,10 @@ typedef NS_OPTIONS(unsigned long long, NRMAFeatureFlags){ NRFeatureFlag_AppStartMetrics = 1 << 16, NRFeatureFlag_FedRampEnabled = 1 << 17, // Disabled by default NRFeatureFlag_SwiftAsyncURLSessionSupport = 1 << 18, // Disabled by default - - // NOTE: Temporarily removed NRFeatureFlag_LogReporting + // Note: LogReporting is not currently available. It will be available in a future release of the New Relic iOS agent. +// NRFeatureFlag_LogReporting = 1 << 19, // Disabled by default NRFeatureFlag_NewEventSystem = 1 << 20, // Disabled by default NRFeatureFlag_OfflineStorage = 1 << 21, // Disabled by default + NRFeatureFlag_BackgroundReporting = 1 << 22, // Disabled by default + }; diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Info.plist b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Info.plist index 0d3711b..8f88ed3 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Info.plist and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/Info.plist differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/NewRelic b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/NewRelic old mode 100755 new mode 100644 index c12317c..e0be676 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/NewRelic and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/NewRelic differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/_CodeSignature/CodeResources b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/_CodeSignature/CodeResources index a5c8502..3c8c79e 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/_CodeSignature/CodeResources +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/NewRelic.framework/_CodeSignature/CodeResources @@ -10,7 +10,7 @@ Headers/NRConstants.h - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= Headers/NRCustomMetrics.h @@ -22,7 +22,7 @@ Headers/NRLogger.h - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= Headers/NRTimer.h @@ -42,7 +42,7 @@ Headers/NewRelic.h - mKEI8gbLRtQ22AqALyo5tRAiIXY= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= Headers/NewRelicCustomInteractionInterface.h @@ -50,11 +50,11 @@ Headers/NewRelicFeatureFlags.h - P44f8fmszlXXaK6nw1+nm/8pxfI= + 85ShAwQQEzV5f8B41jj+uKQR/ks= Info.plist - k4Z/7gpuI+Y9sdZ5VvX9Q+k5m1g= + MVhCtAcrOEw2M+f5DV9lpsPVTCQ= Modules/NewRelic.swiftmodule/arm64-apple-ios.abi.json @@ -102,11 +102,11 @@ hash - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= hash2 - NtGj9kAVIgRkrDlbDXGtqLsmJ11/9qhAKpUMfwppeHc= + 4LvCXvTxxkrtZS75teoUwWnziAMiIpAMxFKm4MfEY3E= Headers/NRCustomMetrics.h @@ -135,11 +135,11 @@ hash - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= hash2 - 4vxK5kp/+eEFzpuyQQSWSRV6ZHq6KXfN9dyJcEyN194= + pbWBlIvnzr2y1LBvOKCbyt2/GEPE0l/Js6Wi2R6NaLI= Headers/NRTimer.h @@ -190,11 +190,11 @@ hash - mKEI8gbLRtQ22AqALyo5tRAiIXY= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= hash2 - 6MCmbDdifqhfSjIQpg9jX/NJcqEpnQMadL63Hxm7Ack= + qxJJGRRcfqgsEWQJLNCXNSHWz61RE55o53OI3heXEZc= Headers/NewRelicCustomInteractionInterface.h @@ -212,11 +212,11 @@ hash - P44f8fmszlXXaK6nw1+nm/8pxfI= + 85ShAwQQEzV5f8B41jj+uKQR/ks= hash2 - TpHfMrrQEYt8psOEvUIa1vhoEgeLrMKJ55+i81bRTVk= + aoDSWnbRWoHsl1MH7228a4QxjeYiAFOJjqDVhdMgAkQ= Modules/NewRelic.swiftmodule/arm64-apple-ios.abi.json diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist index 961e847..1f3e3a6 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Info.plist @@ -13,8 +13,8 @@ CFBundleSignature ???? CFBundleShortVersionString - 7.4.10 + 7.4.12 CFBundleVersion - 7.4.10 + 7.4.12 diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic index cc92f65..5090bc9 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64/dSYMs/NewRelic.framework.dSYM/Contents/Resources/DWARF/NewRelic differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRConstants.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRConstants.h index 4aac2e4..3a26900 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRConstants.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRConstants.h @@ -125,6 +125,7 @@ typedef NSString NRMetricUnit; // Defines Format string where 4 arguments are NativePlatform, Platform, Destination and Endpoint. #define kNRMAMaxPayloadSizeLimitSupportabilityFormatString @"Supportability/Mobile/%@/%@/%@/MaxPayloadSizeLimit/%@" #define kNRMAMaxPayloadSizeLimit 1000000 // bytes +#define kNRMAMaxLogPayloadSizeLimit 700000 // bytes #define kNRMAOfflineSupportabilityFormatString @"Supportability/Mobile/%@/%@/%@/OfflinePayload/bytes" @@ -140,6 +141,8 @@ typedef NSString NRMetricUnit; #define kNRMAExceptionHandlerHijackedMetric kNRAgentHealthPrefix @"/Hijacked/ExceptionHandler" +#define kNRMAConfigurationUpdated @"Supportability/Mobile/%@/%@/Configuration/Updated" + //Network info cache constants #define kNRCarrierNameCacheLifetime 50 // milliseconds #define kNRWanTypeCacheLifetime 25 // milliseconds @@ -162,6 +165,11 @@ typedef NSString NRMetricUnit; #define NRMA_METRIC_APP_LAUNCH_COLD @"AppLaunch/Cold" #define NRMA_METRIC_APP_LAUNCH_RESUME @"AppLaunch/Hot" +// Logging +#define kNRMALoggingMetric kNRAgentHealthPrefix @"/%@/%@/LogReporting" +#define kNRMALoggingMetricFailedUpload kNRMALoggingMetric @"/FailedUpload" +#define kNRMALoggingMetricSuccessfulSize kNRMALoggingMetric @"/Size/Uncompressed" + // Network Failure Codes enum NRNetworkFailureCode { NRURLErrorUnknown = -1, diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRLogger.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRLogger.h index 3cf9205..dfef039 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRLogger.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NRLogger.h @@ -56,6 +56,7 @@ typedef enum _NRLogLevels { NRLogLevelInfo = 1 << 2, NRLogLevelVerbose = 1 << 3, NRLogLevelAudit = 1 << 4, + NRLogLevelDebug = 1 << 5, NRLogLevelALL = 0xffff } NRLogLevels; @@ -93,9 +94,15 @@ typedef enum _NRLogTargets { NSString *logURL; NSString *logIngestKey; + NSString *logEntityGuid; + dispatch_queue_t logQueue; unsigned long long lastFileSize; + NSMutableArray *uploadQueue; + BOOL isUploading; + unsigned int failureCount; + } + (void)log:(unsigned int)level @@ -126,12 +133,18 @@ withMessage:(NSString *)message; + (void)setLogTargets:(unsigned int)targets; /* -Configure the New Relic headerless logging API URL. +Configure the New Relic logging API. @param url A single NSString constant, the logging API URL. */ + (void)setLogIngestKey:(NSString*) key; +/* + Configure the New Relic logging API. + +@param url A single NSString constant, the logging API URL. +*/ ++ (void)setLogEntityGuid:(NSString*) key; + (void)setLogURL:(NSString*) url; @@ -148,9 +161,15 @@ Configure the New Relic headerless logging API URL. + (void)clearLog; /*! - Upload current log since last upload. + Enqueue current log since last upload. + */ ++ (void)enqueueLogUpload; + + +/* + Convert NSString to NRLogLevel. */ -+ (void)upload; ++ (NRLogLevels)stringToLevel:(NSString*)string; /*! return currently set logLevels @@ -168,6 +187,7 @@ Configure the New Relic headerless logging API URL. #define NRLOG_INFO(format, ...) NRLOG(NRLogLevelInfo, format, ##__VA_ARGS__) #define NRLOG_VERBOSE(format, ...) NRLOG(NRLogLevelVerbose, format, ##__VA_ARGS__) #define NRLOG_AUDIT(format, ...) NRLOG(NRLogLevelAudit, format, ##__VA_ARGS__) +#define NRLOG_DEBUG(format, ...) NRLOG(NRLogLevelDebug, format, ##__VA_ARGS__) #endif // _NEWRELIC_AGENT_LOGGING_ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelic.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelic.h index 38d0374..b5b9297 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelic.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelic.h @@ -59,14 +59,19 @@ extern "C" { #pragma mark - Logging + (void) logInfo:(NSString* __nonnull) message; - + (void) logError:(NSString* __nonnull) message; - + (void) logVerbose:(NSString* __nonnull) message; + (void) logWarning:(NSString* __nonnull) message; - + (void) logAudit:(NSString* __nonnull) message; ++ (void) logDebug:(NSString* __nonnull) message; +// Only one level can be passed, no passing bitsets (multiple log levels at once.) ++ (void) log:(NSString* __nonnull) message level:(NRLogLevels)level; +// Dict should contain at minimum => String: "message" and String: "logLevel" where logLevel is one of NONE < ERROR < WARN < INFO < DEBUG < VERBOSE ++ (void) logAll:(NSDictionary* __nonnull) dict; + ++ (void) logAttributes:(NSDictionary* __nonnull) dict; ++ (void) logErrorObject:(NSError* __nonnull) error; #pragma mark - Configuring the New Relic SDK @@ -624,9 +629,15 @@ extern "C" { /******************************************************************************* * Add a NSArray of NSStrings of the header * fields you want added to network events - *******************************************************************************/ + *******************************************************************************/ + (void)addHTTPHeaderTrackingFor:(NSArray*_Nonnull)headers; +/******************************************************************************* + * Returns the NSArray of NSStrings of the header + * fields that were added to network events + *******************************************************************************/ ++ (NSArray* _Nonnull)httpHeadersAddedForTracking; + #pragma mark - Recording custom events /*! diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicFeatureFlags.h b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicFeatureFlags.h index 67f22e6..ae4dd82 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicFeatureFlags.h +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Headers/NewRelicFeatureFlags.h @@ -79,7 +79,6 @@ */ - typedef NS_OPTIONS(unsigned long long, NRMAFeatureFlags){ NRFeatureFlag_InteractionTracing = 1 << 1, NRFeatureFlag_SwiftInteractionTracing = 1 << 2, // Disabled by default @@ -99,8 +98,10 @@ typedef NS_OPTIONS(unsigned long long, NRMAFeatureFlags){ NRFeatureFlag_AppStartMetrics = 1 << 16, NRFeatureFlag_FedRampEnabled = 1 << 17, // Disabled by default NRFeatureFlag_SwiftAsyncURLSessionSupport = 1 << 18, // Disabled by default - - // NOTE: Temporarily removed NRFeatureFlag_LogReporting + // Note: LogReporting is not currently available. It will be available in a future release of the New Relic iOS agent. +// NRFeatureFlag_LogReporting = 1 << 19, // Disabled by default NRFeatureFlag_NewEventSystem = 1 << 20, // Disabled by default NRFeatureFlag_OfflineStorage = 1 << 21, // Disabled by default + NRFeatureFlag_BackgroundReporting = 1 << 22, // Disabled by default + }; diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Info.plist b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Info.plist index 20a2549..a021f89 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Info.plist and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Info.plist differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo index a530a38..756958e 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo index 1fed0b7..870818e 100644 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/NewRelic b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/NewRelic old mode 100755 new mode 100644 index 66441cc..8967184 Binary files a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/NewRelic and b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/NewRelic differ diff --git a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/_CodeSignature/CodeResources b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/_CodeSignature/CodeResources index 78f13dc..cafbbdc 100644 --- a/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/_CodeSignature/CodeResources +++ b/NewRelic.MAUI.iOS.Binding/NewRelic.xcframework/ios-arm64_x86_64-simulator/NewRelic.framework/_CodeSignature/CodeResources @@ -10,7 +10,7 @@ Headers/NRConstants.h - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= Headers/NRCustomMetrics.h @@ -22,7 +22,7 @@ Headers/NRLogger.h - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= Headers/NRTimer.h @@ -42,7 +42,7 @@ Headers/NewRelic.h - mKEI8gbLRtQ22AqALyo5tRAiIXY= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= Headers/NewRelicCustomInteractionInterface.h @@ -50,19 +50,19 @@ Headers/NewRelicFeatureFlags.h - P44f8fmszlXXaK6nw1+nm/8pxfI= + 85ShAwQQEzV5f8B41jj+uKQR/ks= Info.plist - fk1auyEbE22xZJgDgsutDhHKNdw= + Bw2tUSU09qFIVsSfr1bi1wfcxfQ= Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo - AJQLYlw7A5ejPfgYnGI1Ietl2L8= + iQiYlNnwFdEiFOuKoE6DpVIMkpg= Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo - NeU2GTS6O101+7TphL83zZxbL9o= + psN6/K5TbTugFGVh2jsAM7sLvdM= Modules/NewRelic.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -130,11 +130,11 @@ hash - 8PfSEEoqvSDPtXtzyoTmbu+faW4= + lJmU3wIB6sWc8YZYN8ovooKd/b8= hash2 - NtGj9kAVIgRkrDlbDXGtqLsmJ11/9qhAKpUMfwppeHc= + 4LvCXvTxxkrtZS75teoUwWnziAMiIpAMxFKm4MfEY3E= Headers/NRCustomMetrics.h @@ -163,11 +163,11 @@ hash - FLREDjIopvxoVJ5QV3SYj9gHJvg= + Uaj41afwRqxwTQ96fWLFgPQZFt4= hash2 - 4vxK5kp/+eEFzpuyQQSWSRV6ZHq6KXfN9dyJcEyN194= + pbWBlIvnzr2y1LBvOKCbyt2/GEPE0l/Js6Wi2R6NaLI= Headers/NRTimer.h @@ -218,11 +218,11 @@ hash - mKEI8gbLRtQ22AqALyo5tRAiIXY= + 2xCZH1JiwwUvD1LyGn7HUMQpGJI= hash2 - 6MCmbDdifqhfSjIQpg9jX/NJcqEpnQMadL63Hxm7Ack= + qxJJGRRcfqgsEWQJLNCXNSHWz61RE55o53OI3heXEZc= Headers/NewRelicCustomInteractionInterface.h @@ -240,33 +240,33 @@ hash - P44f8fmszlXXaK6nw1+nm/8pxfI= + 85ShAwQQEzV5f8B41jj+uKQR/ks= hash2 - TpHfMrrQEYt8psOEvUIa1vhoEgeLrMKJ55+i81bRTVk= + aoDSWnbRWoHsl1MH7228a4QxjeYiAFOJjqDVhdMgAkQ= Modules/NewRelic.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo hash - AJQLYlw7A5ejPfgYnGI1Ietl2L8= + iQiYlNnwFdEiFOuKoE6DpVIMkpg= hash2 - PVaQl2Gy1MigWQyKsACyeh++iuOpuDpqYPnovFUBIz8= + Bq+djM8DjJZlZEOxqmKCOqzs5ImHgBqu0hVDj2xpZ5o= Modules/NewRelic.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo hash - NeU2GTS6O101+7TphL83zZxbL9o= + psN6/K5TbTugFGVh2jsAM7sLvdM= hash2 - +q/ZXJDVhM9yukNSw8Nzki2bG9CQUUs7FKf/R0+qa84= + Hf0nNlRWEeK1D3vtacc69ff2owBT//9vqZN1zR3542M= Modules/NewRelic.swiftmodule/arm64-apple-ios-simulator.abi.json diff --git a/NewRelic.MAUI.iOS.Binding/StructsAndEnums.cs b/NewRelic.MAUI.iOS.Binding/StructsAndEnums.cs index 2e7660a..fece323 100644 --- a/NewRelic.MAUI.iOS.Binding/StructsAndEnums.cs +++ b/NewRelic.MAUI.iOS.Binding/StructsAndEnums.cs @@ -10,119 +10,122 @@ namespace iOS.NewRelic { - [Flags] - public enum NRMAFeatureFlags : ulong - { - InteractionTracing = 1uL << 1, - SwiftInteractionTracing = 1uL << 2, - CrashReporting = 1uL << 3, - NSURLSessionInstrumentation = 1uL << 4, - HttpResponseBodyCapture = 1uL << 5, - WebViewInstrumentation = 1uL << 7, - RequestErrorEvents = 1uL << 8, - NetworkRequestEvents = 1uL << 9, - HandledExceptionEvents = 1uL << 10, - DefaultInteractions = 1uL << 12, - ExperimentalNetworkingInstrumentation = 1uL << 13, - DistributedTracing = 1uL << 14, - GestureInstrumentation = 1uL << 15, - AppStartMetrics = 1uL << 16, - FedRampEnabled = 1uL << 17, - SwiftAsyncURLSessionSupport = 1uL << 18, - NewEventSystem = 1uL << 20, - OfflineStorage = 1uL << 21 - } - [Native] - public enum NRMAApplicationPlatform : ulong - { - Native, - Cordova, - PhoneGap, - Xamarin, - Unity, - Appcelerator, - ReactNative, - Flutter, - Capacitor, - Maui, - Unreal - } + [Flags] + public enum NRMAFeatureFlags : ulong + { + InteractionTracing = 1uL << 1, + SwiftInteractionTracing = 1uL << 2, + CrashReporting = 1uL << 3, + NSURLSessionInstrumentation = 1uL << 4, + HttpResponseBodyCapture = 1uL << 5, + WebViewInstrumentation = 1uL << 7, + RequestErrorEvents = 1uL << 8, + NetworkRequestEvents = 1uL << 9, + HandledExceptionEvents = 1uL << 10, + DefaultInteractions = 1uL << 12, + ExperimentalNetworkingInstrumentation = 1uL << 13, + DistributedTracing = 1uL << 14, + GestureInstrumentation = 1uL << 15, + AppStartMetrics = 1uL << 16, + FedRampEnabled = 1uL << 17, + SwiftAsyncURLSessionSupport = 1uL << 18, + NewEventSystem = 1uL << 20, + OfflineStorage = 1uL << 21, + BackgroundReporting = 1uL << 22 + } - public enum NRTraceType : uint - { - None, - ViewLoading, - Layout, - Database, - Images, - Json, - Network - } + [Native] + public enum NRMAApplicationPlatform : ulong + { + Native, + Cordova, + PhoneGap, + Xamarin, + Unity, + Appcelerator, + ReactNative, + Flutter, + Capacitor, + Maui, + Unreal + } - public enum NRNetworkFailureCode - { - Unknown = -1, - Cancelled = -999, - BadURL = -1000, - TimedOut = -1001, - UnsupportedURL = -1002, - CannotFindHost = -1003, - CannotConnectToHost = -1004, - DataLengthExceedsMaximum = -1103, - NetworkConnectionLost = -1005, - DNSLookupFailed = -1006, - HTTPTooManyRedirects = -1007, - ResourceUnavailable = -1008, - NotConnectedToInternet = -1009, - RedirectToNonExistentLocation = -1010, - BadServerResponse = -1011, - UserCancelledAuthentication = -1012, - UserAuthenticationRequired = -1013, - ZeroByteResource = -1014, - CannotDecodeRawData = -1015, - CannotDecodeContentData = -1016, - CannotParseResponse = -1017, - InternationalRoamingOff = -1018, - CallIsActive = -1019, - DataNotAllowed = -1020, - RequestBodyStreamExhausted = -1021, - FileDoesNotExist = -1100, - FileIsDirectory = -1101, - NoPermissionsToReadFile = -1102, - SecureConnectionFailed = -1200, - ServerCertificateHasBadDate = -1201, - ServerCertificateUntrusted = -1202, - ServerCertificateHasUnknownRoot = -1203, - ServerCertificateNotYetValid = -1204, - ClientCertificateRejected = -1205, - ClientCertificateRequired = -1206, - CannotLoadFromNetwork = -2000, - CannotCreateFile = -3000, - CannotOpenFile = -3001, - CannotCloseFile = -3002, - CannotWriteToFile = -3003, - CannotRemoveFile = -3004, - CannotMoveFile = -3005, - DownloadDecodingFailedMidStream = -3006, - DownloadDecodingFailedToComplete = -3007 - } + public enum NRTraceType : uint + { + None, + ViewLoading, + Layout, + Database, + Images, + Json, + Network + } + public enum NRNetworkFailureCode + { + Unknown = -1, + Cancelled = -999, + BadURL = -1000, + TimedOut = -1001, + UnsupportedURL = -1002, + CannotFindHost = -1003, + CannotConnectToHost = -1004, + DataLengthExceedsMaximum = -1103, + NetworkConnectionLost = -1005, + DNSLookupFailed = -1006, + HTTPTooManyRedirects = -1007, + ResourceUnavailable = -1008, + NotConnectedToInternet = -1009, + RedirectToNonExistentLocation = -1010, + BadServerResponse = -1011, + UserCancelledAuthentication = -1012, + UserAuthenticationRequired = -1013, + ZeroByteResource = -1014, + CannotDecodeRawData = -1015, + CannotDecodeContentData = -1016, + CannotParseResponse = -1017, + InternationalRoamingOff = -1018, + CallIsActive = -1019, + DataNotAllowed = -1020, + RequestBodyStreamExhausted = -1021, + FileDoesNotExist = -1100, + FileIsDirectory = -1101, + NoPermissionsToReadFile = -1102, + SecureConnectionFailed = -1200, + ServerCertificateHasBadDate = -1201, + ServerCertificateUntrusted = -1202, + ServerCertificateHasUnknownRoot = -1203, + ServerCertificateNotYetValid = -1204, + ClientCertificateRejected = -1205, + ClientCertificateRequired = -1206, + CannotLoadFromNetwork = -2000, + CannotCreateFile = -3000, + CannotOpenFile = -3001, + CannotCloseFile = -3002, + CannotWriteToFile = -3003, + CannotRemoveFile = -3004, + CannotMoveFile = -3005, + DownloadDecodingFailedMidStream = -3006, + DownloadDecodingFailedToComplete = -3007 + } + - public enum NRLogLevels : uint - { - None = 0, - Error = 1 << 0, - Warning = 1 << 1, - Info = 1 << 2, - Verbose = 1 << 3, - Audit = 1 << 4, - All = 65535 - } + public enum NRLogLevels : uint + { + None = 0, + Error = 1 << 0, + Warning = 1 << 1, + Info = 1 << 2, + Verbose = 1 << 3, + Audit = 1 << 4, + Debug = 1 << 5, + All = 65535 + } - public enum NRLogTargets : uint - { - None = 0, - Console = 1 << 0, - File = 1 << 1 - } + public enum NRLogTargets : uint + { + None = 0, + Console = 1 << 0, + File = 1 << 1 + } } diff --git a/README.md b/README.md index f0355c7..35424bc 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ This plugin allows you to instrument .NET MAUI mobile apps with help of native N * Pass user information to New Relic to track user sessions * Screen Tracking * Capture Offline Events and Exception +* Capture Background Events when app is in background ## Current Support: @@ -31,22 +32,46 @@ Open your solution, select the project you want to add NewRelic package to and o ## MAUI Setup -1. Open your `App.xaml.cs` and add the following code to launch NewRelic Plugin (don't forget to put proper application tokens): +1. Open your `MauiProgram.cs` and add the following code to launch NewRelic Plugin (don't forget to put proper application tokens): ```C# using NewRelic.MAUI.Plugin; ... - public App () - { - InitializeComponent(); - MainPage = new AppShell(); - + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); + }); + + builder.ConfigureLifecycleEvents(AppLifecycle => { + #if ANDROID + AppLifecycle.AddAndroid(android => android + .OnCreate((activity, savedInstanceState) => StartNewRelic())); + #endif + #if IOS + + AppLifecycle.AddiOS(iOS => iOS.WillFinishLaunching((_,__) => { + StartNewRelic(); + return false; + })); + #endif + }); + return builder.Build(); + } + + private static void StartNewRelic() + { + CrossNewRelic.Current.HandleUncaughtException(); - CrossNewRelic.Current.TrackShellNavigatedEvents(); // Set optional agent configuration - // Options are: crashReportingEnabled, loggingEnabled, logLevel, collectorAddress, crashCollectorAddress,analyticsEventEnabled, networkErrorRequestEnabled, networkRequestEnabled, interactionTracingEnabled,webViewInstrumentation, fedRampEnabled + // Options are: crashReportingEnabled, loggingEnabled, logLevel, collectorAddress, crashCollectorAddress,analyticsEventEnabled, networkErrorRequestEnabled, networkRequestEnabled, interactionTracingEnabled,webViewInstrumentation, fedRampEnabled,offlineStorageEnabled,newEventSystemEnabled,backgroundReportingEnabled // AgentStartConfiguration agentConfig = new AgentStartConfiguration(crashReportingEnabled:false); @@ -80,7 +105,14 @@ using NewRelic.MAUI.Plugin; The .NET MAUI mobile plugin allows you to track navigation events within the [.NET MAUI Shell](https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/shell/navigation). In order to do so, you only need to call: ```C# - CrossNewRelic.Current.TrackShellNavigatedEvents(); + public App() + { + InitializeComponent(); + + MainPage = new AppShell(); + CrossNewRelic.Current.TrackShellNavigatedEvents(); + + } ``` It is recommended to call this method along when starting the agent. These events will only be recorded after navigation is complete. You can find this data through the data explorer in `MobileBreadcrumb` under the name `ShellNavigated` or by query: