Xcode隐私协议适配

1. Privacy manifest files

1.1 简介

自己App或三方SDK(通过XCFrameworks|Swift packages|Xcode projects集成的)需要包含一个隐私清单文件(privacy manifest)叫作 PrivacyInfo.xcprivacy它是一个属性列表,记录了App或三方SDK收集数据的类型以及使用收集数据Api的原因,放置在bundle文件里。帮助开发者了解三方SDK中使用的Api以及数据收集的一些信息。

重要:

  • 如果集成的三方SDK在下面的列表中,则需要三方SDK里面包含这样的隐私清单 Upcoming third-party SDK requirements.
  • 如果集成的三方SDK没有在上面的列表中,但是它使用了需要说明使用原因的Api,最好也包含下

1.2 Create a privacy manifest

File > New File->App Privacy,然后选择target,这里的target可以是三方SDK,也可以是自身App的,如果更新三方SDK成本太大,或者最新版本的也没有提供隐私清单,可以通过这个方法,手动给三方SDK添加。每个三方SDK都是单独的,都需要单独添加

默认名字 PrivacyInfo.xcprivacy,不建议更改​​​​​​​

PrivacyInfo.xcprivacy字典里,添加下列的键:

  • NSPrivacyTracking
    • bool值,表示App或者三方SDK是否使用了App Tracking Transparency framework下的数据  User Privacy and Data Use.
  • NSPrivacyTrackingDomains
    • string数组,表示App或者三方SDK在tracking时,链接的域名,如果用户没有统一跟踪的权限,请求这些域名就会失败,并收到一个error如果NSPrivacyTracking=true,则至少需要设置一个NSPrivacyTrackingDomains
  • NSPrivacyCollectedDataTypes
    • ​​​​​​​一个字典数组,表示App或者三方SDK收集的数据类型Describing data use in privacy manifests.
  • NSPrivacyAccessedAPITypes
    • ​​​​​​​一个字典数据,表示App或者三方SDK,访问了哪些需要说明访问原因的api Describing use of required reason API.
    • 只需要在iOS, iPadOS, tvOS, visionOS, watchOS上为App或者三方SDK上提供这个

1.3 Describing data use in privacy manifests

链接:Describing data use in privacy manifests | Apple Developer Documentation

需要注意的点:

  • data type不能自定义key-value, 只能使用列表中列出来的

1.4 Describing use of required reason API

大体上包括以下几类:

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

1.5 需要包含隐私清单和签名的三方SDK

  • Abseil
  • AFNetworking
  • Alamofire
  • AppAuth
  • BoringSSL / openssl_grpc
  • Capacitor
  • Charts
  • connectivity_plus
  • Cordova
  • device_info_plus
  • DKImagePickerController
  • DKPhotoGallery
  • FBAEMKit
  • FBLPromises
  • FBSDKCoreKit
  • FBSDKCoreKit_Basics
  • FBSDKLoginKit
  • FBSDKShareKit
  • file_picker
  • FirebaseABTesting
  • FirebaseAuth
  • FirebaseCore
  • FirebaseCoreDiagnostics
  • FirebaseCoreExtension
  • FirebaseCoreInternal
  • FirebaseCrashlytics
  • FirebaseDynamicLinks
  • FirebaseFirestore
  • FirebaseInstallations
  • FirebaseMessaging
  • FirebaseRemoteConfig
  • Flutter
  • flutter_inappwebview
  • flutter_local_notifications
  • fluttertoast
  • FMDB
  • geolocator_apple
  • GoogleDataTransport
  • GoogleSignIn
  • GoogleToolboxForMac
  • GoogleUtilities
  • grpcpp
  • GTMAppAuth
  • GTMSessionFetcher
  • hermes
  • image_picker_ios
  • IQKeyboardManager
  • IQKeyboardManagerSwift
  • Kingfisher
  • leveldb
  • Lottie
  • MBProgressHUD
  • nanopb
  • OneSignal
  • OneSignalCore
  • OneSignalExtension
  • OneSignalOutcomes
  • OpenSSL
  • OrderedSet
  • package_info
  • package_info_plus
  • path_provider
  • path_provider_ios
  • Promises
  • Protobuf
  • Reachability
  • RealmSwift
  • RxCocoa
  • RxRelay
  • RxSwift
  • SDWebImage
  • share_plus
  • shared_preferences_ios
  • SnapKit
  • sqflite
  • Starscream
  • SVProgressHUD
  • SwiftyGif
  • SwiftyJSON
  • Toast
  • UnityFramework
  • url_launcher
  • url_launcher_ios
  • video_player_avfoundation
  • wakelock
  • webview_flutter_wkwebview
  • 签名: 
  • 或者更准确地说,代码签名(Code Signing),是一种用于确认应用或软件包来源的安全技术,同时确保自签名之后代码未被篡改。代码签名通过使用数字证书和加密技术来实现。这个过程为软件或应用附加了一个数字签名,当用户下载或运行软件时,操作系统或其他软件可以验证这个签名,以确认软件的真实性和完整性。

