LESSON 33 / 575 分钟

权限、隐私与安全

权限是用户对具体行为的授权,不是第一次打开应用时要一次拿齐的清单。

用你的前端经验理解

类似浏览器权限,但 App 的用途说明、签名能力、隐私声明和运行时授权是不同层次。

为什么需要它

权限是用户在具体上下文中授予的能力,而不是安装后可以一次申请的资源清单。用户准备拍照时解释相机用途,比启动即弹一排系统窗口更容易理解。工程中的用途说明、entitlement 与运行时授权属于不同层,缺少任一必要条件都可能让功能不可用。

它是怎样工作的

授权状态可能是尚未决定、允许、拒绝或受限制,具体枚举取决于框架。拒绝后通常不能无限重弹系统授权框,应提供替代路径与合适的设置指引。最小权限还包括数据范围:只需选择一张图片时,可以优先考虑系统选择器,而不是索取整个照片库访问。

把关键概念连起来

1

时机

在用户触发相关功能时解释原因,再申请权限;对 denied、restricted、limited 等状态提供对应体验。

2

数据

少收集、少保存,日志脱敏。某些 API 使用需要说明理由,部分依赖涉及 privacy manifest,按当前官方要求核对。

3

安全

客户端不保存服务端密钥。网络传输使用 HTTPS,敏感凭证用 Keychain,避免把测试数据带进发布包。

为封面选择设计渐进授权

  1. 默认允许使用内置封面;用户主动选择图片时打开系统选择器,仅处理返回内容。
  2. 如果增加拍照入口,先说明用途,再按相机框架要求查询和请求授权,处理设备不支持。
  3. 用户拒绝时保留已有文章与内置封面,不把无关核心功能一起锁死。

这里需要你亲自判断

Capabilities、Info.plist 用途说明、运行时权限、App Store 隐私填写不能互相替代。

做一个小练习

为添加照片功能画出未授权、允许、有限照片、拒绝后的流程。

  1. 为一项系统能力列出首次请求、拒绝、已授权和系统限制四种页面行为。
  2. 检查日志、分析事件与导出数据中是否包含不必要的个人信息。
展开参考思路与验收标准

权限失败应是可以完成部分任务的正常分支,而不是崩溃理由。能力声明不能替代用户同意,用户同意也不代表应用可以无限收集所有相关数据。

Capability 开启就等于用户授权了吗?

继续查阅官方资料
Apple Developer 官方资料

本课聚焦核心认知。具体 API、系统要求与发布政策,以当前官方文档和工程验证为准。

答对理解题后即可标记完成