文章目录
- Mac开发(2)沙盒苹果官方文档
- 1. 关于苹果权限文件Entitlements
Mac开发(2)沙盒苹果官方文档
1. 关于苹果权限文件Entitlements
授权赋予iOS或macOS应用特定的功能或安全权限。
设置权利值,以便启用iCloud、推送通知、Apple Pay和应用沙箱。每个授权都有一个默认值,在大多数情况下,默认值会禁用与授权关联的功能。在设置权限时,通过提供适当的键-值对来覆盖默认值。
-
Cloud授权允许您为您的iOS或macOS应用程序使用iCloud数据存储。
您可以在Xcode项目中逐个目标地设置iCloud权利值。 -
即使你的iOS或macOS应用没有执行,推送通知也可以让你的应用提醒用户。
您可以将推送通知权限值设置为配置开发和分发配置配置文件的一部分。 -
Apple Pay和PassKit授权允许使用Apple Pay进行应用内支付,并允许你的应用从PassKit库中获取通行证。
-
应用沙箱授权可以让你为macOS应用启用名为沙箱的安全特性(在iOS中,所有应用都是自动沙箱的,所以这些沙箱授权不适用)。
如果恶意代码成功地利用了您的应用程序,通过小心地只启用您需要的资源访问,您可以将潜在的破坏降到最低。您可以在Xcode项目中逐个目标地设置应用沙箱权限值。
您可以使用Xcode目标编辑器的Summary选项卡设置许多权利。其他权利需要编辑目标的权利属性列表文件。最后,一些权限继承自iOS配置配置文件,用于运行该应用程序。
要与授权键关联的值的类型取决于该键。许多授权键采用布尔值。对于Xcode项目中属性列表中定义的权利,布尔权利值为或。一些授权键接受字符串或字符串数组作为值。有关应用于各种授权密钥的值的详细信息,请参阅本文档中的章节。
要使用授权密钥,您必须对应用程序进行编码签名,因为应用程序的授权是内置在其代码签名中的。
1.1 启用iCloud在设备之间共享数据
Xcode的目标编辑器包含两个字段,可以让你为应用启用iCloud文档和键值存储。
1.2 启用推送通知来提醒用户
你可以通过苹果的推送通知服务(APNs)向用户发送推送通知,让用户知道你的应用有他们需要的信息。要在应用程序中接收此类通知,请在开发和分发配置文件中申请适当的权限。
1.3 启用Apple Pay和通行证
你可以接受应用内支付的商品和服务。你也可以在钱包里使用通行证。另外,当靠近NFC或其他射频阅读器工作时,Apple Pay界面可以被抑制,应用中还可以提供支付卡。
1.4 启用应用沙箱,以尽量减少恶意代码的损害
使用Xcode的目标编辑器为macOS项目中的目标打开和配置App Sandbox。
注意:本章描述了特定于应用沙箱macOS实现的属性列表键。它们在iOS中不可用。
在macOS Xcode项目中,通过在目标编辑器的Summary选项卡中启用设置来配置细粒度的安全权限。这些设置依次将布尔值添加到目标的.entitlement属性列表文件中的entitlement键。当您构建项目时,这些值将被合并到目标的代码签名中。
你可以把应用沙箱授权看作两个步骤:
- 沙箱是一个目标,它删除了与系统交互的大部分功能
- 根据需要,通过配置应用程序沙箱权限,将功能恢复到沙箱目标
在运行时,如果目标需要一个目标没有授权的功能或系统资源,沙箱守护进程(sandboxd)会在控制台记录一条冲突消息。
更多关于应用沙盒的信息,请阅读应用沙盒设计指南。
1.5 如果需要,使用应用沙箱临时异常
如果您无法在单一版本中将整个应用程序转换到app Sandbox,您可以使用特殊的临时异常权利。
1.5.1 应用沙箱临时异常授权
注意:本章描述了特定于应用沙箱macOS实现的属性列表键。它们在iOS中不可用。
临时异常授权允许macOS应用执行某些操作,否则应用沙箱不允许。
如果你需要申请一个临时的例外授权,使用苹果的bug报告系统让苹果知道什么是不适合你的。在开发macOS平台时,苹果会考虑功能需求。
注意:如果你申请临时例外权利,请确保遵循App Store Connect网站提供的有关权利的指导。具体来说,在App Store Connect的App Sandbox授权使用信息部分确认授权和相应的问题编号,并解释为什么你的应用需要这个异常。
要请求macOS Xcode项目中的目标的临时异常授权,请使用Xcode属性列表编辑器将其添加到目标的.entitlement属性列表文件中。
为任何临时异常授权提供的值是一个字符串或一个或多个字符串的数组。更多关于在macOS中使用临时异常的信息,请参考应用沙箱设计指南中的应用沙箱设计。
1.5.2 苹果事件临时异常
当你采用应用沙箱,你的应用保留能力:
- 接收苹果事件
- 将苹果事件发送给自己
- 响应它收到的苹果事件
但是,在应用沙箱中,你不能将苹果事件发送到其他应用,除非你配置了一个脚本目标授权或者一个苹果事件临时异常授权。
脚本目标授权是请求向提供脚本访问组的应用程序发送苹果事件的首选方式,如应用沙箱授权键所述。
当您正在编写的应用程序不提供脚本访问组时,请使用apple-events临时异常授权。这个授权包含一个字符串数组,每个字符串都应该包含你想要向其发送Apple事件的应用程序的bundle标识符。例如,要从应用程序向iPhoto发送苹果事件,你可以传递一个包含单个字符串的数组,该字符串的值为com.apple.iphoto。
scripting-targets和苹果权利并不相互排斥,即使对一个目标应用。例如,如果你的应用程序有最低OS版本比10.8,scripting-targets介绍时,和应用程序脚本Apple Mail应用程序编写消息,你继续使用临时权利(包括后缀修改::10.8),同时也包括scripting-targets权利为10.8及以后版本兼容性,如下显示:
<key>com.apple.security.temporary-exception.apple-events:before:10.8</key>
<string>com.apple.mail</string>
<key>com.apple.security.scripting-targets</key>
<dict>
<key>com.apple.mail</key>
<array>
<string>com.apple.mail.compose</string>
</array>
</dict>
1.5.3 音频单元托管临时异常
默认情况下,沙箱应用程序只加载声明自己在沙箱中使用是安全的音频单元插件。在这个临时的例外情况下,当应用程序试图加载一个不安全(或未声明)的插件时,用户会被请求获得许可。
Entitlement key | Capability |
---|---|
com.apple.security.temporary-exception.audio-unit-host | 允许托管未指定为沙箱安全的音频组件。有关详细信息,请参阅 |