iOS17 隐私协议适配详解

这篇具有很好参考价值的文章主要介绍了iOS17 隐私协议适配详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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文件如下图.
  5. ios隐私清单和第三方sdk适配,cocoa,macos,objective-c

privacy文件的源代码如下。在xcode里选择open as ——> souce code显示如下。 open as :ASCII Property List如上图 显示为plist格式。这个是腾讯即时通信的清单 open as code如下

<?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>NSPrivacyTracking</key>
    <false/>
    <key>NSPrivacyCollectedDataTypes</key>
    <array/>
    <key>NSPrivacyTrackingDomains</key>
    <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>NSPrivacyAccessedAPICategoryDiskSpace</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>E174.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>CA92.1</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

对应的plist展示如下ios隐私清单和第三方sdk适配,cocoa,macos,objective-c

  • 隐私清单文件中键值对阐明
Key 阐明
NSPrivacyTracking 布尔值,指示您的应用程序或第三方SDK是否运用应用程序盯梢透明度结构下定义的数据进行盯梢。官方文档
NSPrivacyTrackingDomains 一组字符串,列出您的应用程序或第三方SDK连接到的参加盯梢的互联网域。如果用户未通过应用程序盯梢透明度结构授予盯梢权限,则对这些域的网络恳求将失利,您的应用程序将收到错误. 如果将NSPrivacyTracking设置为true,则需求在NSPrivaceTrackingDomains中至少供给一个internet域;否则,您可以供给零个或多个域。
NSPrivacyCollectedDataTypes 一组字典,用于描绘应用程序或第三方SDK搜集的数据类型。有关要在字典中运用的键和值的信息,请参阅描绘隐私清单中的数据运用。
NSPrivacyAccessedAPITypes 运用了苹果需求阐明原因的api时需求填写,请参阅描绘所需原因API的运用。

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名称和使用原因。

下面咱们看几个第三方的隐私清单是怎么处理的。比如 SDWebImage  ,SD的代码如下,

<?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>NSPrivacyTracking</key>
	<false/>
	<key>NSPrivacyCollectedDataTypes</key>
	<array/>
	<key>NSPrivacyTrackingDomains</key>
	<array/>
	<key>NSPrivacyAccessedAPITypes</key>
	<array>
		<dict>
			<key>NSPrivacyAccessedAPIType</key>
			<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
			<key>NSPrivacyAccessedAPITypeReasons</key>
			<array>
				<string>C617.1</string>
			</array>
		</dict>
	</array>
</dict>
</plist>

plist长这样,看SD它就加了一个 File Timestamp

ios隐私清单和第三方sdk适配,cocoa,macos,objective-c

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

ios隐私清单和第三方sdk适配,cocoa,macos,objective-c

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

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

【重要通知】关于 2024 春季 iOS 隐私清单的通知 - iOS - 融云开发者帮助中心文章来源地址https://www.toymoban.com/news/detail-851038.html

到了这里,关于iOS17 隐私协议适配详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS17适配指南-新版

    UIView与UIViewController。可以设置数据为空时的占位视图,增加SymbolAnimations,通过addSymbolEffect()与removeSymbolEffect()方法,可以实现SF Symbols图标的添加与移除动画。 UIPageControl。增加了类型为UIPageControlTimerProgress的参数progress,可根据指定的时间自动切换。 UICollectionViewCompositionalLa

    2024年02月07日
    浏览(63)
  • iOS 17 适配 Xcode 15 问题

    在适配 iOS 17 + xcode 15时遇到的问题,记录一下。 1、 Could not build module ‘WebKit’ 解决方案: 选中不能编译的库的xcodeproj,在 Build Phrases - Compile Sources ,选中所有文件, Complier Flags 里删除 -DOS_OBJECT_USE_OBJC=0 可能是三方库的目标版本比较低,cocoapods兼容低版本自动加上了 - DOS_

    2024年02月08日
    浏览(63)
  • iOS 17新特性以及适配细节汇总

    1、UIScrollView 增加了属性 allowsKeyboardScrolling 表示是否根据连接的物理键盘的方向键而滚动。 2、applicationIconBadgeNumber UIApplication 的 applicationIconBadgeNumber 属性被废弃,建议使用 UNUserNotificationCenter.current().setBadgeCount() 方法。 3、UIDocumentViewController 新增视图控制器,用于显示与管理

    2024年02月08日
    浏览(34)
  • 【iOS】—— swift基础语法及一些第三方库使用

    只能赋值一次 它的值不要求在编译时期确定,但使用之前必须赋值一次 可以被赋值多次 跟常量一样,在使用之前必须给他赋值,否则编译器会报错 这个第三方库和Masonry的作用和用法都很相似 其中这块我们看到和oc不同的是 Int(SIZE_HEIGHT) 这块有个强制类型转化,这块原因是

    2024年02月08日
    浏览(55)
  • iOS 开发-编译第三方库 openssl及curl

    iOS编译库需要三个架构,arm64,arm64e,x86_64,其中x86_64为模拟器所需 iOS编译库需要下载xcode及对应的command line tool(执行命令时可以自动下载),下载失败需要去官网搜索下载 参考iOS如何编译OpenSSL静态库(openssl版本:1.1.1b) 执行配置命令(路径修改为要生成的目标架构文件夹路径

    2024年02月13日
    浏览(37)
  • Xcode 15(iOS17)编译适配报错

    报错:No template named \\\'unary_function\\\' in namespace \\\'std\\\'; did you mean \\\'__unary_function\\\'?  解决: Xcode点击Pods点击Build Settings点击 Basic找到Apple Clang-Preprocessing下的Preprocessor Macros  添加:_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION

    2024年03月17日
    浏览(62)
  • Xcode 15新特性与iOS 17适配要点

    在 WWDC 23 上 Apple 推出了 Xcode 15,相比较 Xcode 14,它有如下的变化。 项目 安装包的大小继续减小,安装速度继续提升,因为 iOS 的 Components 也需要动态下载安装,否则提示 iOS 17.0 Not Install ,平台不同提示略有不同。 主界面的菜单图标与名称发生变化。 创建 iOS 项目时,增加了

    2024年02月09日
    浏览(50)
  • Xcode15+iOS17适配以及遇到的问题

    今天更新了 Xcode15,遇到了一些问题,做下记录希望大家少走点坑。 Xcode更新完成后,打开项目一直显示 no fund  iOS17 sdk,根据项目不同提示可能有区别,根据提示下载后提示安装失败,试了几次还不行,就去官网查看一下情况,苹果已经给出解决方案; 解决: 终端执行以下命

    2024年02月07日
    浏览(60)
  • uniapp:打包ios配置隐私协议框

    使用uniapp打包ios 上架商店需要配置隐私协议政策弹窗。当用户点击确定后才能继续操作。 首先 manifest.json 中配置 使用原生隐私政策提示框 是不支持ios的。 不用勾选 。 解决思路: 1、新建页面:iosLogin.vue,pages.json中 这个页面需要放在第一位 app.vue 提示:如果项目有用到消

    2024年04月27日
    浏览(39)
  • 【iOS】—— 实现WebSocket发送消息(SocketRocket第三方库的使用和解析)

    偶然之间了解到了利用WebSocket实现后端和前端的相互发送消息,就查了查在iOS里这个东西该怎么写,用舍友写的接口简单实现了两个用户的通信。 WebSocket 是一种在 Web 应用程序中实现双向通信的协议。它允许客户端和服务器之间建立一个持久性的连接,以便可以在任何时间点

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包