Xcode隐私协议适配

devtools/2024/11/16 20:49:33/

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.ppmy.cn/devtools/18537.html

相关文章

spring boot中一般如何使用线程池

在Spring Boot中,线程池作为并发编程的核心工具,对于提升应用程序性能、优化资源利用和保证系统稳定性具有重要作用。本文将详细阐述如何在Spring Boot中正确使用线程池,包括配置参数、实例化、任务提交、监控及常见问题处理等环节&#xff0…

Linux CentOS调用打印机

文章目录 一、lpstat及cups安装二、配置打印机1.启动cups2.配置cups3.配置打印机1.打开浏览器,输入CUPS服务器地址访问web界面,地址一般是:http://localhost:631。这里的"localhost"代表当前机器,如果你的CUPS服务器在别…

Elasticsearch简介及安装

Elasticsearch简介及安装_elasticsearch安装-CSDN博客

精益生产咨询公司能够为浙江企业带来哪些帮助?

精益生产,起源于丰田生产方式,强调以最少的资源投入获得最大的运营效益。其核心思想包括消除浪费、持续改进、员工参与和顾客至上。在浙江这片民营经济繁荣的土地上,众多企业敏锐地捕捉到了精益生产带来的巨大潜力,积极寻求与咨询…

云计算和边缘计算究竟有什么不同

在数据时代,无论是人的活动还是机器的运作都会产生各种各样海量的数据。在对数据梳理和筛选过程中,计算机的运算处理必不可少。为了减少本地计算机算力成本等限制,越来越多的企业选择了云计算和边缘计算。今天,德迅云安全就带您来…

浅谈数据库、数据仓库、数据湖

这几年随着大数据的来临,数据仓库,数据湖炒的火热,但是他们跟传统的数据库有什么区别,今天我来简单的梳理一下他们的区别,如有不完整之处,请大家留言补充。 数据库、数据仓库和数据湖的定义 数据库&#…

授人以渔 选购篇十二:路由器选购要点

文章目录 系列文章Wi-Fi 标准:WiFi6或以上无线速度:千兆以上Mesh组网有线端口LAN端口数量:布线拓扑结构决定LAN端口速率:千兆WLAN端口:2.5G其他:Link Aggregation(链路聚合) 附加接口…

Vue 组件单元测试深度探索:细致解析与实战范例大全

Vue.js作为一款广受欢迎的前端框架,以其声明式的数据绑定、组件化开发和灵活的生态系统赢得了广大开发者的心。然而,随着项目规模的增长,确保组件的稳定性和可靠性变得愈发关键。单元测试作为软件质量的守护神,为Vue组件的开发过程…