苹果App Store审核新规已于2024年5月1日生效,如果你提交审核时遇到如下错误:ITMS-91053: Missing API declaration - Your app’s code in the 你的App名称 file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryUserDefaults. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api

说明你的项目中缺少相关API调用的使用说明。

根据苹果官方文档解释,目前需要显示声明使用的目的的权限包含五大类:

1. File timestamp APIs - 读取文件系统时间相关权限

2. System boot time APIs - 读取系统启动时间相关权限

3. Disk space APIs - 读取磁盘信息相关权限

4. Active keyboard APIs - 读取键盘信息相关权限

5. User defaults APIs - 读取用户首选项相关权限

而我们需要做的就是在一个数组中添加对应的key,value对即可,为方便理解下面以编程语言中的数组或字典/Map的写法举例来说明User defaults权限的配置结构。

整个配置是一个名叫App Privacy Configuration的JSON对象,对象里的key叫Privacy Accessed API Types,这个key对应的值是一个数组如下:

# 编程语言结构表述法
{
	Privacy Accessed API Types: [
		{
			Privacy Accessed API Type: User Defaults,
			Privacy Accesed API Reasons: [
				"CA92.1: Access info from same app, per documentation"
			]
		}
	]
}

Privacy Accessed API Types键的数组值里的每个数组元素又是一个JSON对象,这个JSON对象有两个key,一个key叫Privacy Accessed API Type用来说明权限的类型(就是上面提到的五大类权限),另一个key叫Privacy Accesed API Reasons用来说明具体的使用理由,而Privacy Accesed API Reasons这个键对应的值又是一个字符串数组。

【所以,重点来了】

最终的解决办法如下:打开Xcode -> Xcode顶部菜单File -> New新建文件 -> 选择文件File… -> 选择iOS这个Tab标签 -> 选中App Privacy -> 点击Next -> 注意一定要保存为 PrivacyInfo 这个文件名

新建PrivacyInfo文件成功后,再根据你自己的情况向这个PrivacyInfo文件中添加对应的说明项即可,这里以我使用到的Disk space APIs和User defaults APIs这两个权限为例进行举例。

添加完成后最终的截图如下: Xcode配置权限说明解决ITMS-91053

以上就是解决提交给苹果审核时 Itms 91053 Missing Api Declaration 错误的解决方案。