Swift:清除应用程序退出时的.sharedApplication()。shortcutItems

时间:2016-01-14 13:09:14

标签: swift 3dtouch

我实施的3D Touch动态快速操作快捷方式存在一个非常简单的问题。

我想在应用程序终止时清除快捷方式(双击“主页”按钮并向上滑动)。

我打电话给UIApplication.sharedApplication().shortcutItems.removeAll()如下:

func applicationWillTerminate(application: UIApplication) {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    // Saves changes in the application's managed object context before the application terminates.
    UIApplication .sharedApplication().shortcutItems?.removeAll()
    self.saveContext()
}

然而,它没有任何效果,并且在使用3D触控时仍会显示快速操作。

如果我将UIApplication.sharedApplication().shortcutItems?.removeAll()放在里面     func applicationDidEnterBackground(application: UIApplication),这完全符合预期......

我读过一些关于applicationDidEnterBackground在大多数情况下由于后台处理或其他原因而使用的功能......但是当用户使用app监视器终止应用程序时,必须有一种方法来实现我想要的功能向上滑动。

由于

2 个答案:

答案 0 :(得分:0)

没有尝试过这个。但这个调整应该有效。 在applicationWillTerminate上启动后台任务,并在一些小延迟后结束它。与此同时,您可以调用' UIApplication .sharedApplication()。shortcutItems?.removeAll()'。 这有望清除快捷方式。

答案 1 :(得分:0)

有动态和静态快速操作。您通过UIApplication实例的shortcutItems属性定义的第一种类型(如您的示例中所示)。您在plist文件中注册的第二种。

来自documentation

  

您的代码会创建动态快速操作,并在运行时将它们与您的应用程序对象一起注册。

     

系统会在您安装应用时注册静态快速操作。

     

如果用户为您的应用安装了更新但尚未启动更新,请按主屏幕图标显示以前安装的版本的动态快速操作。

这意味着即使应用程序关闭,系统也会记住这两种快速操作。当您的应用程序在内存中时,例如在进入后台时,系统仍然可以查询UIApplication以获取动态操作,但是当应用程序关闭时,它必须保留一些其他类型的快速操作持久性。

我认为系统与动态快速操作同步的点无法保证。我的猜测是,关闭应用程序时系统不一定要同步,你的用例可能是不受支持的用例。