Skip to content

Commit

Permalink
Added privacy manifest file
Browse files Browse the repository at this point in the history
  • Loading branch information
danielepantaleone committed Feb 15, 2024
1 parent 0437c0f commit 1920482
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 0 deletions.
2 changes: 2 additions & 0 deletions GRDB.swift.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Pod::Spec.new do |s|

s.subspec 'standard' do |ss|
ss.source_files = 'GRDB/**/*.swift', 'Support/grdb_config.h'
ss.resources = 'GRDB/PrivacyInfo.xcprivacy'
ss.framework = 'Foundation'
ss.library = 'sqlite3'
ss.xcconfig = {
Expand All @@ -27,6 +28,7 @@ Pod::Spec.new do |s|

s.subspec 'SQLCipher' do |ss|
ss.source_files = 'GRDB/**/*.swift', 'Support/SQLCipher_config.h'
ss.resources = 'GRDB/PrivacyInfo.xcprivacy'
ss.framework = 'Foundation'
ss.dependency 'SQLCipher', '>= 3.4.2'
ss.xcconfig = {
Expand Down
2 changes: 2 additions & 0 deletions GRDB.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -852,6 +852,7 @@
56FF453F1D2C23BA00F21EF9 /* TableRecordDeleteTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRecordDeleteTests.swift; sourceTree = "<group>"; };
56FF45551D2CDA5200F21EF9 /* RecordUniqueIndexTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecordUniqueIndexTests.swift; sourceTree = "<group>"; };
6340BF7F1E5E3F7900832805 /* RecordPersistenceConflictPolicy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecordPersistenceConflictPolicy.swift; sourceTree = "<group>"; };
648704AD2B7E66390036480B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
C96C0F242084A442006B2981 /* SQLiteDateParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SQLiteDateParser.swift; sourceTree = "<group>"; };
D263F40926C613090038B07F /* DatabaseColumnEncodingStrategyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseColumnEncodingStrategyTests.swift; sourceTree = "<group>"; };
DC2393C61ABE35F8003FF113 /* GRDB-Bridging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GRDB-Bridging.h"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1737,6 +1738,7 @@
children = (
56A2FA3524424D2A00E97D23 /* Export.swift */,
566DDE0C288D763C0000DCFB /* Fixits.swift */,
648704AD2B7E66390036480B /* PrivacyInfo.xcprivacy */,
56A2386F1B9C75030082EB20 /* Core */,
567B5BDF2AD3284100629622 /* Dump */,
5698AC291D9E5A480056AF8C /* FTS */,
Expand Down
14 changes: 14 additions & 0 deletions GRDB/PrivacyInfo.xcprivacy
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypes</key>
<array/>
<key>NSPrivacyTrackingDomains</key>
<array/>
<key>NSPrivacyAccessedAPITypes</key>

This comment has been minimized.

Copy link
@ChristianOrgler

This comment has been minimized.

This comment has been minimized.

Copy link
@ChristianOrgler

This comment has been minimized.

Copy link
@groue

groue Apr 22, 2024

Owner

Do you happen to work with @danielepantaleone, @ChristianOrgler?

I quite dislike the behavior of you all:

  • In #1479:

    without the Privacy manifest file app apps using GRDB SDK will be automatically rejected when being submitted for Apple review on the App Store.

    Wrong and unsupported.

  • Here:

    As the library uses e.g. statfs

    Wrong and unsupported.

Start treating people and their time with respect, thank you.

This comment has been minimized.

Copy link
@ChristianOrgler

ChristianOrgler Apr 22, 2024

GRDB uses sqlite which uses statfs.

My observed behaviour since last week was:

  1. Submitting an app with GRDB included returns a warning by Apple.
  2. Submitting an app without GRDB (nothing else changed) returns in no warnings by Apple.

An app will only be rejected if Apple's scan results in a usage of an API that is not declared by it's app or included third-party sdks.

Next test: Add the used API in the app's privacy file and check if a warning will be returned with GRDB included. Good luck!

This comment has been minimized.

Copy link
@danielepantaleone

danielepantaleone Apr 22, 2024

Author Contributor

Hi,

It looks like the statfs functions is part of SQLiteCustom. I guess it should be added to the privacy manifest bundled in the GRDB Custom project only (I can open a pull request about it).

Sorry I must have skipped that API usage while searching through the whole source code.

However, I already submitted a build of an app using GRDB with default SQLite and I received no complaint by Apple, so I believe @ChristianOrgler is using a custom SQLite in his app.

This comment has been minimized.

Copy link
@ChristianOrgler

ChristianOrgler Apr 22, 2024

I'll let you know what the outcome of the "add the API usage to the app" was.

This comment has been minimized.

Copy link
@groue

groue Apr 22, 2024

Owner

Please stop discussing in this commit.

  1. This conversation can not be found by other GRDB users who might find your comments useful. The proper location is an issue or a discussion. Here you are notifying me of your comments, and you ignore the PUBLIC nature of this repository. To have private conversations, contact me and we'll discuss the pricing.

  2. This repository IS NOT responsible of YOUR App Store rejections. Appeal the rejection to Apple, not here. GRDB ships an accurate privacy manifest with its SPM distribution, which does not use custom SQLite. And even when a custom SQLite build is used, there's no SQLite API that gives access to statfs or any privacy-sensitive API. And any way, IN ALL CASES, YOU ARE RESPONSIBLE FOR THE PRIVACY MANIFEST THAT SHIPS IN YOUR APP.

You are welcome to share your experience publicly, in an issue or a discussion of this repository. If I consider this experience interesting and that it should be prominently shared with other users of the library, I'll update the documentation accordingly. If you provide the reference of the feedback you have created about your eventual wrong rejection, this would also help other GRDB users.

On the other side, if you intend to write that this repository has an issue that needs fixing, check your claim, and provide both reference and evidence. I will not repeat this message, and will just ignore your lazy comments in the future. You're both under scrutiny.

In all my years as a maintainer of this library, it is the topic of the privacy manifest that has brought the worse contributors ever. Shipping a privacy manifest was supposed to be a nice convenience, but it is turning into a burden. I sympathise with the stress created by an App Store rejection, but people freak out, are not polite, make unsupported claims, spread FUD, take liberties they're not entitled to. Break this cursed loop, and start behaving like rational people, thanks. I'll remove the privacy manifest from the library as soon as I'm fed up with too many rude people.

<array/>
</dict>
</plist>
1 change: 1 addition & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ let package = Package(
name: "GRDB",
dependencies: ["CSQLite"],
path: "GRDB",
resources: [.copy("PrivacyInfo.xcprivacy")],
cSettings: cSettings,
swiftSettings: swiftSettings),
.testTarget(
Expand Down

0 comments on commit 1920482

Please sign in to comment.