【问题标题】:In iOS 13, what events do I get when the user swipes my app up in the app switcher?在 iOS 13 中,当用户在应用切换器中向上滑动我的应用时,我会收到哪些事件?
【发布时间】:2020-02-22 15:53:04
【问题描述】:

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

【问题讨论】:

    标签: ios kill ios13


    【解决方案1】:

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

    在 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 上都运行而将我的代码加倍。

    【讨论】:

    • 你能消除“奇怪的人”场景吗?不要采取措施选择不支持多个窗口。只是不要为用户提供任何创建第二个场景的方法。目前,我不记得是否有某种 iPad 方式供用户创建多个场景,即使您的应用程序没有为用户提供一些明显的方式来创建新场景。
    • @rmaddy 我没有采取任何措施。这是您从模板中获得的应用程序。
    • 我再也没有得到 applicationWillTerminate,我做错了什么?
    • 如果你想在场景断开时做一些与场景进入后台时不同的事情,你会怎么做?按照说明工作,sceneDidDisconnect 没有任何用途。当最后一个场景被解除时,它不会被可靠地调用。当应用程序从后台状态进入终止状态时,没有调用applicationWillTerminate的原因是什么?
    • 我在 iPhone 上尝试禁用多个窗口,结果都被称为 sceneDidDisconnect(_:) 和 application(_:didDiscardSceneSessions:)。我认为 iPhone 与 iPad 没有什么不同,唯一决定生命周期或调用哪个生命周期的是启用或禁用多个窗口
    【解决方案2】:

    就我而言,我想在应用程序被用户或系统终止时保存用户状态,applicationWillTerminate(_:) 大部分时间都不会为我调用。

    我通过使用sceneWillResignActive(_ scene: UIScene)实现了我想要的

    【讨论】:

    • 这是对的,但 (a) 它是众所周知的, (b) 这不是问题所在。我问我做什么事件,而不是何时保存状态。我知道何时保存状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2011-05-04
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多