You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI应用进入后台后立即被终止问题求助

SwiftUI应用进入后台立刻被终止的解决办法

问题现象

真机(iPhone 13 iOS16.6)上SwiftUI应用进入后台后立刻被Signal 9终止,模拟器无此问题;即使关闭所有应用、重启手机后仍存在,仅需短时间(10秒内)返回时能恢复应用状态。

项目代码:

import SwiftUI

@main
struct testApp: App {
    
    @Environment(\.scenePhase) var scenePhase

    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .onChange(of: scenePhase) { newPhase in
            if newPhase == .active {
                print("Active")
            } else if newPhase == .inactive {
                print("Inactive")
            } else if newPhase == .background {
                print("Background")
            }
        }
    }
}

控制台输出:

2023-09-04 12:21:50 +0000 - Inactive
2023-09-04 12:21:50 +0000 - Active <- swipe to home without killing the app
2023-09-04 12:21:52 +0000 - Inactive
2023-09-04 12:21:53 +0000 - Background
2023-09-04 12:21:53 +0000 - Message from debugger: Terminated due to signal 9

排查与解决步骤

1. 断开Xcode调试会话测试

调试器附加到应用时,iOS可能会对后台应用采取更严格的终止策略。按以下步骤测试:

  • 在Xcode中点击停止按钮终止调试会话,或直接拔掉iPhone与Mac的数据线
  • 手动在真机上打开应用,切换到后台,等待10秒后返回
  • 若此时应用未被终止,说明问题是调试器附加导致的正常行为,实际发布版不会出现此问题

2. 检查Info.plist配置

确认是否存在强制后台退出的配置:

  • 打开项目的Info.plist文件
  • 查找UIApplicationExitsOnSuspend键,若存在且值为YES,将其删除或改为NO
  • 该键默认不存在,若误添加会导致应用进入后台立刻终止

3. 检查后台模式配置

  • 打开项目的Signing & Capabilities标签页,查看Background Modes
  • 若未开启任何后台模式,保持现状即可;若开启了不需要的模式,可取消勾选(无后台任务需求时无需开启任何后台模式)

4. 验证Xcode Scheme设置

  • 点击Xcode顶部的Scheme选择框,选择Edit Scheme...
  • 进入Run -> Options标签页,确认没有勾选与后台终止相关的选项(如部分版本Xcode中的Terminate App After Entering Background)

补充说明

正常情况下,无后台权限的iOS应用进入后台后会先挂起而非立刻终止,短时间内返回可恢复状态。若以上步骤都排查后仍存在问题,可尝试:

  • 更新Xcode到最新版本(当前14.3.1可升级至15.x版本)
  • 重置iPhone的所有设置(设置->通用->传输或还原iPhone->还原->还原所有设置,不会删除数据)

内容的提问来源于stack exchange,提问作者Danilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:25:12