【问题标题】:Complete list of iOS app permissions [closed]iOS应用权限的完整列表[关闭]
【发布时间】:2015-07-05 20:20:28
【问题描述】:

不同的网站 (e.g.) 解释说 iOS 权限模型是这样工作的:所有应用程序都有一组基本权限(包括 Internet 访问权限)。如果在运行时需要额外的权限,则会询问用户是授予还是拒绝它。

iOS 知道哪些权限?什么属于基本权限集?未经用户同意可以做什么?基本上我正在寻找一个list similar to this one,仅适用于 iOS

【问题讨论】:

  • 我真的觉得 SO 在这里失败了。在询问超过 6 年之后,以 20 票赞成和 50k 观点作为题外话结束一个问题......并且还获得了 30 票赞成的答案。要求已知的 iOS 权限不是一个非常“特定的编程问题”,同时也是一个“软件开发特有的实用、可回答的问题”(stackoverflow.com/help/on-topic)?

标签: ios permissions ios-permissions


【解决方案1】:

您可以添加到info.plist 文件中的所有密钥都列在Apple documentation 中并进行了说明。

对于大多数后台模式,您需要在 Info.plist 中添加一个键,以指示应用想要在后台运行代码。

但此信息不用于征求用户许可,仅用于确保设备兼容性。

只有一些服务需要用户许可(如地理定位和通知服务),当您的应用程序第一次尝试使用相应的 API 时,会自动询问用户。

【讨论】:

  • 如果您在 info.plist 中没有适当的密钥,有几个权限(例如访问麦克风)会导致您的应用程序立即关闭。仅当密钥首先存在时才会提示用户授予权限。
【解决方案2】:

您可以在沙盒中做的任何事情。因此,默认情况下允许访问互联网和存储文件,但不允许尝试与其他应用程序通信,例如读取相机胶卷或显示推送通知。

【讨论】:

  • “我的沙箱中的任何东西。”那是我想避免的猜测。我正在寻找一些(官方)文档。
  • 苹果没有提供任何类型的列表,恐怕您必须找到分散在各处的权限。
  • 目前默认不授予互联网访问权限 (com.apple.security.network.client)。默认情况下授予的唯一权利是用户选择的文件 (com.apple.security.files.user-selected.read-only)。权利由开发人员配置/授予,作为沙盒配置的一部分,而权限由用户授予。默认沙箱配置是主观更改的。
【解决方案3】:

好像没有官方的名单。

到目前为止,我找到了这些权限,其中粗体是基本权限:

  • 互联网访问
  • 访问地理位置
  • 使用通知服务(接收和/或显示?)
  • 与其他应用交谈
  • 访问相机
  • 访问麦克风
  • 访问电话联系人列表
  • 访问日历
  • 访问照片
  • 安排提醒

【讨论】:

  • info.plist 文件中没有提到基本权限吧?
【解决方案4】:

与其他答案相比,有一个在运行时询问的官方权限列表。它在iOS Security Guide(第 84 页)中:

iOS 有助于防止应用在未经许可的情况下访问用户的个人信息。此外,在“设置”中,用户可以查看他们允许哪些应用访问某些信息,以及授予或撤销任何未来的访问权限。这包括访问:

  • 联系方式
  • 日历
  • 提醒
  • 照片
  • 运动活动和健身
  • 定位服务
  • 苹果音乐
  • 您的音乐和视频活动
  • 麦克风
  • 相机
  • HomeKit
  • 健康
  • 语音识别
  • 蓝牙共享
  • 您的媒体库

如果用户登录 iCloud,默认情况下会授予应用访问 iCloud Drive 的权限。用户可以在设置中的 iCloud 下控制每个应用程序的访问。此外,iOS 还提供了一些限制,以防止 MDM 解决方案安装的应用和帐户与用户安装的应用和帐户之间移动数据。

从 iOS 10 开始,需要为请求的权限提供描述。在框架的开发人员文档中,您将看到是否需要这样的描述,并且访问它的 API 将导致权限提示(如果没有给出描述,则崩溃),例如查看developer documentation of the Contacts framework中的提示:

重要

在 iOS 10.0 或之后链接的 iOS 应用程序必须在其 Info.plist 文件中包含它需要访问的数据类型的使用描述键,否则它将崩溃。要专门访问联系人数据,它必须包含NSContactsUsageDescription

此外,每个 iOS/macOS 版本的可用权限的良好来源是 Information Property List Key Reference(搜索包含在单词中的 UsageDescription)。

至少还有一个其他未记录的权限需要在运行时获得用户同意:

【讨论】:

  • 很好,终于有正式的东西了!但是,阅读“这包括......”我认为这个列表也不完整。例如,我假设有访问未列出的用户地理位置的权限。
  • @JackMiller 确实如此,可能是因为在前一段中描述了位置服务。不同之处在于位置有不同的权限,例如“始终”和“使用时”。但是对于 HealthKit 来说,还有一个更细粒度的控制。它肯定会更彻底。
  • @JackMiller 第一个链接中的文档已更改。上面的 sn-p 现在在第 85 页,我认为它会随着时间的推移而更新。因此,最好提及部分名称 Privacy Controls 而不是页码
  • @SanyasiraoMopada 既然有报价,最好继续更新答案。源的较新版本可能会导致引用的部分也被更新 - 包括此答案中列出的权限更改。
猜你喜欢
  • 2011-11-23
  • 2018-03-04
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
相关资源
最近更新 更多