fluttercommunity / fluttercommunity/plus_plugins

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

オープン
#3,974 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Dart
スター
1.9k
フォーク
1.3k
PR マージ指標
30日以内にマージされた PR はありません

説明

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 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
  • I searched issues in this repository and couldn't find such bug/problem
  • I searched the web for an explanation of this specific issue and could not find one
  • I searched Stack Overflow via a site-restricted web search and could not find an explanation of this specific issue
  • I read the README.md file of the plugin
  • 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.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

FPPDeviceInfoPlusPlugin.m と同梱の PrivacyInfo.xcprivacy を調査し、attributesOfFileSystemForPath:error: の呼び出しと空の NSPrivacyAccessedAPITypes 配列に注目してください。この使用方法を、Apple の理由の提示が必要な API に関するガイダンス、および #3536 と #2751 周辺の履歴と比較してください。宣言が必要かどうかを文書化し、maintainer が変更を確認した場合に manifest またはガイダンスを更新すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
dart, flutter, ios
領域
mobile, security
issue の種類
ドキュメント
難易度
4/5
見積もり時間
3〜5日
活発さ
活発
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。