gpt4 book ai didi

ios - 检测 iOS 应用程序是通过应用程序切换器还是从主屏幕恢复的?

转载 作者:行者123 更新时间:2023-11-29 02:49:46 25 4
gpt4 key购买 nike

我需要检测用户是否从主屏幕或应用程序切换器恢复我的应用程序。这在 Android 上非常简单,但在 iOS 上我也遇到了同样的行为。

在这两种情况下,两个委托(delegate)方法都会被调用

applicationWillEnterForegroundapplicationDidBecomeActive

如您所料。

如果出现“行为不应该有差异”之类的答案:我的应用程序在从主屏幕打开时(“新鲜”打开)应显示一个菜单,但在切换回主屏幕时应恢复。

编辑:

为了澄清,我想点击主屏幕图标似乎就像应用程序重新启动一样,即使它可能已被暂停。

最佳答案

我相信您真正试图检测的是:

  1. 是第一次发射-vs.-
  2. 我的应用程序是否已经在运行。

这种方法有一个固有的问题:与 session 模糊且应用程序通常在后台运行的 Android 不同,iOS 向用户隐藏所有应用程序的状态:一旦启动,它几乎永久存在于快速应用切换列表。直到用户明确从该列表中删除该应用 (*)。

(*) 即便如此,对您的应用程序的影响也大不相同;如果您的应用程序正在运行,则它会退出。但是你的应用程序可能早就停止了,以防 iOS 需要为另一个最前端的应用程序回收内存。就在那里,您一定会遇到不一致的情况。

(**) 此外,Springboard 也发生了同样的情况。如您所知,该应用可能已经在运行。

您只能使用以下方法区分新启动和热插拔:

  // Fresh launch
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

对比

  // App already running
- (void)applicationWillEnterForeground:(UIApplication *)application

还有更多。

您对自己的启动方式有一定的粒度(例如,从 URL 或其他应用)。请参阅 UIApplicationLaunchOptionsURLKey 以及 -application:didFinishLaunchingWithOptions: 提供的所有其他内容。

最后,许多应用程序每次被带到前台时都会显示启动画面。由于围绕 iOS 工作通常脆弱并且在下一次更新时必然崩溃,您可能只想这样做。更少的代码、更高的稳健性和一致性。

关于ios - 检测 iOS 应用程序是通过应用程序切换器还是从主屏幕恢复的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24704010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com