1.6 总结

  • 三方SDK在上面的列表中,分为两种情况:
    • 以二进制集成(framework),需要包含签名和隐私清单,从目前来看,三方SDK都更新了
    • 以源码集成,只需要包含隐私清单,如果三方SDK最新版SDK里面包含了,拿过来用即可,更不更新SDK都行,如果三方SDK最新版也没有包含,可以不用管
  • 三方SDK不在上面的列表中:
    • 签名和隐私文件有没有都行,最好有
  • 自己的App里面,只需要包含本身App里用到的隐私Api说明

1.7 查看隐私报告

打包的时候,可以提前看,App的privacy 报告,会生成一个PDF

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS之显示覆盖内容(z-index)

前言&#xff1a; 我们有的时候&#xff0c;希望下方的内容能够显示到上方&#xff0c;达到类似于多个图层的效果&#xff0c;此时我们可以利用z-index这个属性。 介绍&#xff1b; z-index属性值是用来设置元素的堆叠顺序(元素层级)。 覆盖原则&#xff1a; <1>特殊…

debian配置distcc分布式编译

前言 distcc 是一个用于在网络上的多台机器上分发 C、C、Objective C 或 Objective C 代码构建的程序。 distcc 应始终生成与本地构建相同的结果&#xff0c;易于安装和使用&#xff0c;并且通常比本地编译快得多。 distcc 不要求所有机器共享文件系统、同步时钟或安装相同的…

React【Day4】

路由快速上手 1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 2. 创建路由开发环境 # 使用CRA创建项目 npm create-react-app react-router-pro# 安装最新的ReactRouter包 …

Windows 系统上实现 sshpass 方案

sshpass 是 Linux 上的一个免输入密码通过 ssh 登录的方案&#xff0c;可以通过在命令行中指定密码&#xff0c;无需交互的方式完成一些自动化的动作。但是在 Windows 系统中并没有直接提供相关的支持。本篇文章针对这个思路探讨一下其他实现方式。 Win 安装 sshpass 在 gith…

SpringCloud系列(17)--将服务消费者Consumer注册进Zookeeper

前言&#xff1a;在上一章节中我们把服务提供者Provider注册进了Zookeeper&#xff0c;而本章节则是关于如何将服务消费者Consumer注册进Zookeeper 1、再次创建一个服务提供者模块&#xff0c;命名为consumerzk-order80 (1)在父工程下新建模块 (2)选择模块的项目类型为Maven并…

初步认识Java

Java之父 Java 语言源于 1991 年 4 月&#xff0c;Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动&#xff0c;此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的前身&#xff1a; Oak (得…

移动端日志采集与分析最佳实践

前言 做为一名移动端开发者&#xff0c;深刻体会日志采集对工程师来说具有重要意义&#xff0c;遇到问题除了 debug 调试就是看日志了&#xff0c;通过看日志可以帮助我们了解应用程序运行状况、优化用户体验、保障数据安全依据&#xff0c;本文将介绍日志采集的重要性、移动端…

【软件安装】(十六)双系统Ubuntu22.04引导启动菜单的默认项

一个愿意伫立在巨人肩膀上的农民...... 好学的人总是喜欢在电脑上安装双系统&#xff0c;可是安装好系统之后&#xff0c;就会出现默认启动优先级的苦恼&#xff0c;如果在Bios中设置Windows引导启动为优先启动&#xff0c;那么每次想要进如Ubuntu系统就都需要重新设置Bios。如…

一起陪伴走过20多年,XILINX五大系列CPLD/FPGA将于6月截止接单

