快速操作 (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) 后的启动周期的主要内容,如果未能解决你的问题,请参考以下文章
从 AppDelegate 添加 3D Touch 快速操作
Swift 3D Touch iOS 10 主屏幕快速操作分享项目丢失
如何在 iOS 应用程序的 UIApplicationShortcutIcons(3D touch) 中添加 4 个以上的快速操作项