一文精通- iOS隐私权限

核心原则

  1. 最小权限原则 :只请求你的应用必须要用的权限。请求过多权限会降低用户信任度和安装转化率。
  2. 清晰明确的描述 :描述文案 (Usage Description) 必须清楚、诚实地解释为什么需要该权限。模糊的描述(如"为了提供更好的服务")是 App Store 审核被拒的常见原因。
  3. 适时请求:在用户即将使用到相关功能时再请求权限,而不是一启动就请求所有权限。这样用户更容易理解并同意。

隐私权限列表

以下是按功能分类的常见权限:

1. 位置 (Location)

用于获取用户设备的地理位置信息。

  • Privacy - Location When In Use Usage Description

    • 键名 : NSLocationWhenInUseUsageDescription

    • 用途 : 请求在应用使用期间访问位置的权限。这是最常见的位置请求类型。

    • 描述文案示例:

      "用于记录您跑步的路线并绘制轨迹图。"

      "获取您所在城市的天气信息。"

      "为您推荐附近的餐厅和便利店。"

  • Privacy - Location Always and When In Use Usage Description

    • 键名 : NSLocationAlwaysAndWhenInUseUsageDescription (iOS 11+)

    • 用途 : 请求始终 访问位置的权限(包括应用在后台时)。需要极其充分的理由(如导航、健身跟踪),苹果审核非常严格。

    • 描述文案示例:

      "持续记录您的骑行路径,即使屏幕关闭也能正常工作。"

      "在您接近提醒地点时,在后台为您发送通知。"

  • Privacy - Location Temporary Usage Description Dictionary (iOS 14+)

    • 键名 : NSLocationTemporaryUsageDescriptionDictionary

    • 用途 : 请求一次性的精确定位权限。适用于只需要一次精确定位,之后无需持续追踪的场景。

    • 描述文案 : 这是一个字典,需要提供 Purpose Key 和对应的描述。

      xml

      xml 复制代码
      <key>NSLocationTemporaryUsageDescriptionDictionary</key>
      <dict>
        <key>NavigationPurpose</key>
        <string>我们需要您精确的位置来为您提供转弯导航服务。</string>
      </dict>

2. 相机 (Camera)

用于使用设备的前后置摄像头。

  • Privacy - Camera Usage Description

    • 键名 : NSCameraUsageDescription

    • 用途: 请求使用相机的权限。

    • 描述文案示例:

      "用于扫描二维码以解锁共享单车。"

      "拍摄照片和视频来发布您的生活动态。"

      "进行视频通话和直播。"

3. 相册 (Photo Library)

用于访问用户设备上的照片和视频。

  • Privacy - Photo Library Usage Description

    • 键名 : NSPhotoLibraryUsageDescription

    • 用途 : 请求读取和添加照片/视频的权限(完整访问)。

    • 描述文案示例:

      "用于您选择照片来设置个人头像。"

      "上传图片和视频来撰写您的旅行博客。"

  • Privacy - Photo Library Additions Usage Description

    • 键名 : NSPhotoLibraryAddUsageDescription

    • 用途 : 请求仅添加(写入) 照片/视频到相册的权限,而不读取已有内容。隐私友好度更高。

    • 描述文案示例:

      "将您编辑好的图片保存到相册。"

      "将下载的视频保存到您的相机胶卷中。"

4. 麦克风 (Microphone)

用于使用设备的麦克风录制音频。

  • Privacy - Microphone Usage Description

    • 键名 : NSMicrophoneUsageDescription

    • 用途: 请求使用麦克风的权限。

    • 描述文案示例:

      "用于录制语音消息发送给朋友。"

      "在进行视频录制时捕获声音。"

      "进行语音输入转换文字。"

5. 通讯录 (Contacts)

用于读取或写入用户的联系人列表。

  • Privacy - Contacts Usage Description

    • 键名 : NSContactsUsageDescription

    • 用途: 请求访问通讯录的权限。

    • 描述文案示例:

      "用于查找您的好友是否也在使用本应用。"

      "为您选择联系人以分享内容。"

      "将活动信息快速添加至联系人。"

6. 蓝牙 (Bluetooth)

用于与蓝牙设备进行交互。

  • Privacy - Bluetooth Always Usage Description (iOS 13+)

    • 键名 : NSBluetoothAlwaysUsageDescription

    • 用途 : 请求始终使用蓝牙的权限(用于扫描、连接外围设备)。替代了旧的 NSBluetoothPeripheralUsageDescription

    • 描述文案示例:

      "连接并控制您的智能手表。"

      "与无线耳机配对以播放音乐。"

7. 日历和提醒事项 (Calendar & Reminders)

用于读取或写入用户的日历和提醒事项。

  • Privacy - Calendars Usage Description

    • 键名 : NSCalendarsUsageDescription

    • 用途: 请求访问日历的权限。

    • 描述文案示例:

      "将您预定的会议添加到系统日历中。"

      "同步您的日程安排并设置提醒。"

  • Privacy - Reminders Usage Description

    • 键名 : NSRemindersUsageDescription

    • 用途: 请求访问提醒事项的权限。

    • 描述文案示例:

      "将您的待办事项创建为提醒。"

8. 运动与健身 (Motion & Fitness)