一起陪伴走过20多年&#xff0c;XILINX五大系列CPLD/FPGA将于6月截止接单 Product Discontinuation Notice AMD/XILINX于2024年春节后&#xff0c;发布了最新的产品停产通知&#xff0c;产品系列包括&#xff1a;XC9500XL, CoolRunner XPLA 3, CoolRunner II, Spartan II, a…

【数据库】Redis

文章目录 [toc]Redis终端操作进入Redis终端Redis服务测试切换仓库 String命令存储字符串普通存储设置存储过期时间批量存储 查询字符串查询单条批量查询 Key命令查询key查询所有根据key首字母查询判断key是否存在查询指定的key对应的value的类型 删除键值对 Hash命令存储hash查…

ssm智能停车场管理系统

视频演示效果: SSMvue智能停车场 摘 要 本论文主要论述了如何使用JAVA语言开发一个智能停车场管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述智能停车…

C++11 数据结构5 队列的概念,队列的顺序存储,实现,测试

一&#xff0c;队列的概念 队列是一种特殊的受限制的线性表。 队列&#xff08;queue&#xff09;是只允许在一端进行插入操作&#xff0c;而在另一端进行删除操作的线性表。 队列是一种先进先出的t&#xff08;First In First Out&#xff09;的线性表&#xff0c;简称FIF…

数组和指针经典笔试题讲解

目录 创作不易&#xff0c;如对您有帮助&#xff0c;还望一键三连&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 1.sizeof和strlen的对比 1.1sizeof 1.2strlen 1.3sizeof和strlen对比 2.数组笔试题讲解 数组名的理解 2.1一维数组 2.2字符数组 题目一&#x…

【skill】usbwebserver的几个问题

试了几个云服务器&#xff08;华为云、移动10086云&#xff09;&#xff0c;使用usbwebserver均会出现问题。 以前都是找缺少的对应的dll文件&#xff0c;不仅搜索半天、解压、移动复制、同时还要考虑文件的位数 有人说C:\Windows\System32存放的是64位的东西有人说C:\Windows…

Axure设计美观友好的后台框架页

使用Axure设计后台框架页 优点介绍&#xff1a; **1、使用中继器灵活配置菜单项&#xff1b; 2、二级菜单面板跟随一级菜单位置显示&#xff1b; 3、菜单链接打开后&#xff0c;联动添加tab标签&#xff1b; 4、标签页与iframe内容联动&#xff0c;可关闭&#xff1b; 5、左侧…

车道分割YOLOV8-SEG

车道分割YOLOV8-SEG&#xff0c;训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV的DNN调用&#xff0c;支持C,PYTHON,ANDROID开发 车道分割YOLOV8-SEG

Xline中区间树实现小结

Table of Contents 实现区间树的起因区间树实现简介 插入/删除查询重叠操作使用Safe Rust实现区间树 问题Rc<RefCell<T>> i. 线程安全问题其他智能指针 i. Arc<Mutex<T>>? ii. QCell数组模拟指针总结 01、实现区间树的起因 在Xline最近的一次重构中…

苍穹外卖学习笔记(8.用户端历史订单模块,商家端订单管理模块)

目录 一、商家端订单管理模块1、查看历史订单2、查询订单详情3、取消订单4、再来一单5、代码开发6、测试 二、用户端历史订单模块1、订单搜索2、各个状态的订单数量统计3、查询订单详情4、接单5、拒单6、取消订单7、派送订单8、完成订单9、代码开发10、测试 三、校验收货地址是…

逆向案例二十九——复杂扣代码,七某数据(一)

网址&#xff1a;aHR0cHM6Ly93d3cucWltYWkuY24vcmFuaw 抓包分析载荷中有加密参数analysis&#xff1a; 获取数据代码&#xff0c;经过分析&#xff0c;发现analysis确实是校验参数cai&#xff1a; import requestscookies {qm_check: A1sdRUIQChtxen8pI0dAMRcOUFseEHBeQF0JT…

31.Gateway网关-跨域问题

跨域 1.域名不同&#xff1a;www.baidu.com和www.taobao.com,www.taobao.org 2.域名相同&#xff0c;端口不同。localhost:8080和localhost:8081 跨域问题 浏览器禁止请求的发起者与服务端发生跨域ajax请求&#xff0c;请求被浏览器拦截的问题。 解决方案 CORS 浏览器询…