不同的网站(例如)解释 iOS 权限模型是这样工作的:所有应用程序都有一组基本权限(包括 Internet 访问权限)。如果在运行时需要额外的权限,则询问用户是授予还是拒绝它。
iOS 知道哪些权限?什么属于基本权限集?未经用户同意可以做什么?基本上我正在寻找一个类似于这个的列表,仅适用于 iOS
与其他答案相比,有一个在运行时询问的官方权限列表。它在iOS 安全指南(p. 84) 中:
iOS 有助于防止应用在未经许可的情况下访问用户的个人信息。此外,在“设置”中,用户可以查看他们允许哪些应用访问某些信息,以及授予或撤销任何未来的访问权限。这包括访问:
- 联系人
- 日历
- 提醒
- 相片
- 运动活动和健身
- 位置服务
- 苹果音乐
- 您的音乐和视频活动
- 麦克风
- 相机
- 家庭套件
- 健康
- 语音识别
- 蓝牙共享
- 您的媒体库
如果用户登录 iCloud,则默认情况下应用程序被授予对 iCloud Drive 的访问权限。用户可以在设置中的 iCloud 下控制每个应用程序的访问。此外,iOS 提供了一些限制,以防止 MDM 解决方案安装的应用程序和帐户与用户安装的应用程序和帐户之间移动数据。
从 iOS 10 开始,需要为请求的权限提供描述。在框架的开发者文档中,您将看到是否需要这样的描述,并且访问它的 API 将导致权限提示(如果没有给出描述,则会导致崩溃),例如,请参阅框架的开发者文档中的Contacts
提示:
重要的
在 iOS 10.0 或之后链接的 iOS 应用程序必须在其
Info.plist
文件中包含它需要访问的数据类型的使用描述键,否则它将崩溃。要专门访问联系人数据,它必须包括NSContactsUsageDescription
.
此外,每个 iOS/macOS 版本的可用权限的一个很好的来源是信息属性列表键参考(搜索UsageDescription
包含在单词中)。
至少还有一个其他未记录的权限需要在运行时获得用户同意:
您可以添加到info.plist
文件中的所有密钥都列在Apple 文档中并进行了说明。
对于大多数后台模式,您需要在 Info.plist 中添加一个键来指示应用程序想要在后台运行代码。
但此信息不用于询问用户许可,仅用于确保设备兼容性。
只有某些服务需要用户许可(如地理定位和通知服务),当您的应用程序第一次尝试使用相应的 API 时,会自动向用户询问这些许可。
似乎没有可用的官方列表。
到目前为止,我找到了这些权限,其中粗体是基本权限:
您可以执行沙箱中的任何操作。因此,默认情况下允许访问互联网和存储文件,但不允许尝试与其他应用程序对话,例如读取相机胶卷或显示推送通知。