From 9faa68dc15c267ef51119f357c22ee8752d7b50c Mon Sep 17 00:00:00 2001 From: DreamPiggy Date: Tue, 12 Sep 2023 15:40:57 +0800 Subject: [PATCH] Added xcprivacy to framework target and SPM CocoaPods does not has this feature currently --- Package.swift | 6 +++-- README.md | 9 +++++++- SDWebImage.xcodeproj/project.pbxproj | 6 +++++ SDWebImage/Resources/PrivacyInfo.xcprivacy | 1 + .../Resources/PrivacyInfo.xcprivacy | 1 + WebImage/PrivacyInfo.xcprivacy | 23 +++++++++++++++++++ 6 files changed, 43 insertions(+), 3 deletions(-) create mode 120000 SDWebImage/Resources/PrivacyInfo.xcprivacy create mode 120000 SDWebImageMapKit/Resources/PrivacyInfo.xcprivacy create mode 100644 WebImage/PrivacyInfo.xcprivacy diff --git a/Package.swift b/Package.swift index b92b7ff4..c713dc27 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.0 +// swift-tools-version:5.3 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -32,6 +32,7 @@ let package = Package( dependencies: [], path: "SDWebImage", sources: ["Core", "Private"], + resources: [.copy("Resources/PrivacyInfo.xcprivacy")], cSettings: [ .headerSearchPath("Core"), .headerSearchPath("Private") @@ -41,7 +42,8 @@ let package = Package( name: "SDWebImageMapKit", dependencies: ["SDWebImage"], path: "SDWebImageMapKit", - sources: ["MapKit"] + sources: ["MapKit"], + resources: [.copy("Resources/PrivacyInfo.xcprivacy")] ) ] ) diff --git a/README.md b/README.md index a9a971df..26f39416 100644 --- a/README.md +++ b/README.md @@ -335,7 +335,14 @@ At this point your workspace should build without error. If you are having probl community can help you solve it. ## Data Collection Practices -As required by the [App privacy details on the App Store](https://developer.apple.com/app-store/app-privacy-details/), here's SDWebImage's list of [Data Collection Practices](https://sdwebimage.github.io/DataCollection/index.html). + +From Xcode 15, we provide the new `PrivacyInfo.xcprivacy` file for privacy details, see [Describing data use in privacy manifests](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests?language=objc) + +You can exports the privacy report after archive your App by integrate SDWebImage via SwiftPM/XCFramework (Note: CocoaPods does not support currently). + +For old version, as required by the [App privacy details on the App Store](https://developer.apple.com/app-store/app-privacy-details/), here's SDWebImage's list of [Data Collection Practices](https://sdwebimage.github.io/DataCollection/index.html). + + ## Author - [Olivier Poitrey](https://github.com/rs) diff --git a/SDWebImage.xcodeproj/project.pbxproj b/SDWebImage.xcodeproj/project.pbxproj index 1ed93492..7c0332dd 100644 --- a/SDWebImage.xcodeproj/project.pbxproj +++ b/SDWebImage.xcodeproj/project.pbxproj @@ -237,6 +237,8 @@ 32E67311235765B500DB4987 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 32E6730F235765B500DB4987 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; 32E67312235765B500DB4987 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E67310235765B500DB4987 /* SDDisplayLink.m */; }; 32E67313235765B500DB4987 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E67310235765B500DB4987 /* SDDisplayLink.m */; }; + 32EABAE62AB04CCD0004EB48 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3286569B2AB045DC00E0BDB7 /* PrivacyInfo.xcprivacy */; }; + 32EABAE72AB04CCE0004EB48 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3286569B2AB045DC00E0BDB7 /* PrivacyInfo.xcprivacy */; }; 32EB6D8E206D132E005CAEF6 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 320224BA203979BA00E9F285 /* SDAnimatedImageRep.m */; }; 32EB6D91206D132E005CAEF6 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 320224BA203979BA00E9F285 /* SDAnimatedImageRep.m */; }; 32F21B5320788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F21B4F20788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -465,6 +467,7 @@ 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = Core/SDImageAPNGCoder.h; sourceTree = ""; }; 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = Core/SDImageAPNGCoder.m; sourceTree = ""; }; 327F2E82245AE1650075F846 /* SDWebImageOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = Core/SDWebImageOperation.m; sourceTree = ""; }; + 3286569B2AB045DC00E0BDB7 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; 3287E6CD244C0C1400007311 /* MKAnnotationView+WebCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MKAnnotationView+WebCache.m"; sourceTree = ""; }; 3287E6CE244C0C1400007311 /* MKAnnotationView+WebCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MKAnnotationView+WebCache.h"; sourceTree = ""; }; 328BB69A2081FED200760D6C /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; @@ -751,6 +754,7 @@ 4A2CAE011AB4BB5400B6BC39 /* Supporting Files */ = { isa = PBXGroup; children = ( + 3286569B2AB045DC00E0BDB7 /* PrivacyInfo.xcprivacy */, 4A2CAE021AB4BB5400B6BC39 /* Info.plist */, ); name = "Supporting Files"; @@ -1106,6 +1110,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 32EABAE62AB04CCD0004EB48 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1113,6 +1118,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 32EABAE72AB04CCE0004EB48 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/SDWebImage/Resources/PrivacyInfo.xcprivacy b/SDWebImage/Resources/PrivacyInfo.xcprivacy new file mode 120000 index 00000000..44bc9be3 --- /dev/null +++ b/SDWebImage/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1 @@ +../../WebImage/PrivacyInfo.xcprivacy \ No newline at end of file diff --git a/SDWebImageMapKit/Resources/PrivacyInfo.xcprivacy b/SDWebImageMapKit/Resources/PrivacyInfo.xcprivacy new file mode 120000 index 00000000..44bc9be3 --- /dev/null +++ b/SDWebImageMapKit/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1 @@ +../../WebImage/PrivacyInfo.xcprivacy \ No newline at end of file diff --git a/WebImage/PrivacyInfo.xcprivacy b/WebImage/PrivacyInfo.xcprivacy new file mode 100644 index 00000000..276f7610 --- /dev/null +++ b/WebImage/PrivacyInfo.xcprivacy @@ -0,0 +1,23 @@ + + + + + NSPrivacyTracking + + NSPrivacyCollectedDataTypes + + NSPrivacyTrackingDomains + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + +