Skip to content
AI 文档索引 ↗

iOS App Store 隐私申报参考 ​

本文介绍 App Store 隐私清单和 Required Reason API 的核对方式。Android 申报见 Google Play 数据安全。

上架前检查 ​

  • 构建工具:自 2026-04-28 起,上传 App Store Connect 的 iOS 应用须使用 Xcode 26 或更高版本及 iOS 26 或更高版本的 SDK 构建。请核对 Apple 官方要求 和所用 SDK 包的兼容范围。
  • 隐私政策与标签:在 App Store Connect 和应用内提供隐私政策链接;按最终应用的数据收集、用途、关联性和第三方 SDK 行为填写 App Privacy。隐私清单不能代替应用的隐私标签或隐私政策。
  • 账号及数据删除:如果应用支持创建账号,应按 App Review Guidelines 5.1.1 提供应用内发起账号删除的方式,说明数据保留、删除与撤回同意的方式。本 SDK 的本地清理不删除已上传数据。
  • 追踪授权:当实际数据使用属于 Apple 定义的跨公司追踪时,在追踪前通过 ATT 取得授权;拒绝后不能换用其他标识绕过。普通产品分析不必然属于该定义,判断需覆盖宿主和所有 SDK。参见 Apple 用户隐私与数据使用。

NOTE

实际申报须结合宿主启用的功能、业务事件和数据处理方式确定;本页不构成法律意见。


一、Consent 门控的技术选项 ​

按适用要求选择授权时序:如果宿主的法律评估、隐私政策或产品授权流程要求用户作出选择前停止 SDK 处理,应显式传入 PENDING。此模式在授权前停止身份创建、分析存储和网络请求。SDK 默认值 GRANTED + MINIMAL 是产品运行默认值,不代表已替宿主判断适用法律依据,也不应被用作宿主隐私授权已经完成的证明。宿主须与其隐私/法务负责人确认适用要求。

授权前静默的时序示例 ​

text
[App 首次冷启动]
       ↓
[展示宿主隐私政策授权弹窗 (阻断式)]
       ↓
┌──────┴────────────────────────┐
│                               │
[用户点击拒绝]              [用户点击同意]
│                               │
[调用 denyConsent]             [调用 grantConsent("STANDARD")]
│                               │
[维持拒绝状态]                 [按宿主配置与已启用能力运行]

时序接入详情参见:Consent 与隐私管控技术细节。


二、iOS App Store 隐私清单 (PrivacyInfo.xcprivacy) ​

Apple 要求应用和 SDK 在适用情况下随包提供 PrivacyInfo.xcprivacy,例如使用 Required Reason API、收集数据、使宿主应用能够收集数据或涉及 Tracking Domains;另有指定第三方 SDK 清单要求。具体条件与要求可能更新,应在发布前核对 Apple Privacy Manifest 官方文档。Track Business iOS Core 源码包内含该清单;这不替代对所选归档产物及宿主聚合报告的验证。

1. SDK 清单内容 ​

Core 的隐私清单包含以下声明;使用时以所选下载包中的清单与最终归档报告为准:

项目当前声明
NSPrivacyTrackingfalse
用户标识 UserID关联用户;用途为分析
产品交互 ProductInteraction关联用户;用途为分析
其他诊断 OtherDiagnosticData不关联用户;用途为应用功能与分析
Required Reason APINSPrivacyAccessedAPICategoryUserDefaults,理由 CA92.1
Required Reason APINSPrivacyAccessedAPICategorySystemBootTime,理由 35F9.1
精确位置Core 不声明;由可选 TrackBusinessLocation 模块声明

清单不是运行时采集开关。实际启用能力和宿主自定义字段仍需纳入应用整体申报。

2. Xcode 导出隐私报告 (Privacy Report) ​

Core 的 PrivacyInfo.xcprivacy 不声明精确位置。可选 TrackBusinessLocation 模块会声明 PreciseLocation;宿主也可以通过自定义事件属性传入位置数据。无论位置来自该模块还是宿主事件,最终 App 都应按实际数据流核对隐私清单、隐私标签、授权、系统权限及服务端处理;接入说明见位置快照集成。

在提审 App Store 前,推荐导出报告验证清单已正确生效:

  1. 在 Xcode 菜单栏选择 Product → Archive;
  2. 在 Organizer 窗口选中最新构建的 Archive 归档包;
  3. 右键点击归档包,选择 Generate Privacy Report;
  4. 检查生成的 PDF 中汇总的数据收集声明;另逐个检查归档内的 PrivacyInfo.xcprivacy,核对适用的 Required Reason API 类别与理由。报告和清单都不能替代对实际数据流的验证。

三、Apple ATT 与广告追踪边界 ​

以下事实用于评估当前 SDK,完整 App 的追踪用途仍需单独核对:

  • Core 隐私清单将 NSPrivacyTracking 声明为 false;这只描述 SDK Core 的声明,不能代替宿主对完整 App、其他 SDK 和实际数据流的判断。
  • iOS Core 没有内置 IDFA 读取实现或广告 SDK 依赖。宿主注入的标识读取器、事件属性和目标 Endpoint 仍须单独评估;是否需要 ATT 取决于完整 App 的实际追踪用途。
  • 若产品启用外部设备标识读取,应核对标识用途、Consent、授权要求、Endpoint 与数据留存。不要把“可选读取未默认启用”表述成“应用不收集标识”。

四、宿主应用申报前的 SDK 核查项 ​

以下是 SDK 技术事实核对模板,不是各应用市场的统一法定表格,也不代表宿主可以不经核查直接照填。具体披露项目、用途、权限和授权时序须结合所用 SDK 版本、可选模块、宿主代码、服务端行为及目标市场当期规则确定。

查看 SDK 信息与跨平台数据核对项

1. SDK 信息核对 ​

项目内容
SDK 名称Track Business SDK;申报信息以实际交付和合同为准
SDK 中文名称Track Business 客户端数据采集 SDK
服务类型 / 功能按实际使用的 SDK 能力填写,例如事件采集、身份与会话管理
提供主体按 SDK 供应主体和合同信息填写
官方网站填写实际使用的官方地址

2. 数据与权限核对示例 ​

收集信息类型使用目的收集方式申请权限频次与策略
网络连接状态
(Wi-Fi / 蜂窝 / 离线)
SDK 可读取网络状态用于上下文与网络恢复调度。SDK 自动读取SDK Android Manifest 声明 ACCESS_NETWORK_STATE创建上下文时读取;Android 网络恢复可使用系统回调
系统网络访问SDK 按配置 Endpoint 发送事件批次。SDK 发起请求INTERNET 未由 SDK Manifest 声明,宿主需按实际集成提供由队列/flush 调度触发;Endpoint 与传输协议按环境配置
基础设备特征
(系统版本、机型、屏幕尺寸、时区语言)
宿主可用于分析兼容性;申报目的按实际使用方式确认。SDK 在创建事件上下文时读取SDK Core 不声明读取上述字段的敏感权限;合并权限以宿主构建为准随事件上下文采集,不代表只在冷启动读取一次
应用基础信息
(包名、App 版本号、构建版本)
宿主可用于区分应用版本数据;申报目的按实际使用方式确认。SDK 在创建事件上下文时读取无敏感权限
(仅读取宿主自身应用信息)
随事件上下文采集,不代表只在冷启动读取一次
匿名/安装标识符
(Anonymous ID / Installation ID)
维护匿名身份与安装级分析连续性。SDK 本地生成不需要读取硬件标识的权限;存储和卸载后行为按平台及宿主配置核验按 SDK 身份生命周期恢复、轮换或由 clearLocalData() 清理
用户业务主标识
(User ID)
识别已登录用户身份,关联跨端用户画像。宿主主动传入无权限仅在宿主调用 identify 时设置

3. 应用申报核查 ​

申报前应检查实际集成的 SDK 版本、应用归档中的依赖和权限、宿主传入的字段、可选标识适配器、Collector 及其他第三方 SDK。

  • SDK Core 的默认 Android Manifest 声明 ACCESS_NETWORK_STATE,用于读取网络上下文和支持网络恢复调度;最终权限以宿主合并后的 Manifest 为准。INTERNET 权限由宿主按实际网络功能配置。
  • SDK 读取系统和应用上下文,并在 Android 尝试获取蜂窝网络代际;系统拒绝访问时该字段可能缺失。此类上下文仍须按最终数据流判断是否属于申报数据。
  • SDK Core 不会自动读取 IMEI、MEID、MAC、序列号、IMSI 或广告标识。外部设备标识通过宿主注入的 Reader 显式读取;Android 可选适配器和 iOS UIKit 的 IDFV 适配器应按实际接入单独评估。iOS Core 不内置 IDFA 读取实现。
  • 当前 SDK Core 源码未包含剪贴板读取调用;这一结论不能覆盖宿主代码、其他依赖或最终二进制中的行为。
  • initialConsent=PENDING 可用于要求授权选择前静默的宿主配置。默认 GRANTED + MINIMAL 是 SDK 运行默认值,不代表宿主已完成告知、取得授权或满足适用规则。
  • Android/iOS 生命周期调度和可选后台上传取决于所用模块及配置;不要据此宣称整个应用不存在后台任务、系统唤醒或网络请求。

Apple 隐私清单应准确描述各 SDK 的数据类型与 Required Reason API。宿主还需核对整包聚合报告和自身的数据实践。


五、应用商店审核常见阻断与申诉模板 ​

1. Apple 审核问询:UserDefaults Required Reason API (CA92.1) ​

问题现象:收到 Apple 审核关于 NSPrivacyAccessedAPICategoryUserDefaults 理由问询。

申诉回复模板:

仅在目标 App 的实际构建、完整聚合隐私报告及数据实践均支持相关陈述时使用此模板;删除不适用内容,并附上对应构建的报告。

text
Dear App Review Team,

Regarding the inquiry about Required Reason API usage, our submitted app includes TrackBusinessSDK.

The TrackBusinessSDK component in this build declares:
- API Type: NSPrivacyAccessedAPICategoryUserDefaults
- Reason Code: CA92.1 (To store app-specific information locally to the device)

We reviewed the complete app archive and its aggregated privacy report. The attached report reflects the app and all linked SDKs in this submitted build.

[Include a statement about tracking only if it has been verified for the complete app and all embedded SDKs.]

Thank you for your review.

2. 隐私审查要求授权前静默时的核对步骤 ​

问题现象:检测到应用首次冷启动在用户点击“同意”前已产生网络请求或写入存储。

排查方案: 确认目标应用按适用要求配置 initialConsent: .pending,且 grantConsent(level:) 仅在宿主授权流程的“同意”回调中触发;再以抓包和存储检查验证实际冷启动行为。不要仅凭配置代码或 SDK 单测向审核方声称整款应用已经满足合规要求。