任务处理与多窗口
多任务处理让用户从一个应用快速切换到另一个应用,并在不同的设备上提供额外的体验。例如,在 iPhone 上,多任务处理让用户在使用 FaceTime 或在画中画窗口中观看视频的同时,还能使用其他的应用。
在 iPad 上,多任务处理可以让用户同时查看几个不同的应用窗口,并与之交互。一个应用还可以启用多个窗口,允许用户同时查看这些窗口,并与之交互。
iPadOS 可以提供多种配置呈现在多任务处理窗口中,支持多种工作流程。该系统还提供了多任务处理控件——让用户切换多任务处理的配置——和应用搁架,允许用户访问应用中所有打开的窗口。
用户可以选择以下配置之一,在 iPad 上打开多任务窗口。
滑动侧栏(Slide Over) 当第一个窗口全屏显示时,滑动侧栏会以覆盖在其之上的方式打开第二个窗口。用户可以改变滑动侧栏窗口在屏幕上的位置,或者将其隐藏在屏幕外,需要时再呼出窗口。人们还可以在滑动侧栏中打开多个窗口,在那里形成一个窗口堆叠。
分屏浏览并排显示两个窗口,用户可以调整窗口的相对大小,并在两个窗口的内容间进行交互。在分屏浏览中查看并排的两个窗口时,用户还可以在滑动侧栏中打开第三个窗口。
画中画可以在一个可移动、可调整大小的窗口中打开视频,并悬浮在全屏应用上方。
注释:应用不会控制多任务处理配置,也不接收任何关于用户选择的配置指示。
用户希望在他们的设备上使用多任务处理功能,如果应用不允许的话,他们可能会认为应用出了问题。除了极少数例外——比如一些仅支持全屏的 iPad 应用——每个应用都应该能很好地支持多任务处理。相关指南,请参考支持多任务处理。
为了帮助你的 iPad 应用在用户以分屏浏览或滑动侧栏形式中打开它时能够正确响应,请确保它能够优雅地适配不同的屏幕大小;相关开发指南,请参考 iPad 上的多任务处理。要了解有关用户如何使用 iPad 多任务处理功能的更多信息,请参考在你的 iPad 上使用多任务处理。
除了确保应用在多任务处理下运行良好,还需要通过一些额外的功能来支持多窗口。相关指南,请参考在 iPad 中开启多窗口;相关开发指南,请参考场景。
重点:要在 Mac 版本的 iPad 应用中启用多窗口,你必须在 iPad 上实现多窗口功能。相关指南,请参考 Mac Catalyst。
支持多任务处理
要在多任务环处理境中稳定运行,应用需要与设备上的其他应用和谐共存,最大限度地减少对 CPU、内存、屏幕空间和其他系统资源的使用。多任务处理应用还能很好地响应来自其他应用的突然中断和音频,快速流畅地与后台进行过渡,并在后台运行时为其他应用的稳定提供保障。
-
做好应对中断和恢复的准备
你的应用可以在任何时候被中断。当中断发生时,应用需要快速准确地保存当前状态,这样用户才能在返回时无缝地从他们被中断的地方继续使用。相关开发指南,请参考对应用的启动做出响应。
-
暂停那些需要用户分散注意力或主动参与的行为
例如,如果应用是游戏或媒体浏览应用,请确保用户在切换到其他应用时不会错过任何东西。当用户切换回来时,请让他们继续,就好像他们从未离开过一样。
-
对音频中断做出适当响应
有时候,应用的音频可能会被另一个应用或系统本身的音频中断。例如,Siri 发起的来电或音乐播放列表可能会中断应用的音频。当出现类似情况时,用户期望应用程序能以下方式做出响应:
- 对于主要音频的中断,应无限期暂停音频,例如在播放音乐、播客或有声读物时。
- 对于较短的中断,可以暂时降低音量或暂停音频,例如 GPS 方向通知、恢复原始音量或在中断结束时播放。
相关指南,请参考音频。
-
在后台完成用户发起的任务
当用户在应用中开始一项任务时,即使他们离开了应用,他们也希望应用能在后台继续运行。如果你的应用正在执行一项不需要额外输入的任务,请在暂停之前在后台完成它。
-
谨慎地使用通知
将应用的发送通知安排在特定时间,无论应用是暂停状态、在后台运行,还是根本没有在运行。通常情况下,避免当应用在后台完成任务时发送通知。相反,应让用户通过返回应用来查看任务情况。相关指南,请参考通知。
在 iPad 上开启多窗口
从概念上讲,iPad 应用倾向于使用两种类型的窗口来提供内容:
- 主窗口显示应用的完整层次结构,提供对应用的所有对象和与其关联的操作的访问。例如,邮件应用使用一个主窗口来展示所有的邮箱和邮件列表。
- 辅助窗口显示应用中的特定任务或区域,通常使用模态展示。辅助窗口专注于一种体验,不支持导航到其他应用区域,而且它通常包括用户在完成任务后用于关闭它的按钮。例如,邮件应用使用一个辅助窗口来呈现单一的信息。
在 iPadOS 15 及更高版本中,可以指定一种呈现样式,用于确定用户在应用中打开的每个窗口的初始外观。尽管用户可以在打开窗口后对它陈重新定位,但指定一种呈现样式可以在视觉上强化窗口的任务或内容的性质。iPadOS 定义了以下呈现样式:
-
凸显
一种凸显窗口、使周围区域变暗并防止用户与之互动的模态呈现。
-
标准
能够与对等窗口交互的并排呈现,每个窗口都支持应用的全部功能。
-
自动
系统根据应用请求窗口的场景选择的一种呈现形式。
注释:如果只需要让用户查看一个文件,你可以在不创建窗口的情况下展示它,但你的应用仍必须支持多窗口。相关开发指南,请参考 QLPreviewSceneActivationConfiguration。
-
使用突出的样式来展示一个独立的任务,用户在无需打开应用其他部分的情况下即可完成
例如,突出的样式可以很好地支持文档编辑,或其他针对特定文件或内容集合的任务。确保突出的窗口本身也是有用的;避免使用它来呈现次要任务、补充行为或选择影响主要任务的项目。
-
使用标准样式来呈现同一任务或内容的多个版本
例如,Safari 浏览器使用标准样式,帮助用户同时查看屏幕上的两个浏览窗口并与之交互。
-
只有当用户采取明确的行动时,才打开一个新窗口
例如,用户可以在应用搁架或 App Exposé 点击添加(+)按钮,或选择一个菜单项。避免通过打开一个用户不需要的新窗口来给他们制造惊喜。
-
确保应用窗口支持你所启用的每一项任务
多个窗口可以提供方便高效的工作流程,但用户始终需要能够在单个窗口中访问每个应用的功能。
-
保存用户打开的每个窗口的状态
当用户返回到一个窗口时,他们希望窗口的状态与离开它时一致。相关开发指南,请参考恢复你的应用状态。
-
考虑让用户使用手势在新窗口中打开内容
例如,用户可以使用捏合手势将备忘录应用项目展开到新窗口中。支持手势的转换始终使用突出的呈现样式,使生成的模态窗口感觉像是展开项目或任务的自然结果。相关开发指南,请参考 collectionView(_:sceneActivationConfigurationForItemAt:point:)(从集合视图项转换)或 UIWindowScene.ActivationInteraction (从任何其他视图中的项目转换)。
-
考虑提供一个菜单项,让用户在新窗口中打开内容
启用这一行为时,当应用在 iPad 上或在使用 Mac Catalyst 的 Mac 上运行时,菜单会出现一个 "在新窗口中打开 "的选项,但是当应用在 iPhone 上运行时则不会出现。如果它在你的应用中是有意义的,可以让应用在 iPhone 上运行时提供另一个显示项,例如“显示详细信息…”。你可以将“在新窗口中打开”项添加到场景菜单,或附加到按钮和工具栏按钮项的菜单上。相关开发指南,请参考 UIWindowScene.ActivationAction。
-
为提供在新窗口中打开内容的方法时,请避免指定布局
因为你不知道用户使用的是哪种多任务处理配置,所以应避免提供像“在分屏浏览中打开”或“在前面打开”之类的菜单选项。
-
在面向用户的内容中,始终使用“窗口”这一术语
无论是哪种类型,系统都将应用窗口称为“窗口”。使用不同的术语——包括“场景”一词,它指的是执行窗口——可能会让用户感到困惑。