快速操作 (3D Touch) 后的启动周期

Posted

技术标签:

【中文标题】快速操作 (3D Touch) 后的启动周期【英文标题】:Launch cycle after Quick Action (3D Touch) 【发布时间】:2015-11-06 15:42:57 【问题描述】:

当您在主页上用力按下某个应用图标并选择其快速操作之一时,您有两种选择:

1.该应用已经在运行(在后台)

在这种情况下,快速操作由performActionForShortcutItem:completionHandler:处理

2。您的应用正在启动

在这种情况下,会调用 did/willFinishLaunching,然后调用 performActionForShortcutItem:completionHandler:

我在一篇文章中读到,如果应用程序由 Quick Action 启动,则必须检查 did/willFinishLaunching,如果是,则在此处处理并返回 false,以便不会再次调用 performActionForShortcutItem:completionHandler:。我想知道为什么这种方法更好?这是因为否则您的整个应用程序会启动,然后处理快速操作而不是直接处理快速操作。

【问题讨论】:

application:performActionForShortcutItem:completionHandler: 的文档解释了您可能想要这样做的原因。 【参考方案1】:

正如 Dan 在 cmets 中指出的那样,Apple Documentation 解释了为什么我们应该这样编程。

请求的快速操作可能会使用与您的应用启动时不同的代码路径。例如,假设您的应用程序通常启动以显示视图 A,但您的应用程序是为了响应需要视图 B 的快速操作而启动的。要处理这种情况,请在启动时检查您的应用程序是否正在通过快速操作启动。

【讨论】:

以上是关于快速操作 (3D Touch) 后的启动周期的主要内容,如果未能解决你的问题,请参考以下文章

3D Touch 快速操作无法快速运行 3

从 AppDelegate 添加 3D Touch 快速操作

Swift 3D Touch iOS 10 主屏幕快速操作分享项目丢失

如何在 iOS 应用程序的 UIApplicationShortcutIcons(3D touch) 中添加 4 个以上的快速操作项

原生脚本中的 iOS 3D Touch 支持

3D Touch 快捷方式小工具