iOS17 隐私协议适配详解

news2024/12/23 19:14:47

1. 背景

        网上搜了很多文章,总算有点头绪了。其实隐私清单最后做出来就是一个plist文件。找了几个常用三方已经配好的看了看,比着做就好了。

WWDC23 中关于隐私部分的更新(WWDC23 隐私更新官网),其中提到了第三方 SDK 的隐私清单和签名,并且要求开发者自 2024 年春季开始,新发布的 app 或者 app 更新中携带的第三方 SDK 需要提供隐私清单,如果 SDK 是以二进制形式依赖的话,则同时需要提供签名。。

当你准备分发 App 时,Xcode 会将 App 使用的所有第三方 SDK 的隐私清单合并为一个简单易用的报告。

这个报告内容全面,总结了 App 中的所有第三方 SDK,让你能够更轻松地创建更准确的隐私标签。

因此嵌入 App 的 SDK 和三方库都需要包含 PrivacyInfo.xcprivacy 。

二、 下面开始创建 隐私清单  (privacy manifest)的创建

  1. Xcode升级到Xcode15版本及以上
  2. 新建文件 Cmd + N
  3. 选择 APP Privacy 选项(往下滑到Resource选项里)
  4. privacy文件如下图.

privacy文件的源代码如下。在xcode里选择open as ——> souce code显示如下。 open as :ASCII Property List如上图 显示为plist格式。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>NSPrivacyCollectedDataTypes</key>
	<array>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeDeviceID</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<true/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeCoarseLocation</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<true/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeCrashData</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<true/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<true/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
			</array>
		</dict>
	</array>
	<key>NSPrivacyAccessedAPITypes</key>
	<array>
		<dict>
			<key>NSPrivacyAccessedAPIType</key>
			<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
			<key>NSPrivacyAccessedAPITypeReasons</key>
			<array>
				<string>35F9.1</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyAccessedAPIType</key>
			<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
			<key>NSPrivacyAccessedAPITypeReasons</key>
			<array>
				<string>CA92.1</string>
			</array>
		</dict>
	</array>
	<key>NSPrivacyTrackingDomains</key>
	<array/>
	<key>NSPrivacyTracking</key>
	<false/>
</dict>
</plist>

required reason API 相关的 API 大概涉及:

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

具体列表可查看 Apple 官网说明:查看api名称和使用的理由Describing use of required reason API | Apple Developer Documentation

我们根据自己app的情况添加,上面示例的代码中 ,使用的API,比如我们可能只用了NSUSerdefaluts ,所以只添加这个就行,其他的自己根据官网酌量添加api名称和使用原因。

使用原因苹果官网的示例图

​​​​​​​

 签名我们不用管。因为如果 SDK 是以二进制形式依赖的话,则同时需要提供签名。

参考文章,可以看融云和腾讯即时通信的添加步骤即时通信 IM 苹果隐私策略:PrivacyInfo.xcprivacy-协议与认证-文档中心-腾讯云

【重要通知】关于 2024 春季 iOS 隐私清单的通知 - iOS - 融云开发者帮助中心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1549914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比

产品概述 Apache SeaTunnel 是一个非常易用的超高性能分布式数据集成产品&#xff0c;支持海量数据的离线及实时同步。每天可稳定高效同步万亿级数据&#xff0c;已应用于数百家企业生产&#xff0c;也是首个由国人主导贡献到 Apache 基金会的数据集成顶级项目。 SeaTunnel 主…

阿里云ubuntu服务器搭建可视化界面

连接终端 最好初始化服务器的时候 不要以root权限创建 否则会出错 1更新软件: sudo apt-get update2安装ubuntu desktop : sudo apt-get install ubuntu-desktop3 配置ubuntu desktop并重启: sudo apt-get -f install sudo dpkg-reconfigure ubuntu-desktop sudo reboot4 su…

STM32使用HAL库SPI驱动W25Q16 使用FATFS文件系统+USB虚拟U盘

概述 使用stm32F407驱动W25Q16&#xff0c;使用FATFS文件系统&#xff0c;USB虚拟优盘功能&#xff0c;W25Q16一共512个扇区&#xff0c;其中128作为flash存取相关数据&#xff0c;其他的384个扇区用作虚拟U盘使用 CubeMax配置过程 代码 W25Q16.c /***********************…

【深度学习】语义分割(FCN网络/DeepLabV3网络)学习记录

up主学习视频地址&#xff1a; 【语义分割前言】 https://www.bilibili.com/video/BV1ev411P7dR/?share_sourcecopy_web&vd_source49d7ac1e09d11f99978e8cf36c8bad41 这个up主真的很厉害&#xff0c;宝藏up主呀&#xff01;&#xff01;&#xff01; 常见语义分割评价指…

强化安全防护:升级桌面网管软件提升医院信息系统安全

在当今信息化发展的时代&#xff0c;医院作为重要的医疗服务机构&#xff0c;对终端设备的管理尤为重要。然而&#xff0c;随着国家对医院终端管理的要求日益提高&#xff0c;传统的桌面网管软件已经难以满足现代医院的需求。针对这一现状&#xff0c;升级桌面网管软件已成为当…

喜报|珈和科技入选2023“武汉未来之星TOP100”

