核心原则
- 最小权限原则 :只请求你的应用必须要用的权限。请求过多权限会降低用户信任度和安装转化率。
- 清晰明确的描述 :描述文案 (
Usage Description
) 必须清楚、诚实地解释为什么需要该权限。模糊的描述(如"为了提供更好的服务")是 App Store 审核被拒的常见原因。 - 适时请求:在用户即将使用到相关功能时再请求权限,而不是一启动就请求所有权限。这样用户更容易理解并同意。
隐私权限列表
以下是按功能分类的常见权限:
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 Description
和Privacy - 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
-
用途: 请求访问用户媒体库的权限。
-
描述文案示例:
"用于将您的音乐添加到播放列表。"
-
总结与最佳实践
- 按需添加 :对照你的应用功能,只将必需的权限键添加到
Info.plist
中。 - 编写诚实清晰的文案:文案是给用户看的,直接关系到用户是否授权。解释"为什么"需要,而不是"要什么"。
- 动态请求 :使用对应的 API(如
CLLocationManager.requestWhenInUseAuthorization()
)在合适的时机请求权限,而不是在AppDelegate
中一次性请求。 - 处理拒绝:你的代码应该处理用户拒绝授权的情况,优雅地降级功能或提示用户去设置中开启。
- 检查权限状态 :在请求前,先检查当前的授权状态 (
CLAuthorizationStatus
,PHAuthorizationStatus
等),避免重复请求。 - 特殊能力 :某些功能(如 HealthKit, Apple Pay, Push Notifications, NFC, 后台模式)除了
Info.plist
描述,还需要在 Xcode 的Signing & Capabilities
选项卡中启用对应能力,并可能在苹果开发者门户进行配置。
这份列表涵盖了绝大多数场景,苹果可能会随着新版本的发布引入新的权限类型,建议在开发时随时查阅 Apple's Official Documentation。