![](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/zh_CN/52d714626638d3391623c853be0c593b.png)
iOS、iPadOS 和 macOS 中支持的扩展项
iOS、iPadOS 和 macOS 允许 App 提供扩展项来增加其他 App 的功能。扩展项是具有特定用途的已签名可执行二进制代码,封装在 App 中。系统会在安装期间自动检测扩展项,并使用匹配系统让其他 App 使用扩展项。
扩展点
支持扩展项的系统区域称为扩展点。每个扩展点都提供 API,并为该区域强制执行策略。系统基于扩展点特定的匹配规则来决定哪些扩展项可用。系统自动按需启动扩展进程,并管理它们的生命周期。通过使用授权来限制特定系统 App 的扩展可用性。例如,“今天”视图小组件只显示在“通知中心”中,而共享扩展项只在“共享”面板中可用。扩展点示例有“今天”小组件、共享、操作、照片编辑、文件提供程序和自定义键盘。
扩展项如何通信
扩展项在其自己的地址空间运行。App 与其激活的扩展项之间的通信采用由系统框架协调的进程间通信。它们无权访问彼此的文件或内存空间。扩展项的设计旨在将它们彼此隔离、与其包含的 App 隔离,并且与使用它们的 App 隔离。与其他第三方 App 类似,它们也经过沙盒化并且拥有的容器与含有 App 的容器隔开。但是扩展项与其容器 App 对隐私控制具有相同的访问权限。因此,如果用户给 App 授予“通讯录”的访问权限,该 App 中嵌入的扩展项也会获得此权限,但由该 App 激活的扩展项不具有该权限。
如何使用自定义键盘
自定义键盘是一种特殊的扩展项类型,它由用户启用并适用于整个系统。启用后,键盘扩展项会用于所有文本栏,但密码输入栏和任何安全文本视图除外。为限制用户数据的传输,默认情况下自定义键盘运行在一个非常受限的沙盒中,该沙盒阻止网络访问、阻止代表进程执行网络操作的服务,并阻止可允许扩展项泄露键入数据的 API。自定义键盘的开发者可以要求其扩展项拥有“开放存取”权限,使系统在得到用户的同意后在默认的沙盒中运行扩展项。
MDM 和扩展项
对于在移动设备管理 (MDM) 解决方案中注册的设备,文稿和键盘扩展项将遵循“受管理的打开方式”规则。例如,MDM 解决方案可帮助阻止用户将受管理的 App 中的文稿导出到未受管理的文稿提供程序,或阻止他们在受管理的 App 中使用未受管理的键盘。另外,App 开发者可阻止在其 App 中使用第三方键盘扩展项。