如何在iOS14+ SwiftUI中判断应用程序是否进入后台?

3

我正在编写一个iOS14+应用程序,尝试使用.onChange(of: scenePhase),这据说是现代替代应用程序进入前台或后台的方法。

但当系统对话框弹出时(例如要求配对设备时)我收到.inactive阶段 - 这不同于旧的didEnterBackground/foreground!

我目前没有进行任何后台处理,因此我不会收到.background阶段 - 只有.inactive,然后再次变为.active。因此,没有简单的方法来区分系统对话框和实际进入后台.

我想知道用户是否离开了我的应用程序并回来了。这个功能在未来是否还可用?我不想使用旧的已弃用的方法。

1个回答

5

这就可以完成任务。

.onReceive(NotificationCenter.default.publisher(
    for: UIScene.willEnterForegroundNotification)) { _ in 
…
}

1
@Environment(.scenePhase) var scenePhase 对我来说没有起作用。你的方法完美地解决了问题。 - Yılmaz edis
这确实在Environment scenePhase无法工作的地方起作用。你是怎么发现这个的?为什么Environment scenePhase不起作用呢? - smakus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接