Xcode隐私协议适配

news/2024/5/17 19:42:02

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.mrgr.cn/p/35173750

相关文章

盲人手机导航:科技之光引领无障碍出行新纪元

在这个日新月异的数字时代,科技不仅改变了我们获取信息的方式,更在无声中拓宽了视障人士的生活半径。盲人手机导航这一创新技术,正逐步成为他们探索世界、实现独立出行的重要伙伴。 对于大多数人而言,日常出行或许只是一次…

Python绘制的好看统计图

代码 sx [Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, P…

特征重要性评估的随机森林算法与Python实现(三)

特征重要性评估(Variable importance measure, or Feature importance evaluation,VIM)用来计算样本特征的重要性,定量地描述特征对分类或者回归的贡献程度。随机森林(Random Forest)作为一种强大的机器学习算法,在特征重要性评估方面具有显著优势。特征重要新评估是随机森…

社会网络分析及其Python实现

社会网络分析(Social Network Analysis, SNA)在人类学、心理学、社会学、数学以及统计学等领域中发展起来,是综合运用图论、数学模型来研究社会行动者之间的关系或通过这些关系流动的各种有形或无形的东西,如信息、资源等,近年来逐渐成为一种热门的社会科学研究方法。社会…

Jenkins邮件发送失败问题解决

如下提示为 Extended E-mail Notification开启Debug模式下显示的错误信息, (Debug模式设置方法:Dashboard-> manage Jenkins->configure System)DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 DEB…

工厂模式和策略模式区别

工厂模式和策略模式都是面向对象设计模式,但它们的目的和应用场景有所不同。 工厂模式是一种创建型设计模式,旨在通过使用一个工厂类来创建对象,而不是直接使用new关键字来创建对象。这样做可以使系统更容易扩展和维护,因为新的对…

IDA动态调试解RC4

IDA动态调试解RC4 本篇博客所有内容,均学习于无名侠大佬在bilibili的视频:https://www.bilibili.com/video/BV1WQ4y1X7TY LazyIDA熊猫版:https://github.com/P4nda0s/LazyIDA 实验文件下载:https://github.com/P4nda0s/SycRevLearn有一些算法的加密与解密是相同的算法过程,…

2024 java easyexcel poi word模板填充数据,多个word合成一个word

先看效果 一、准备工作 1.word模版 2.文件路径 二、pom依赖 <!-- easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.7</version></dependency><depe…

[CISCN 2022 华东北] duck

[CISCN 2022 华东北] duck UAF|leak_libc|leak_heap_base|指针加密|unsortedbin|one_gadget [*] /home/bamuwe/duck/pwnArch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: NX enabledPIE: PIE enabled$ checksec ./pwn/home/ubuntu/glibc/gl…

Apache Seata基于改良版雪花算法的分布式UUID生成器分析2

title: 关于新版雪花算法的答疑 author: selfishlover keywords: [Seata, snowflake, UUID, page split] date: 2021/06/21 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 关于新版雪花算法的答疑 在上一篇关于新版雪花算法的解析中…

LeetCode - 买卖股票的最佳时机

121. 买卖股票的最佳时机 给出一个数组&#xff0c;在这个数组中&#xff0c;买入一支股票&#xff0c;并在未来的某一天卖出(不能当天买&#xff0c;当天卖)&#xff0c;如何获取最大利润。 如果你做过买卖股票2&#xff0c;那么在做这道题的时候&#xff0c;大概率是会想到动…

【已解决】Python Selenium chromedriver Pycharm闪退的问题

概要 根据不同的业务场景需求&#xff0c;有时我们难免会使用程序来打开浏览器进行访问。本文在pycharm中使用selenium打开chromedriver出现闪退问题&#xff0c;根据不断尝试&#xff0c;最终找到的问题根本是版本问题。 代码如下 # (1) 导入selenium from selenium import …

决策树分析及其在项目管理中的应用

决策树分析是一种分类学习方法&#xff0c;其主要用于解决分类和回归问题。在决策树中&#xff0c;每个内部节点表示一个属性上的测试&#xff0c;每个分支代表一个属性输出&#xff0c;而每个叶节点则代表类或类分布。通过从根节点到内部节点的路径&#xff0c;可以构建一系列…

Android 音视频基础知识

本系列文章会介绍两个 Android NDK Demo&#xff0c;拉流端会实现一个基于 FFmpeg 的视频播放器 Demo&#xff0c;推流端会实现一个视频直播 Demo&#xff0c;当然在做 Demo 之前会介绍音视频的基础知识。以下是本系列文章的目录&#xff1a; Android 音视频基础知识 Android 音…

如何同时或者按顺序间隔启动多个程序

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z1、打开工具,切换到定时器模块,快捷键:Ctrl+3 2、新建一个定时器,我这里演示同时打开多个程序(比如同时启动多个QQ,或者多个微信等),那就把单次数量提高,如果想每次执行这个定时器里面的3个事件…

ef core加密存储数据,如身份证号

一、新建项目,安装nuget<PackageReference Include="V6.EntityFrameworkCore.DataEncryption" Version="5.0.0" />二、本示例采用:AES+256bits(Can use a 128bits, 192bits or 256bits key)CipherMode mode = CipherMode.CBC, PaddingMode padding…

如何快速的追加文章的内容(在不知道内容的情况下)

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 1、打开工具,切换到文章模块下,快捷键:Ctrl+12、新建一个文章做演示,001 3、添加一个内容,就随便写一个 4、保存、关闭 5、在新建的文章上右键,选择追加内容 6、弹出一个窗口,有三种选择,我这里就…

基于springboot实现公司日常考勤系统项目【项目源码+论文说明】

基于springboot实现公司日常考勤系统演示 摘要 目前社会当中主要特征就是对于信息的传播比较快和信息内容的安全问题&#xff0c;原本进行办公的类型都耗费了很多的资源、传播的速度也是相对较慢、准确性不高等许多的不足。这个系统就是运用计算机软件来完成对于企业当中出勤率…

随机森林Adaboosting算法与Python实现(二)

AdaBoost是Freund和Schapire于1996年提出的一种集成学习方法。它的核心思想是通过迭代训练一系列弱分类器,每次调整样本权重以便更好地拟合被前一轮分类器错误分类的样本,从而构建一个强分类器。最终的模型是基于这些弱分类器的加权组合。AdaBoost广泛应用于二分类和多分类问…

Mac brew安装Redis之后更新配置文件的方法

安装命令 brew install redis 查看安装位置命令 brew list redis #查看redis安装的位置 % brew list redis /usr/local/Cellar/redis/6.2.5/.bottle/etc/ (2 files) /usr/local/Cellar/redis/6.2.5/bin/redis-benchmark /usr/local/Cellar/redis/6.2.5/bin/redis-check-ao…