自苹果推出IDFA之后,就一直在不断加大力度来完善苹果内部的隐私保护机制,在2023年苹果全球开发者大会(Worldwide Developers Conference,简称“WWDC”)上,苹果又宣布了2024年的春季新政策,同时在官网发布的《关于App Store提交的隐私更新》文档中新增了两类隐私保护要求。
第一就是要求SDK开发者要增加SDK隐私清单和签名,第二是要求SDK开发者和App开发者如果使用了5类特殊的API,则需要声明具体的使用原因。因此,SDK开发者和App开发者均需要关注新的隐私要求,并在2024年春季之前完成内部整改。
1. SDK新增隐私清单和签名要求
1.1 苹果为什么要新增SDK隐私清单和签名要求?
苹果在官网发布的《即将发布的第三方SDK要求》中指出,SDK能够为App带来很多的便利,但也可能会对用户的隐私产生一定的影响,所以当App集成SDK时,需要对其使用的SDK包含的所有代码负责,并且切实了解SDK的数据收集和使用实践。因此,苹果在WWDC上宣布了新的SDK隐私清单和签名要求,旨在帮助大家更好地了解第三方SDK的数据处理方式。同时,Xcode会在开发者准备上架和分发App时,为其提供一份由此App所嵌入的所有的SDK的隐私清单合并成的一份报告,使得开发者能够基于此报告真正全面了解SDK的数据处理情况,从而创建更准确的隐私标签,切实保障用户的知情权。
1.2 SDK隐私清单和签名要求适用于哪些SDK?
苹果官网发布的《即将发布的第三方SDK要求》中指出,苹果提出的SDK 隐私清单和签名要求目前强制适用于App常用的86款SDK,具体如下:
Abseil
AFNetworking
Alamofire
AppAuth
BoringSSL/openssl_grpc
Capacitor
Charts
connectivity_plus
Cordova
device_info_plus
DKImagePickerController
DKPhotoGallery
FBAEMKitFBLPromises
FBSDKCoreKit
FBSDKCoreKit_BasicsFBSDKLoginKit
FBSDKShareKit
file_picker
FirebaseABTesting
FirebaseAuth
FirebaseCore
FirebaseCoreDiagnostics
FirebaseCoreExtension
FirebaseCorelnternal
FirebaseCrashlytics
FirebaseDynamicLinks
FirebaseFirestore
FirebaseInstallations
FirebaseMessaging
FirebaseRemoteConfig
Flutter
flutter _inappwebview
flutter local notifications
fluttertoast
FMDB
geolocator_appleGoogleDataTransportGoogleSigninGoogleToolboxForMac
GoogleUtilities
grpcpp
GTMAppAuth
GTMSessionFetcher
hermes
image_picker_ioslQKeyboardManagerlQKeyboardManagerSwift
Kingfisher
leveldb
Lottie
MBProgressHUD
nanopb
OneSignal
OneSignalCore
OneSignalExtension
OneSignalOutcomes
OpenSSL
OrderedSet
package_info
package_info_plus
path_provider
path_provider_ios
Promises
Protobuf
便捷访问功能
RealmSwift
RxCocoa
RxRelay
RxSwift
SDWeblmage
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
此外,苹果特别强调该要求适用于所有上述SDK的任何版本,以及重新打包上述范围的任何SDK。针对并不属于上述范围的其他SDK,苹果强调其鼓励所有SDK采用这项功能,但是这目前并非强制性要求。
1.3 SDK如何建立隐私清单来披露数据使用情况?
SDK开发者需要自行提供一个独立的SDK隐私清单,以统一标准格式概述SDK的数据使用情况。隐私清单需要披露收集的数据类型和收集目的,具体示例如下:
数据使用情况 | 类型 |
|
|
数
据 类 型 |
联系
数据 |
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|||
|
|
||
|
|
||
|
|
||
|
|
||
收
集 目 的 |
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
1.4 App开发者如何使用SDK隐私清单?
SDK隐私清单可以清晰的披露SDK的数据处理情况,如果一个App集成了多款SDK,苹果的Xcode工具会将App使用的所有第三方SDK的隐私清单合并为一个简单易读的隐私报告,帮助开发者更好地了解App中SDK的数据处理情况。App开发者可以通过执行以下操作来创建隐私报告:
- 在Xcode中打开项目;
- 选择“产品”>“存档”,Xcode会创建归档并在管理器中显示它;
- 按住Control键点按管理器中的归档,然后选取“生成隐私报告”;
- 选择保存隐私报告的位置;
- 切换到Finder;
- 导航到保存隐私报告的位置,然后双击以在“预览”中打开报告。
1.5 SDK如何进行签名?
苹果官网发布的《即将发布的第三方SDK要求》中指出,苹果现在推出了SDK签名功能,在上述86款SDK用作二进制文件依赖项的情况下,需要采用签名功能,因为用作二进制依赖项的SDK是以二进制文件形式存在的预编译完成的代码库或框架,可以直接被链接至App,可能存在被篡改的风险,所以当App将新版本的SDK作为已编译好的代码库或框架(二进制文件)集成至App中时,Xcode将验证它是否由同一开发者签名,验证一致后才可以继续进行编译,从而通过确保SDK未被篡改的一致性来提高软件供应链的完整性。
2. 5类API新增使用声明要求
2.1 为什么苹果要对5类API新增使用声明要求?
苹果官网文档中指出,App或SDK在使用某些API来实现核心功能时,可能会存在滥用API以尝试识别设备或用户的问题,这也被称为指纹识别,但是无论用户是否授予App跟踪权限,指纹识别都是苹果所禁止的行为,所以苹果新增要求App和 SDK阐述在iOS、iPadOS、Apple tvOS、visionOS或watchOS上使用5类特殊API的原因,以便于检查是否仅出于预期目的来使用这些API,从未更好地保护用户隐私。
2.2 使用哪5类API需要说明原因?
苹果官网文档中明确了需要说明使用原因的5类API的名称,并要求App和SDK各自在隐私清单中对此进行独立声明,App及SDK只能出于声明的理由使用这些API及其产生的数据,这些声明的理由必须与向用户呈现的App功能保持一致,且不得使用API或衍生数据进行用户追踪。5类API及其使用原因如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.3 如果开发者使用API的原因并不在苹果列出的原因范围内,应如何处理?
苹果官网文档中指出,原则上开发者只能基于上述列表中的原因来使用这5类API,但是苹果也会持续审核使用API的原因,并将不时地更新上述原因列表。如果开发者确实是基于有益于用户的考虑,需要基于原因列表外的其他原因来使用这5类API,则开发者可以给苹果发送请求以增加新的原因。
3. 总结
苹果此次针对SDK和API提出了更细化的隐私保护要求,第一就是增加SDK隐私清单和签名。第二是如果使用了5类特殊的API,则需要声明具体的使用原因。需要注意的是,首先,苹果所提出的建立SDK隐私清单和签名只强制适用于官网披露的86款SDK。其次,App开发者和SDK开发者均需要通过履行相应的合规义务,具体总结如下:
|
|
||
|
官网披露的86款SDK开发者(包括重新打包上述86款SDK的SDK) | 提供SDK隐私清单和签名。 | 如果使用了5类特殊的API,需要单独声明使用理由。 |
|
|
|
最后,苹果官网文档中指出,新的隐私保护要求从2024年春季开始实施,但其实从2023年秋季开始,苹果就已经开始检查,并针对有问题的开发者进行邮件通知。因此,相关开发者现在需要进行内部梳理,落实苹果的隐私新规,避免影响产品上架使用。
本文作者:北京腾云天下科技有限公司 葛梦莹 南钰彤