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

2024-03-25 16:04

本文主要是介绍2024 Flutter iOS 隐私清单上线,5 月 1 号最后期限,你收到 「ITMS-91053」 了吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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_flutterwebview_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,官方表示可能是:

  1. 引入的插件有隐私清单 ( podspec 使用了 s.static_framework = true ),但目前你使用的是旧版本,所以需要更新插件
  2. 使用的插件没有声明隐私清单,或者隐私清单不完整

对于 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」 的问题,官方建议:

  1. 一般建议使用 use_frameworks! ,或者插件的 podspec 配置 static_framework = true 为强制静态链接,正常情况下可以把出现的警告指向插件,然后沟通插件方配合解决问题,至少清楚问题在哪里。
  2. 如果因为构建等原因,无法使用 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.yamlpubspec.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 ?如果还有什么问题,欢迎交流讨论。

这篇关于2024 Flutter iOS 隐私清单上线,5 月 1 号最后期限,你收到 「ITMS-91053」 了吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845512

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

2024/9/8 c++ smart

1.通过自己编写的class来实现unique_ptr指针的功能 #include <iostream> using namespace std; template<class T> class unique_ptr { public:         //无参构造函数         unique_ptr();         //有参构造函数         unique_ptr(

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序