From 2f69dfb404d0c9c059977f00b01610b7fcd47de0 Mon Sep 17 00:00:00 2001 From: Nan Date: Fri, 22 Mar 2024 11:32:35 -0700 Subject: [PATCH 1/3] Add target membership for the Privacy Manifests * Added the 2 existing Privacy Manifests to targets `OneSignalFramework` and `OneSignalExtension` * This is needed for SDK consumers to get the privacy manifests included in their report. --- iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj index 4f49044b5..98d5c9cf8 100644 --- a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj +++ b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj @@ -56,6 +56,8 @@ 03E56DD328405F4A006AA1DA /* OneSignalAppDelegateOverrider.m in Sources */ = {isa = PBXBuildFile; fileRef = 03E56DD228405F4A006AA1DA /* OneSignalAppDelegateOverrider.m */; }; 16664C4C25DDB195003B8A14 /* NSTimeZoneOverrider.m in Sources */ = {isa = PBXBuildFile; fileRef = 16664C4B25DDB195003B8A14 /* NSTimeZoneOverrider.m */; }; 37E6B2BB19D9CAF300D0C601 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37E6B2BA19D9CAF300D0C601 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 3C9B5B252BAE05870080C6FB /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DEDD0F582B570FEB00E6D1D1 /* PrivacyInfo.xcprivacy */; }; + 3C9B5B262BAE05930080C6FB /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DEDD0F572B570DA100E6D1D1 /* PrivacyInfo.xcprivacy */; }; 3E464ED71D88ED1F00DCF7E9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37E6B2BA19D9CAF300D0C601 /* UIKit.framework */; }; 3E66F5821D90A2C600E45A01 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E08E2701D49A5C8002176DE /* SystemConfiguration.framework */; }; 4529DED21FA81EA800CEAB1D /* NSObjectOverrider.m in Sources */ = {isa = PBXBuildFile; fileRef = 4529DED11FA81EA800CEAB1D /* NSObjectOverrider.m */; }; @@ -2146,6 +2148,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3C9B5B252BAE05870080C6FB /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2167,6 +2170,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3C9B5B262BAE05930080C6FB /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 674800ee4a9cba4c379847a19a0bab27cf611373 Mon Sep 17 00:00:00 2001 From: Nan Date: Mon, 25 Mar 2024 10:12:44 -0700 Subject: [PATCH 2/3] Add manifests for Outcomes + Core * Apple docs has called out all 4 player model modules in their "SDKs that require a privacy manifest and signature" (https://developer.apple.com/support/third-party-SDK-requirements/) - OneSignal - OneSignalCore - OneSignalExtension - OneSignalOutcomes * Since we are making a change to the other 2 existing manifest files, let's add manifest files for all the frameworks in case we may be required to update the player model SDK again due to them missing from Core and Outcomes --- .../OneSignal.xcodeproj/project.pbxproj | 8 +++++ .../OneSignalCore/PrivacyInfo.xcprivacy | 19 +++++++++++ .../OneSignalOutcomes/PrivacyInfo.xcprivacy | 34 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy create mode 100644 iOS_SDK/OneSignalSDK/OneSignalOutcomes/PrivacyInfo.xcprivacy diff --git a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj index 98d5c9cf8..a99185c9e 100644 --- a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj +++ b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj @@ -58,6 +58,8 @@ 37E6B2BB19D9CAF300D0C601 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37E6B2BA19D9CAF300D0C601 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 3C9B5B252BAE05870080C6FB /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DEDD0F582B570FEB00E6D1D1 /* PrivacyInfo.xcprivacy */; }; 3C9B5B262BAE05930080C6FB /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DEDD0F572B570DA100E6D1D1 /* PrivacyInfo.xcprivacy */; }; + 3C9B5B2A2BB1E5040080C6FB /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3C9B5B292BB1E5040080C6FB /* PrivacyInfo.xcprivacy */; }; + 3C9B5B2C2BB1E5380080C6FB /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3C9B5B2B2BB1E5380080C6FB /* PrivacyInfo.xcprivacy */; }; 3E464ED71D88ED1F00DCF7E9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37E6B2BA19D9CAF300D0C601 /* UIKit.framework */; }; 3E66F5821D90A2C600E45A01 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E08E2701D49A5C8002176DE /* SystemConfiguration.framework */; }; 4529DED21FA81EA800CEAB1D /* NSObjectOverrider.m in Sources */ = {isa = PBXBuildFile; fileRef = 4529DED11FA81EA800CEAB1D /* NSObjectOverrider.m */; }; @@ -644,6 +646,8 @@ 1AF75EAD1E8567FD0097B315 /* NSString+OneSignal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+OneSignal.m"; sourceTree = ""; }; 37747F9319147D6500558FAD /* libOneSignal.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libOneSignal.a; sourceTree = BUILT_PRODUCTS_DIR; }; 37E6B2BA19D9CAF300D0C601 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 3C9B5B292BB1E5040080C6FB /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + 3C9B5B2B2BB1E5380080C6FB /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; 3E08E2701D49A5C8002176DE /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 3E2400381D4FFC31008BDE70 /* OneSignal.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = OneSignal.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3E24003B1D4FFC31008BDE70 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -1503,6 +1507,7 @@ children = ( DE7D182127026C31002D3A5D /* Source */, DE7D17E927026B95002D3A5D /* OneSignalCore.docc */, + 3C9B5B2B2BB1E5380080C6FB /* PrivacyInfo.xcprivacy */, ); path = OneSignalCore; sourceTree = ""; @@ -1594,6 +1599,7 @@ 7A880F2923FB45CE0081F5E8 /* OSInAppMessageOutcome.h */, 7A880F2A23FB45FB0081F5E8 /* OSInAppMessageOutcome.m */, DE7D188327037F43002D3A5D /* OneSignalOutcomes.docc */, + 3C9B5B292BB1E5040080C6FB /* PrivacyInfo.xcprivacy */, ); path = OneSignalOutcomes; sourceTree = ""; @@ -2163,6 +2169,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3C9B5B2C2BB1E5380080C6FB /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2178,6 +2185,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3C9B5B2A2BB1E5040080C6FB /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy b/iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..9d82679cf --- /dev/null +++ b/iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy @@ -0,0 +1,19 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyTracking + + + diff --git a/iOS_SDK/OneSignalSDK/OneSignalOutcomes/PrivacyInfo.xcprivacy b/iOS_SDK/OneSignalSDK/OneSignalOutcomes/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..3a82de9b4 --- /dev/null +++ b/iOS_SDK/OneSignalSDK/OneSignalOutcomes/PrivacyInfo.xcprivacy @@ -0,0 +1,34 @@ + + + + + NSPrivacyCollectedDataTypes + + + NSPrivacyCollectedDataType + NSPrivacyCollectedDataTypeProductInteraction + NSPrivacyCollectedDataTypeLinked + + NSPrivacyCollectedDataTypeTracking + + NSPrivacyCollectedDataTypePurposes + + NSPrivacyCollectedDataTypePurposeAnalytics + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyTracking + + + From 1349904a905ca63d6170ba75ccdf547fca51386c Mon Sep 17 00:00:00 2001 From: Nan Date: Mon, 25 Mar 2024 10:24:59 -0700 Subject: [PATCH 3/3] add `NSPrivacyCollectedDataTypes` to Core * Apparently `NSPrivacyCollectedDataTypes` needs to be in the privacy manifest for Core even though the framework doesn't use any. * The generated report would say "Missing an expected key: 'NSPrivacyCollectedDataTypes' YourApp.app/Frameworks/OneSignalCore.framework/PrivacyInfo.xcprivacy" --- iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy b/iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy index 9d82679cf..aa319656e 100644 --- a/iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy +++ b/iOS_SDK/OneSignalSDK/OneSignalCore/PrivacyInfo.xcprivacy @@ -2,6 +2,8 @@ + NSPrivacyCollectedDataTypes + NSPrivacyAccessedAPITypes