沉默的3D Touch快捷操作

4
针对 iPhone 6s/6s+ 的新 3D Touch 功能,我正在尝试在我的应用程序中添加一些主屏幕快捷操作。我已经成功实现了通过按住主屏幕上应用图标,选择其中一个快速操作,并在所有可能的应用状态下恰当处理该操作的正常流程。
我的问题是:是否可以在可用的快速动作中创建一个“静默”操作?所谓的“静默”是指某些操作将发生,但应用程序不会启动完整的启动过程,或者只会启动但不会处于前台?
更新: 我想要类似于 HealthKit 在后台传递数据的行为,在存储库中发生变化时,HealthKit 唤醒我的应用程序并给我一个机会在后台执行某些操作(例如查询存储库中的新数据)。
在阅读了苹果公司大量有关此主题的文档后,我感觉当前 API 不支持该功能,但我希望有人能给我惊喜。
1个回答

2

不是的。触发主屏幕快捷操作的用户总是会激活应用程序。

如果您的应用程序已经在运行并被挂起,它将回到前台,并且您的应用程序委托将收到application:performActionForShortcutItem:completionHandler:消息。如果您的应用程序没有运行(即自安装以来未运行过,或者之前处于后台/挂起状态但稍后被清除了内存),它将启动,并且您的应用程序委托将收到application:didFinishLaunchingWithOptions:消息,然后再收到application:performActionForShortcutItem:completionHandler:消息。(因此,您的did/willFinishLaunching处理程序需要检查选项字典是否可能通过快捷操作启动。)

无论哪种方式,您的应用程序都将回到前台。


如果我们没有添加任何与3D快速操作相关的实现,我认为默认行为是打开共享屏幕而不启动应用程序(苹果的默认实现)。因此,我试图实现相同的功能,但似乎如果我添加了更多原始快速操作,我无法支持它。 - tokentoken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接