diff --git a/Changelog.md b/Changelog.md index 7768e43..f8af3e2 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,7 +1,9 @@ # Changelog -## 1.7.1 +## 1.8.0 - add to mobile feature list if `autoCaptureScreenNames` is enabled +- add Privacy Manifest File PrivacyInfo.xcprivacy to iOSAgent +- update to Swift version 5.4, update GzipSwift version to 6.0.1 for spm ## 1.7.0 - introduce `autoCaptureScreenNames` to auto capture view names and `debugAllScreenNames` to debug all screen names diff --git a/Dev/InstanaAgentExample.xcodeproj/project.pbxproj b/Dev/InstanaAgentExample.xcodeproj/project.pbxproj index ba3514b..abb2155 100644 --- a/Dev/InstanaAgentExample.xcodeproj/project.pbxproj +++ b/Dev/InstanaAgentExample.xcodeproj/project.pbxproj @@ -29,6 +29,8 @@ 72976A9A2681C45800A284F6 /* Webserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72976A992681C45800A284F6 /* Webserver.swift */; }; 729C88B5270DE98200492486 /* AFNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = 729C88B4270DE98200492486 /* AFNetworking */; }; 729C88B8270DF13700492486 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 729C88B7270DF13700492486 /* Alamofire */; }; + A4059B1F2BD067A400C471B6 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A4059B1E2BD067A400C471B6 /* PrivacyInfo.xcprivacy */; }; + A412ECE52BCF3F6C007212F9 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A412ECE42BCF3F6C007212F9 /* PrivacyInfo.xcprivacy */; }; A46F87782B44DE8D00302343 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A46F87772B44DE8D00302343 /* AppDelegate.m */; }; A46F877B2B44DE8D00302343 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A46F877A2B44DE8D00302343 /* SceneDelegate.m */; }; A46F877E2B44DE8D00302343 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A46F877D2B44DE8D00302343 /* ViewController.m */; }; @@ -78,6 +80,8 @@ 727AF73A263AA0FA00B9C59B /* EventListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventListViewController.swift; sourceTree = ""; }; 72976A992681C45800A284F6 /* Webserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Webserver.swift; path = "../../Tests/InstanaAgentTests/Test helpers/Webserver.swift"; sourceTree = ""; }; 72FBE8A7263AACDB00CF2CDE /* InstanaAgentExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = InstanaAgentExample.entitlements; sourceTree = ""; }; + A4059B1E2BD067A400C471B6 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + A412ECE42BCF3F6C007212F9 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; A46F87742B44DE8D00302343 /* ObjectiveCAppExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ObjectiveCAppExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; A46F87762B44DE8D00302343 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; A46F87772B44DE8D00302343 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; @@ -186,6 +190,7 @@ 727AF691263A9EBE00B9C59B /* Assets.xcassets */, 727AF693263A9EBE00B9C59B /* LaunchScreen.storyboard */, 727AF696263A9EBE00B9C59B /* Info.plist */, + A412ECE42BCF3F6C007212F9 /* PrivacyInfo.xcprivacy */, ); path = InstanaAgentExample; sourceTree = ""; @@ -222,6 +227,7 @@ A46F87842B44DE8E00302343 /* LaunchScreen.storyboard */, A46F87872B44DE8E00302343 /* Info.plist */, A46F87882B44DE8E00302343 /* main.m */, + A4059B1E2BD067A400C471B6 /* PrivacyInfo.xcprivacy */, ); path = ObjectiveCAppExample; sourceTree = ""; @@ -379,6 +385,7 @@ files = ( 727AF695263A9EBE00B9C59B /* LaunchScreen.storyboard in Resources */, 727AF692263A9EBE00B9C59B /* Assets.xcassets in Resources */, + A412ECE52BCF3F6C007212F9 /* PrivacyInfo.xcprivacy in Resources */, 727AF690263A9EBD00B9C59B /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -396,6 +403,7 @@ files = ( A46F87862B44DE8E00302343 /* LaunchScreen.storyboard in Resources */, A46F87832B44DE8E00302343 /* Assets.xcassets in Resources */, + A4059B1F2BD067A400C471B6 /* PrivacyInfo.xcprivacy in Resources */, A46F87812B44DE8D00302343 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Dev/InstanaAgentExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Dev/InstanaAgentExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index e4ffe48..a17168d 100644 --- a/Dev/InstanaAgentExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Dev/InstanaAgentExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/Alamofire/Alamofire.git", "state": { "branch": null, - "revision": "d120af1e8638c7da36c8481fd61a66c0c08dc4fc", - "version": "5.4.4" + "revision": "f455c2975872ccd2d9c81594c658af65716e9b9a", + "version": "5.9.1" } }, { @@ -24,8 +24,8 @@ "repositoryURL": "https://github.com/1024jp/GzipSwift.git", "state": { "branch": null, - "revision": "ba0b6cb51cc6202f896e469b87d2889a46b10d1b", - "version": "5.1.1" + "revision": "731037f6cc2be2ec01562f6597c1d0aa3fe6fd05", + "version": "6.0.1" } } ] diff --git a/Dev/InstanaAgentExample/PrivacyInfo.xcprivacy b/Dev/InstanaAgentExample/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..197e353 --- /dev/null +++ b/Dev/InstanaAgentExample/PrivacyInfo.xcprivacy @@ -0,0 +1,8 @@ + + + + + NSPrivacyCollectedDataTypes + + + diff --git a/Dev/InstanaAgentExample/PrivacyInfo_default.xcprivacy b/Dev/InstanaAgentExample/PrivacyInfo_default.xcprivacy deleted file mode 100644 index c7f2668..0000000 --- a/Dev/InstanaAgentExample/PrivacyInfo_default.xcprivacy +++ /dev/null @@ -1,31 +0,0 @@ - - - - - NSPrivacyTracking - - NSPrivacyTrackingDomains - - placeholder domain of INSTANA_REPORTING_URL - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp - NSPrivacyAccessedAPITypeReasons - - DDA9.1 - - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - NSPrivacyAccessedAPITypeReasons - - CA92.1 - - - - - diff --git a/Dev/InstanaAgentExample/PrivacyInfo_full.xcprivacy b/Dev/InstanaAgentExample/PrivacyInfo_full.xcprivacy deleted file mode 100644 index cfda647..0000000 --- a/Dev/InstanaAgentExample/PrivacyInfo_full.xcprivacy +++ /dev/null @@ -1,82 +0,0 @@ - - - - - NSPrivacyTracking - - NSPrivacyTrackingDomains - - placeholder domain of INSTANA_REPORTING_URL - - NSPrivacyCollectedDataTypes - - - NSPrivacyCollectedDataType - NSPrivacyCollectedDataTypeCrashData - NSPrivacyCollectedDataTypeLinked - - NSPrivacyCollectedDataTypeTracking - - NSPrivacyCollectedDataTypePurposes - - NSPrivacyCollectedDataTypePurposeAnalytics - - - - NSPrivacyCollectedDataType - NSPrivacyCollectedDataTypeName - NSPrivacyCollectedDataTypeLinked - - NSPrivacyCollectedDataTypeTracking - - NSPrivacyCollectedDataTypePurposes - - NSPrivacyCollectedDataTypePurposeAnalytics - - - - NSPrivacyCollectedDataType - NSPrivacyCollectedDataTypeEmailAddress - NSPrivacyCollectedDataTypeLinked - - NSPrivacyCollectedDataTypeTracking - - NSPrivacyCollectedDataTypePurposes - - NSPrivacyCollectedDataTypePurposeAnalytics - - - - NSPrivacyCollectedDataType - NSPrivacyCollectedDataTypeUserID - NSPrivacyCollectedDataTypeLinked - - NSPrivacyCollectedDataTypeTracking - - NSPrivacyCollectedDataTypePurposes - - NSPrivacyCollectedDataTypePurposeAnalytics - - - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp - NSPrivacyAccessedAPITypeReasons - - DDA9.1 - - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - NSPrivacyAccessedAPITypeReasons - - CA92.1 - - - - - diff --git a/Dev/ObjectiveCAppExample/PrivacyInfo.xcprivacy b/Dev/ObjectiveCAppExample/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..cf0e2e8 --- /dev/null +++ b/Dev/ObjectiveCAppExample/PrivacyInfo.xcprivacy @@ -0,0 +1,21 @@ + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + + + + + + diff --git a/InstanaAgent.podspec b/InstanaAgent.podspec index 131997c..26a0e39 100644 --- a/InstanaAgent.podspec +++ b/InstanaAgent.podspec @@ -16,7 +16,7 @@ Pod::Spec.new do |s| # s.name = "InstanaAgent" - s.version = "1.7.1" + s.version = "1.8.0" s.summary = "Instana iOS agent." # This description is used to generate tags and improve search results. @@ -92,6 +92,9 @@ Pod::Spec.new do |s| # s.dependency "GzipSwift" + s.resource_bundle = { + "InstanaAgent" => "Sources/InstanaAgent/Resources/PrivacyInfo.xcprivacy" + } # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # # @@ -100,6 +103,6 @@ Pod::Spec.new do |s| # you can include multiple dependencies to ensure it works. s.requires_arc = true - s.swift_versions = ['5.1', '5.2', '5.3'] + s.swift_versions = '5.4' end diff --git a/Package.resolved b/Package.resolved index fe229de..ea0b3b7 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,16 +1,14 @@ { - "object": { - "pins": [ - { - "package": "Gzip", - "repositoryURL": "https://github.com/1024jp/GzipSwift.git", - "state": { - "branch": null, - "revision": "ba0b6cb51cc6202f896e469b87d2889a46b10d1b", - "version": "5.1.1" - } + "pins" : [ + { + "identity" : "gzipswift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/1024jp/GzipSwift.git", + "state" : { + "revision" : "731037f6cc2be2ec01562f6597c1d0aa3fe6fd05", + "version" : "6.0.1" } - ] - }, - "version": 1 + } + ], + "version" : 2 } diff --git a/Package.swift b/Package.swift index 9f25638..7158faa 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.1 +// swift-tools-version:5.4 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -13,7 +13,7 @@ let package = Package( targets: ["InstanaAgent"]), ], dependencies: [ - .package(url: "https://github.com/1024jp/GzipSwift.git", from: "5.0.0") + .package(url: "https://github.com/1024jp/GzipSwift.git", from: "6.0.1") ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. @@ -21,7 +21,14 @@ let package = Package( .target(name: "ImageTracker", dependencies: [], publicHeadersPath: ""), .target( name: "InstanaAgent", - dependencies: ["Gzip", "ImageTracker"]), + dependencies: [ + .product(name: "Gzip", package: "GzipSwift"), + "ImageTracker" + ], + resources: [ + .copy("Resources/PrivacyInfo.xcprivacy") + ] + ), .testTarget( name: "InstanaAgentTests", dependencies: ["InstanaAgent", "ImageTracker"]), diff --git a/README.md b/README.md index cb8114b..8ef0142 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ iOS agent to use Instana for your iOS app. The monitoring currently supports: - Capture HTTP sessions automatically or manually - Automatic delivery of device & app information (like bundle identifer, version, language, iOS device information) - Send custom event (This can be especially helpful to send logs, to track additional performance metrics or errors.) -- [Tech Preview] Crash reporting, plus CPU exception, disk write exception, hang diagnostics and app launch diagnostics +- [Beta] Crash reporting, plus CPU exception, disk write exception, hang diagnostics and app launch diagnostics +- [Beta] Automatic screen name capture Optionally: - Ignore full URLs by regex or full URLs @@ -20,7 +21,7 @@ Optionally: ## Requirements - iOS 11+ -- Swift 5.1+ +- Swift 5.4+ ## Installation diff --git a/Sources/InstanaAgent/Configuration/VersionConfig.swift b/Sources/InstanaAgent/Configuration/VersionConfig.swift index f50e7a0..9020aaf 100644 --- a/Sources/InstanaAgent/Configuration/VersionConfig.swift +++ b/Sources/InstanaAgent/Configuration/VersionConfig.swift @@ -1,3 +1,3 @@ struct VersionConfig { - static let agentVersion = "1.7.1" + static let agentVersion = "1.8.0" } diff --git a/Dev/InstanaAgentExample/PrivacyInfo_crash.xcprivacy b/Sources/InstanaAgent/Resources/PrivacyInfo.xcprivacy similarity index 60% rename from Dev/InstanaAgentExample/PrivacyInfo_crash.xcprivacy rename to Sources/InstanaAgent/Resources/PrivacyInfo.xcprivacy index 864a07a..4bdfc21 100644 --- a/Dev/InstanaAgentExample/PrivacyInfo_crash.xcprivacy +++ b/Sources/InstanaAgent/Resources/PrivacyInfo.xcprivacy @@ -2,43 +2,29 @@ - NSPrivacyTracking - - NSPrivacyTrackingDomains + NSPrivacyAccessedAPITypes - placeholder domain of INSTANA_REPORTING_URL + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + NSPrivacyCollectedDataTypes NSPrivacyCollectedDataType - NSPrivacyCollectedDataTypeCrashData + NSPrivacyCollectedDataTypeOtherDiagnosticData NSPrivacyCollectedDataTypeLinked NSPrivacyCollectedDataTypeTracking NSPrivacyCollectedDataTypePurposes - NSPrivacyCollectedDataTypePurposeAnalytics - - - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp - NSPrivacyAccessedAPITypeReasons - - DDA9.1 - - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - NSPrivacyAccessedAPITypeReasons - - CA92.1 + NSPrivacyCollectedDataTypePurposeAppFunctionality diff --git a/Tests/InstanaAgentTests/Configuration/InstanaSystemUtilsTests.swift b/Tests/InstanaAgentTests/Configuration/InstanaSystemUtilsTests.swift index bc58a16..831dacb 100644 --- a/Tests/InstanaAgentTests/Configuration/InstanaSystemUtilsTests.swift +++ b/Tests/InstanaAgentTests/Configuration/InstanaSystemUtilsTests.swift @@ -5,7 +5,7 @@ class InstanaSystemUtilsTests: InstanaTestCase { func test_AgentVersion() { // Then - AssertTrue(InstanaSystemUtils.agentVersion == "1.7.1") + AssertTrue(InstanaSystemUtils.agentVersion == "1.8.0") } func test_systemVersion() {