用于访问运动与健身数据(如步数、爬楼层数)。

  • Privacy - Motion Usage Description

    • 键名 : NSMotionUsageDescription

    • 用途: 请求访问陀螺仪、加速计等Motion协处理器数据以跟踪运动。

    • 描述文案示例:

      "记录您的步数和行走距离以计算卡路里消耗。"

      "在游戏中通过晃动设备进行操作。"

  • Privacy - Health Share Usage DescriptionPrivacy - Health Update Usage Description

    • 键名 : NSHealthShareUsageDescription, NSHealthUpdateUsageDescription

    • 用途 : 请求从HealthKit读取 (Share)和写入 (Update)健康数据的权限。需要配置HealthKit能力

    • 描述文案示例:

      "将您的步行数据同步到健康App中。"

      "读取您的心率数据用于分析睡眠质量。"

9. 语音识别 (Speech Recognition)

用于将音频转换为文本。

  • Privacy - Speech Recognition Usage Description

    • 键名 : NSSpeechRecognitionUsageDescription

    • 用途: 请求使用设备语音识别功能的权限。

    • 描述文案示例:

      "将您的语音指令转换为文字。"

      "为视频内容自动生成字幕。"

10. 本地网络 (Local Network)

用于发现并与本地网络上的设备(如智能家居设备、打印机、游戏主机)通信。

  • Privacy - Local Network Usage Description (iOS 14+)

    • 键名 : NSLocalNetworkUsageDescription

    • 用途: 请求访问本地网络的权限。

    • 描述文案示例:

      "用于发现和连接您家里的智能电视。"

      "与同一局域网内的其他设备进行游戏联机。"

11. 追踪 (Tracking) - 极其重要

用于追踪用户 across apps and websites,用于广告或数据共享。

  • Privacy - Tracking Usage Description (iOS 14+)

    • 键名 : NSUserTrackingUsageDescription

    • 用途 : 请求追踪用户的权限。必须使用 AppTrackingTransparency (ATT) 框架弹窗请求 ,仅配置 Info.plist 无效。

    • 描述文案示例 (必须非常明确地告知追踪用途):

      "您的数据将用于向您展示个性化广告。"

      "允许与第三方数据合作伙伴共享标识符,用于分析和广告投放。"

12. Face ID (生物识别)

用于使用 Face ID 或 Touch ID 进行身份验证。

  • Privacy - Face ID Usage Description (iOS 11+)

    • 键名 : NSFaceIDUsageDescription

    • 用途: 请求使用 Face ID(对于有 Touch ID 的设备,此描述也会显示在 Touch ID 提示中)的权限。

    • 描述文案示例:

      "使用面容ID快速安全地解锁应用和进行支付验证。"

13. 媒体库 (Apple Music)

用于访问用户的 Apple Music 或 iTunes 媒体库。

  • Privacy - Media Library Usage Description (iOS 9.3+)

    • 键名 : NSAppleMusicUsageDescription

    • 用途: 请求访问用户媒体库的权限。

    • 描述文案示例:

      "用于将您的音乐添加到播放列表。"

总结与最佳实践

  1. 按需添加 :对照你的应用功能,只将必需的权限键添加到 Info.plist 中。
  2. 编写诚实清晰的文案:文案是给用户看的,直接关系到用户是否授权。解释"为什么"需要,而不是"要什么"。
  3. 动态请求 :使用对应的 API(如 CLLocationManager.requestWhenInUseAuthorization())在合适的时机请求权限,而不是在 AppDelegate 中一次性请求。
  4. 处理拒绝:你的代码应该处理用户拒绝授权的情况,优雅地降级功能或提示用户去设置中开启。
  5. 检查权限状态 :在请求前,先检查当前的授权状态 (CLAuthorizationStatus, PHAuthorizationStatus 等),避免重复请求。
  6. 特殊能力 :某些功能(如 HealthKit, Apple Pay, Push Notifications, NFC, 后台模式)除了 Info.plist描述,还需要在 Xcode 的 Signing & Capabilities 选项卡中启用对应能力,并可能在苹果开发者门户进行配置。

这份列表涵盖了绝大多数场景,苹果可能会随着新版本的发布引入新的权限类型,建议在开发时随时查阅 Apple's Official Documentation

相关推荐
袁煦丞1 小时前
Wiki.js团队知识大脑/个人笔记管家:cpolar内网穿透实验室第496个成功挑战
前端·程序员·远程工作
游戏开发爱好者83 小时前
基于uni-app的iOS应用上架,从打包到分发的全流程
android·ios·小程序·https·uni-app·iphone·webview
不自律的笨鸟4 小时前
iPhone 17 Pro 全新配色确定,首款折叠屏 iPhone 将配备 Touch ID 及四颗镜头
ios·iphone
南囝coding5 小时前
Claude Code 官方内部团队最佳实践!
前端·后端·程序员
深盾科技5 小时前
探索Swift Package Manager:全面指南
开发语言·ios·swift
袁煦丞5 小时前
Redis内存闪电侠:cpolar内网穿透第614个成功挑战
前端·程序员·远程工作
袁煦丞6 小时前
DS file文件管家远程自由:cpolar内网穿透实验室第492个成功挑战
前端·程序员·远程工作
SimonKing6 小时前
想搭建知识库?Dify、MaxKB、Pandawiki 到底哪家强?
java·后端·程序员
Danny_FD7 小时前
解决 null byte is not allowed in input:PNPM/npm 下载报错的编码陷阱
前端·程序员