简体中文
HBuilderX 4.08正式版本2024年4月24日更新云端打包机支持 uni-app 项目配置隐私清单
HBuilderX 4.13及以上版本开始支持 uni-app x 项目配置隐私清单
在 2023 年 6 月的全球开发者大会(WWDC23)上,Apple 宣布了一系列关于 App Store 提交隐私更新的新政策。这些更新旨在增强应用程序在用户数据收集和使用方面的透明度,从而更好地保护用户的隐私权益。
政策主要包含以下关键点:
- 必要理由的API(use of required reason API):Apple 引入了一种新的机制,要求开发者在使用某些可能影响用户隐私的 API 时,必须提供使用这些 API 的必要理由。
- 隐私数据使用描述(data use in privacy manifests):在你的应用程序或第三方SDK的隐私清单中添加收集关于用户的数据类别,以及收集数据的原因。
- 第三方 SDK 隐私清单和签名:SDK 提供者需要对清单进行签名,以证明其内容的真实性和准确性。(详情见下文中xcframework格式的SDK库配置隐私清单)
简单的说隐私清单是一个属性列表,记录您的应用程序或第三方SDK使用的API的原因以及使用/收集的隐私数据类型。
从2024年5月1日开始,任何未在隐私清单文件中描述
必要理由API(use of required reason API)
使用情况的应用程序,都将无法通过 App Store Connect 的审核,而隐私数据使用描述(data use in privacy manifests)
目前不会触发审核问题,但建议开发者以及插件作者尽早适配隐私清单,如实填写数据使用描述
通常情况你无需额外配置隐私清单,uni-app/uni-app x 框架中涉及隐私清单的功能模块 DCloud 会根据应用配置自动生成,更新到HBuilderX到最新版本重新提交云端打包即可。
在以下情况可能需要你补充隐私清单:
原生语言插件
或uts插件
未支持隐私清单,且提交审核时因隐私清单相关问题被拒这时需要你根据实际情况制作补充隐私清单文件PrivacyInfo.xcprivacy
,详情可参考制作隐私清单文件PrivacyInfo.xcprivacy。
将制作的隐私清单文件PrivacyInfo.xcprivacy
保存在项目的 nativeResources/ios
目录,详情如下:
添加或编辑隐私清单文件
PrivacyInfo.xcprivacy
后需提交云端打包后才能生效
仅插件作者需关心此章节内容,插件使用者可跳过此章节
原生语言插件
及UTS插件
作者应该根据根据插件的实际情况配置好隐私清单,避免插件使用者手动补充隐私清单,配置后云端打包会自动合并处理隐私清单。
插件依赖的 xcframework
格式SDK库涉及的隐私清单可以通过签名内置 PrivacyInfo.xcprivacy
文件,而其它格式的SDK库(如.framework、.a等)或插件源码涉及的隐私清单需要在插件包里内置PrivacyInfo.xcprivacy
文件
原生语言插件
在 ios
目录下添加 PrivacyInfo.xcprivacy
文件,详情如下:
UTS插件
在 utssdk/app-ios
目录下添加 PrivacyInfo.xcprivacy
文件,详情如下:
xcframework库需在 xcode 环境中进行配置:
PrivacyInfo.xcprivacy
文件,创建方法:xcodebuild
命令将SDK制作成xcframework的形式:xcodebuild -create-xcframework -framework <第一个库的路径> -framework <第二个库的路径> -output <输出路径/库名称.xcframework>
codesign
命令行给xcframework
签名:codesign --timestamp -v --sign "证书名称" SDK名称.xcframework
隐私清单文件PrivacyInfo.xcprivacy
是 PropertyList 格式文件,建议在XCode中创建并编辑,完成后保存使用。
Key | 说明 |
---|---|
NSPrivacyTracking | 布尔值,指示您的应用程序或第三方SDK是否使用应用程序跟踪透明度框架下定义的数据进行跟踪 |
NSPrivacyTrackingDomains | 一组字符串,列出您的应用程序或第三方SDK连接到的参与跟踪的互联网域。如果用户未通过应用程序跟踪透明度框架授予跟踪权限,则对这些域的网络请求将失败,您的应用程序将收到错误. 如果将NSPrivacyTracking设置为true,则需要在NSPrivaceTrackingDomains中至少提供一个internet域 |
NSPrivacyCollectedDataTypes | 隐私数据使用描述,用于描述应用程序或第三方SDK隐私数据采集的数据类型。有关要在字典中使用的键和值的信息,请参阅data use in privacy manifests。 |
NSPrivacyAccessedAPITypes | 必要理由API,使用了苹果需要说明原因的API时需要填写,具体API的列表和原因请参阅use of required reason API。 |
如应用中用到了UserDefaults相关的API则按如下示例填写:
如应用中需要用户输入手机号则按如下示例填写:
更多制作隐私清单文件参考文档:
以下是PrivacyInfo.xcprivacy
文件示例,仅作为参考,实际使用需删除注释内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- 描述应用或SDK收集的数据类型 -->
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePhoneNumber</string> <!-- 用于标识应用或SDK收集的数据类型 -->
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/> <!-- 应用程序或SDK是否将此数据类型链接到用户的身份 -->
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/> <!-- 应用程序或SDK是否使用此数据类型进行跟踪 -->
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string> <!-- 收集数据的原因/目的 -->
</array>
</dict>
</array>
<!-- 描述应用或SDK访问的API类型及使用原因 -->
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string> <!-- 使用API的原因代码 -->
</array>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string> <!-- 标记应用程序必要理由的API类型 ->
</dict>
</array>
<!-- 指示应用或SDK是否使用应用跟踪透明度框架下定义的数据进行跟踪 -->
<key>NSPrivacyTracking</key>
<false/>
</dict>
</plist>
HBuilderX 4.13
版本开始我们在原生示例工程里内置了默认的PrivacyInfo.xcprivacy
文件,开发者可根据自身项目情况编辑后重新出包
参考:uniMPSDK隐私清单、离线SDK隐私清单