近日&#xff0c;由清科创业旗下创业与投资资讯平台——“投资界”发起评选的《2023武汉未来之星TOP100》《2023武汉龙门榜TOP30》两大企业评选结果在武汉市举办的“科创点金汇投融资对接会”上隆重揭晓&#xff0c;珈和科技成功入选“2023武汉未来之星TOP100”榜单。 此次榜…

Unity角色多人同步

1.位置同步和状态同步&#xff1a;需要同步的节点上挂载脚本&#xff1a; gameObject.AddComponent<SyncTransform>(); ; //同步gameObject.GetComponent<SyncTransform>().syncId SyncUtilFunc.GetRoleSyncId(PlayerData.Instance.PlayerId); //同步gameObject.G…

PyTorch----torch.nn.init.kaiming_normal_

神经网络为什么要进行权重初始化&#xff1f; 神经网络进行权重初始化的目的在于促进网络的有效训练和收敛。正确的权重初始化可以帮助缓解梯度消失或梯度爆炸等问题&#xff0c;并且有助于加速训练过程。以下是权重初始化的几个重要原因&#xff1a; 1. **避免梯度消失或梯度…

锂离子电池SOC预测 | python代码实现基于Basisformer时间序列锂离子电池SOC预测研究

概述 基于Basisformer时间序列的锂离子电池SOC(State of Charge,即电池的荷电状态)预测研究,是一项结合深度学习和时间序列分析的前沿技术。该研究的目的是利用Basisformer模型对锂离子电池的SOC进行准确预测,从而提高电池使用效率,延长电池寿命,并优化能源管理系统。 …

unity学习(73)——服务器异常--无法处理 123类型的数据包

服务器发送回的数据包&#xff0c;客户端根本读不出来&#xff0c;type都读不出来&#xff0c;拖了三天&#xff0c;把客户端翻了个底朝天&#xff0c;发现客户端一点问题都没有&#xff01; 所有的问题不是unity的模型问题&#xff0c;就是socket网络通信中断&#xff01; 1…

大文件压缩多个小文件

压缩 压缩后 压缩后&#xff0c;符合上传大小规范

矢量(向量)数据库

矢量(向量)数据库 什么是矢量数据库&#xff1f; 在人工智能领域&#xff0c;大量的数据需要有效的分析和处理。随着我们深入研究更高级的人工智能应用&#xff0c;如图像识别、语音搜索或推荐引擎&#xff0c;数据的性质变得更加复杂。这就是矢量数据库发挥作用的地方。与存…

Kafka详细教程(一)

总体目录 1、什么是消息队列 消息队列&#xff0c;英文名&#xff1a;Message Queue&#xff0c;经常缩写为MQ。从字面上来理解&#xff0c;消息队列是一种用来存储消息的队列 。来看一下下面的代码 // 1.创建一个保存字符串的队列Queue<String> queue new LinkedList&…

ssm小区车库停车系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm小区车库停车系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

开源博客项目Blog .NET Core源码学习(12:App.Application项目结构分析)

开源博客项目Blog的App.Application项目主要定义网站页面使用的数据类&#xff0c;同时定义各类数据的增删改查操作接口和实现类。App.Application项目未安装Nuget包&#xff0c;主要引用App.Core项目的类型。   App.Application项目的顶层文件夹如下图所示&#xff0c;下面逐…

k8s入门到实战(七)—— 回顾:使用yaml文件配置pv、pvc、configmap部署mysql服务

实战&#xff1a;部署 mysql 服务 回顾加深 pv、pvc、configmap 删除所有 deployment、pv、pvc、configmap、StorageClass创建一个 nsf 挂载目录给 mysql mkdir -p /nfs/data/mysql创建 yaml 文件mysql-server.yaml # 创建pv apiVersion: v1 kind: PersistentVolume metadat…

Day22 LeedCode:235.二叉搜索树的最近公共祖先 701.二叉搜索树的插入操作 450.删除二叉搜索树的结点

235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&…

基于Arduino IDE 野火ESP8266模块 一键配网 的开发

一、配网介绍 ESP8266 一键配网&#xff08;也称为 SmartConfig 或 FastConfig&#xff09;是一种允许用户通过智能手机上的应用程序快速配置 ESP8266 Wi-Fi 模块的方法&#xff0c;而无需手动输入 SSID 和密码。为了实现这一功能&#xff0c;则需要一个支持 SmartConfig 的智能…

[flask]执行上下文的四个全局变量

flask上下文全局变量&#xff0c;程序上下文、请求上下文、上下文钩子 -- - 夏晓旭 - 博客园 (cnblogs.com) 执行上下文 执行上下文&#xff1a;即语境&#xff0c;语意&#xff0c;在程序中可以理解为在代码执行到某一行时&#xff0c;根据之前代码所做的操作以及下文即将要…

校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!

随着科技的不断发展&#xff0c;智慧校园系统和跑腿外卖小程序已经成为当今社会的热门话题。作为未来的重要趋势之一&#xff0c;科技在教育领域中的应用越来越广泛。本文将探讨智慧校园系统和跑腿外卖小程序的开发过程&#xff0c;并阐述如何利用科技“育”见未来 一、智慧校…