2024 Flutter iOS 隐私清单上线,5 月 1 号最后限期,你收到 「ITMS-91053 ...

打印 上一主题 下一主题

主题 813|帖子 813|积分 2439

2023 年底的时候,我就发过了 《Flutter 上了 Apple 第三方重大列表,2024 春季 iOS 的隐私清单究竟是什么?》 干系内容,如果你还对隐私清单等干系要求不了解,发起先看看前文。
如果你已经有干系了解,而且近期也提交过 App 到 App Store ,那么你大概已经收到过雷同 「ITMS-91053」 的干系警告邮件,这就是隐私清单里的「必要来由的 API 声明」,也是隐私清单里最各人最轻易遇到的题目之一,重要包括了:


  • File timestamp APIs
  • System boot time APIs
  • Disk space APIs
  • Active keyboard APIs
  • User defaults APIs

邮件里也写明白,最后的要求限期是 5 月 1 号,以是正如去年说的那样,春季已往后,也是时候面对隐私清单的适配要求了
实际上在 Flutter 进度里,官方和主流的插件基本都已经完成了隐私清单的适配要求,而如今重要出如今 Upcoming third-party SDK requirements 列表的插件,还没适配动静的应该就是 fluttertoast 了,尽管已经有了 PR #489 ,但是暂时还没有干系回应。

   不外题目不大,最多自己 fork 一个 merge 下。
  另外针对之前所说的,对于 “网络” 的定义如今很含糊的题目,雷同 webview_flutter ,webview_flutter 自己不网络任何内容,但是App 可以用来 webview_flutter 网络浏览历史记载,然后这如安在 SDK 的隐私清单里去表现?
官方的回复是,如果SDK没有网络任何数据,那么应该提供一个隐私清单,概述没有网络任何信息,以是这也是 webview_flutter 等插件如今的适配逻辑之一。


   没适配的插件,也可以思量自己 fork 过来通过雷同方式兼容。
  接着我们聊 「ITMS-91053」,如果你收到 ITMS-91053: Missing API declaration - Your app’s code in the “Runner” file ,起首要做的就是确定你的 Flutter SDK 是否升级到了 3.19 ,因为 Engine 的适配官方是在 3.19 做的,固然,如果你就是想做「钉子户」,那么你也可以参考下方的 issue 和 pr ,自己 fork 个 engine 去适配支持:


  • #48951 Add xcprivacy privacy manifest to iOS framework
  • #131494 Find Required Reason API usage in Flutter Engine and create Privacy Manifest
另外,并不是看到 Your app’s code in the “Runner” file  就是说明是 Engine 的隐私清单有题目,因为构建方式也大概会影响到警告的提示。
Flutter 3.19 自己已经有一个合规的隐私清单,如果你在 3.19 还能遇到 ITMS-91053: Missing API declaration - Your app’s code in the “Runner” file,官方表示大概是:

  • 引入的插件有隐私清单 ( podspec 使用了 s.static_framework = true ),但如今你使用的是旧版本,以是需要更新插件
  • 使用的插件没有声明隐私清单,或者隐私清单不完备
对于 1 的情况,可以将插件的依靠版本升级到最新,然后不要忘了运行一次 flutter pub upgrade ,因为许多插件最近才添加清单支持,另外运行 flutter pub upgrade 的必要性在于:
例如 shared_preferences 如今是 2.2.2,其清单文件是在其依靠的 shared_preferences_foundation 上 ,而 shared_preferences_foundation 在其内部依靠版本是 ^2.2.0 ,但是其实包含隐私清单的包是 2.3.5 ,以是如果你不执行 flutter pub upgrade ,那么你本地的 shared_preferences 插件所使用的 foundation 依靠大概会是旧版本

   以是就算升级完插件后,查看插件里是否包含 privacy 文件也黑白常重要的一个步调

  另外,对于项目标 Podfile 构建是否使用 use_frameworks! ,也是如今 「ITMS-91053」 警告的重要题目之一 ,为了更好区分和解决 「ITMS-91053」 的题目,官方发起:

  • 一样平常发起使用 use_frameworks! ,或者插件的 podspec 设置 static_framework = true 为强制静态链接,正常情况下可以把出现的警告指向插件,然后沟通插件方共同解决题目,至少清楚题目在哪里。
  • 如果因为构建等原因,无法使用 1 的方式,或者说可以不使用 1 ,那么可以直接在 App 端强制创建隐私清单 ,然后通过 find build/ios/iphoneos -name *.xcprivacy  在的项目中运行,对于全部 <some_plugin_name>.bundle/PrivacyInfo.xcprivacy 查看它们所做的声明,然后合并复制到上面创建的文件,然后自己补充缺少的。
因为 Flutter 如今在处理 「ITMS-91053」 题目上,最难就是找到警告来自哪个插件,又是因为什么原因不符合, 例如一开始 permission_handler_apple 插件做了隐私清单说明,但是其实少了 NSUserDefaults ,因为它设置了 static_framework = true,以是导致 NSUserDefaults 代码位于 Runner ,一开始找题目的时候,因为它已经适配过了,各人都忽略了 permission_handler ,后来才发现,如今 flutter-permission-handler #1292 已经修复了这个题目。
最后,如果你在向官方提出干系 issue 时,例如在 #145269 下提出干系题目的时候,最好是附上下列设置,以便于快速定位题目:


  • pubspec.yaml 和 pubspec.lock ,特别是 pubspec.lock
  • ios/Podfile
  • 是否自己修改过 Runner 中的 native 代码
  • 如果方便提供 .ipa 或 .xcarchive
如今来说一些题目照旧存在,而存在的原因基本是定位到是哪个插件,和如果理解这样做是否符合条款,如今 issue 都有人提供 create demo 包提交测试是否会触发 「ITMS-91053」,只能说各人都还在“以身试法”,前任种树后人乘凉,感爱好的可以继续关注:


  • https://github.com/flutter/flutter/issues/143232
  • https://github.com/flutter/flutter/issues/131940
  • https://github.com/flutter/flutter/issues/145269
那么 ,5 月 1 号立刻就要来了,你是继续做钉子户,照旧升级到 Flutter 3.19 ?如果还有什么题目,接待交流讨论。
5月更新

如今,从 5 月 1 日开始强制执行的一系列内容会仅限于动态框架,不外预计插件的静态构建要求的强制执行会在未往返归。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表