在 iOS 13 中,当用户在应用切换器中向上滑动我的应用时,我会收到哪些事件?

mat*_*att 7 kill ios ios13

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

mat*_*att 7

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

在 iPhone 上

如果场景在最前面:

  • sceneDidEnterBackground
  • applicationWillTerminate(_:)

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

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

如果场景在最前面:

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

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

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

如果场景在最前面:

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

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


结论

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