LESSON 33 / 575 分钟
权限、隐私与安全
权限是用户对具体行为的授权,不是第一次打开应用时要一次拿齐的清单。
用你的前端经验理解
类似浏览器权限,但 App 的用途说明、签名能力、隐私声明和运行时授权是不同层次。
01 / 理解问题
为什么需要它
权限是用户在具体上下文中授予的能力,而不是安装后可以一次申请的资源清单。用户准备拍照时解释相机用途,比启动即弹一排系统窗口更容易理解。工程中的用途说明、entitlement 与运行时授权属于不同层,缺少任一必要条件都可能让功能不可用。
它是怎样工作的
授权状态可能是尚未决定、允许、拒绝或受限制,具体枚举取决于框架。拒绝后通常不能无限重弹系统授权框,应提供替代路径与合适的设置指引。最小权限还包括数据范围:只需选择一张图片时,可以优先考虑系统选择器,而不是索取整个照片库访问。
02 / 掌握要点
把关键概念连起来
1
时机
在用户触发相关功能时解释原因,再申请权限;对 denied、restricted、limited 等状态提供对应体验。
2
数据
少收集、少保存,日志脱敏。某些 API 使用需要说明理由,部分依赖涉及 privacy manifest,按当前官方要求核对。
3
安全
客户端不保存服务端密钥。网络传输使用 HTTPS,敏感凭证用 Keychain,避免把测试数据带进发布包。
03 / 案例推演
为封面选择设计渐进授权
- 默认允许使用内置封面;用户主动选择图片时打开系统选择器,仅处理返回内容。
- 如果增加拍照入口,先说明用途,再按相机框架要求查询和请求授权,处理设备不支持。
- 用户拒绝时保留已有文章与内置封面,不把无关核心功能一起锁死。
这里需要你亲自判断
Capabilities、Info.plist 用途说明、运行时权限、App Store 隐私填写不能互相替代。
04 / 动手验证
做一个小练习
为添加照片功能画出未授权、允许、有限照片、拒绝后的流程。
- 为一项系统能力列出首次请求、拒绝、已授权和系统限制四种页面行为。
- 检查日志、分析事件与导出数据中是否包含不必要的个人信息。
展开参考思路与验收标准
权限失败应是可以完成部分任务的正常分支,而不是崩溃理由。能力声明不能替代用户同意,用户同意也不代表应用可以无限收集所有相关数据。
05 / 检查理解
Capability 开启就等于用户授权了吗?
答对理解题后即可标记完成