fluttercommunity / fluttercommunity/plus_plugins

[Question]: device_info_plus — Privacy Manifest declarations for iOS disk space APIs

Open
#3,974 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Dart
Stars
1.9k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

### What is your question?

Could you help clarify whether the iOS disk-space retrieval in `device_info_plus 13.2.0` requires a required-reason API declaration in its Privacy Manifest? If there is existing guidance about this implementation, I would appreciate a pointer.

#### What I checked

In the package published on pub.dev:

- `FPPDeviceInfoPlusPlugin.m` calls `attributesOfFileSystemForPath:error:` inside `getDeviceInfo`, then reads free and total disk space from the returned dictionary using the `NSFileSystemFreeSize` and `NSFileSystemSize` keys.
- The bundled `PrivacyInfo.xcprivacy` has an empty `NSPrivacyAccessedAPITypes` array.

I also inspected an unsigned iOS Release build. The resulting `device_info_plus` framework contains references to the disk-space API, and its bundled manifest still has an empty `NSPrivacyAccessedAPITypes` array.

For context, my app obtains OS information through the Aptabase Flutter SDK. Aptabase does not include the disk-space values in its outgoing payload, but they are retrieved by the native plugin along with the OS information.

[Apple's required-reason API list](https://developer.apple.com/documentation/bundleresources/app-privacy-configuration/nsprivacyaccessedapitypes/nsprivacyaccessedapitype) lists `systemFreeSize` and `systemSize` under disk space. This implementation reads the values from the dictionary returned by `attributesOfFileSystemForPath:error:` instead. Am I understanding correctly that this retrieval method also needs a reason declaration? Is there a rationale or guidance for leaving the array empty in this case?

**I have not submitted this configuration to the App Store.** This question is based on source inspection and an unsigned Release build; I am not reporting an Apple warning or an App Review rejection.

I found #2751, but that discussion predates the disk-space retrieval added in #3536, so I thought this might be a separate question. Please let me know if I have overlooked an existing explanation or issue.

#### Environment

- device_info_plus: 13.2.0
- Flutter: 3.44.0
- Xcode: 26.6
- iOS Release build, unsigned

### Checklist before submitting a question

- [x] I searched issues in this repository and couldn't find such bug/problem
- [x] I searched the web for an explanation of this specific issue and could not find one
- [x] I searched Stack Overflow via a site-restricted web search and could not find an explanation of this specific issue
- [x] I read the README.md file of the plugin
- [x] I am using the latest version of the plugin
- [ ] All dependencies are up to date with `flutter pub upgrade`
- [ ] I did a `flutter clean`
- [ ] I tried running the example project

The unchecked items have not been performed. This is a question about the published native source and bundled manifest, rather than a runtime or build failure; I have left those items unchecked rather than claiming they were completed.

Contributor guide

Open the contributing guide

Research direction

Inspect FPPDeviceInfoPlusPlugin.m and the bundled PrivacyInfo.xcprivacy, focusing on the attributesOfFileSystemForPath:error: call and the empty NSPrivacyAccessedAPITypes array. Compare that usage with Apple's required-reason API guidance and the history around #3536 and #2751. Done means documenting whether a declaration is required and updating the manifest or guidance if maintainers confirm a change.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart, flutter, ios
Domain
mobile, security
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.