首页 > 解决方案 > 在 iOS 13 中,当用户在应用切换器中向上滑动我的应用时,我会收到哪些事件?

问题描述

当用户在 iOS 13 上的应用切换器中向上滑动我的应用时,我发现很难对我得到(或没有得到)的事件进行分类和解释。这似乎是由于多场景引起的变化支持。在那种情况下我会遇到什么事件?

标签: ioskillios13

解决方案


假设您的应用程序支持窗口场景。所以用户在应用切换器中向上滑动的实际上是一个场景,而不是你的整个应用。那么可能性似乎如下。

在 iPhone 上

如果场景在最前面:

  • sceneDidEnterBackground
  • applicationWillTerminate(_:)

但如果场景不在最前面,你将一无所获;你已经收到了sceneDidEnterBackground,现在你不会收到,applicationWillTerminate(_:)因为应用程序没有运行。

在 iPad 上,如果应用程序不支持多个窗口

如果场景在最前面:

  • sceneDidDisconnect(_:)
  • application(_:didDiscardSceneSessions:)
  • applicationWillTerminate(_:)

但如果场景不在最前面,你将一无所获;你已经收到了sceneDidEnterBackground,现在你不会收到,applicationWillTerminate(_:)因为应用程序没有运行。

在 iPad 上,如果应用确实支持多个窗口

如果场景在最前面:

  • sceneDidEnterBackground
  • applicationWillTerminate(_:)(也许)

但如果场景不在最前面,你将一无所获;您已经收到sceneDidEnterBackground,现在您不会收到,applicationWillTerminate(_:)因为应用程序未运行或应用程序未终止(如果有另一个窗口)。如果该应用程序仍在运行,您可能会得到sceneDidDisconnect(_:)并且可能application(_:didDiscardSceneSessions:)稍后。


结论

这里有什么奇怪的人?这是我们在 iPad 上运行的情况,我们支持场景但支持多个窗口。我们不明白sceneDidEnterBackground!我认为这是不连贯的。因为我们不支持多个窗口,所以这基本上是一个 iPhone 应用程序,它的行为应该像一个 iPhone 应用程序。我不应该仅仅因为我的应用程序在 iPhone 和 iPad 上都运行而将我的代码加倍。


推荐阅读