• 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
    • 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

    大体上包括以下几类:

    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

  • 相关阅读:
    【问题解决】Debian更新源提示InRelease已过期
    数据治理之数据质量管控流程(参考)
    STM32中的PWM
    java 批量更改
    lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)
    JSR303和拦截器
    微信小程序格式化日期小插件
    LeetCode讲解篇之138. 随机链表的复制
    W5100S-EVB-PICO主动PING主机IP检测连通性(十)
    9:00面试,9:08就出来了,问的实在有点变态
  • 原文地址:https://blog.csdn.net/qq_37672438/article/details/137133195