
这儿每天共享一个 iOS 的新知识,快来重视我吧
拜访敏感数据的 App 新规
苹果最近在 Apple Developer 上发了篇新闻公告,对需求拜访用户敏感数据的 App 增加了审阅要求。
这件事的缘由是苹果发现有一小部分 API 或许会被开发者乱用,经过信息指纹收集有关用户设备的信息。
早在本年 6 月的 WWDC23 上苹果就宣布,开发人员需求在其应用程序的隐私清单中声明运用某些 API 的原因,现在正式放出了这份需求声明的 API 列表。
新规详情
从本年(2023年)秋天开端,大概是 9 月中旬左右,如果你将你的 App 上传到 App Store Connect,你的应用程序运用到了需求声明原因的 API(也包括你引入的第三方 SDK),但是你没有在隐私清单文件中增加原因,那么 Apple 会给你发送一封警告性的邮件。
从 2024 年春季开端,大概是 3 月左右,没有在隐私清单文件中说明运用原因的 App 将会被拒审阅。
需求声明原因的 API 有哪些?
1、NSUserdefaults 相关 API
这个 API 是被评论最多争议最大的,由于简直每个 App 都会用到,并且由于有沙盒维护,每个 app 的存储空间是隔离的,这都要申报理由,的确十分荒谬。
2、获取文件时刻戳相关的 API
-
creationDate
-
modificationDate
-
fileModificationDate
-
contentModificationDateKey
-
creationDateKey
-
getattrlist(::::_:)
-
getattrlistbulk(::::_:)
-
fgetattrlist(::::_:)
-
stat
-
fstat(::)
-
fstatat(::::)
-
lstat(::)
-
getattrlistat(::::::)
3、获取系统启动时刻的 API
大多数衡量 App 启动时刻的 APM 库会用到这个 API。
-
systemUptime
-
mach_absolute_time()
4、磁盘空间 API
-
volumeAvailableCapacityKey
-
volumeAvailableCapacityForImportantUsageKey
-
volumeAvailableCapacityForOpportunisticUsageKey
-
volumeTotalCapacityKey
-
systemFreeSize
-
systemSize
-
statfs(::)
-
statvfs(::)
-
fstatfs(::)
-
fstatvfs(::)
-
getattrlist(::::_:)
-
fgetattrlist(::::_:)
-
getattrlistat(::::::)
5、活动键盘 API
这个 API 可以来确定当时用户文本输入的首要语言,有些 App 或许会用来标记用户。
- activeInputModes
如安在 Xcode 中装备
由于现在 Xcode 15 正式版还没有发布,下边的操作是在 Beta 版别进行的。
在 Xcode 15 中隐私部分悉数归类到了一个后缀为 .xcprivacy
的文件中,创立项目时默认没有生成这个文件,我们先来创立一下。
打开项目后,按快捷键 Command + N
新建文件,在面板中搜索 privacy
,挑选 App Pirvacy
点击下一步创立这个文件。

这个文件是个 plist
格局的面板,默认情况下长这样:

然后点击加号,创立一个 Privacy Accessed API Types
的 Key
,这是一个数组,用来包括一切你 App 运用到需求申明原因的 API。

在这个数组下继续点击加号,创立一个 Item
,会看到两个选项:
-
Privacy Accessed API Type:用到的 API 类型
-
Privacy Accessed API Reasons:运用这个 API 的原因(也是个数组,由于或许包括多个原因)

这两个 Key 都创立出来,然后在 Privacy Accessed API Type
一栏点击右侧的菜单,菜单中会列出上边提到的一切 API,挑选你需求申报的 API,我这儿就拿 UserDefault
来举例:

然后在 Privacy Accessed API Reasons
一览中点击加号,在右侧的选项框中挑选对应的原因,每个 API 对应的原因都会列出来,可以到苹果的官方文档上查看这个 API 的原因对应的是哪个,比方 UserDefault 对应的是 CA92.1
,我这儿就挑选这个:

到此,申报原因就完成了,原因不需求自己填写,直接运用苹果给出的选项就可以了,还是蛮简略的。
参考资料
[1]
公告原文: developer.apple.com/news/?id=z6…
[2]
需求在 App 内声明的 API 列表: developer.apple.com/documentati…
[3]
API 列表对应的原因: developer.apple.com/documentati…
点击手刺重视我,每天带你学习一个新知识
本文同步自微信公众号 “iOS新知”,每天准时共享一个新知识,这儿只是同步,想要及时学到就来重视我吧!