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

Swift开发iOS应用时如何检测用户终止应用的行为

iOS检测用户终止应用的系统回调说明

核心结论

目前iOS系统提供的API中,sceneDidDisconnect(_ scene: UIScene) 是唯一覆盖绝大多数用户终止应用场景的回调,完全符合你的使用需求。

各系统回调的实际触发逻辑

  • func applicationWillTerminate(_ application: UIApplication)
    仅Info.plist中配置UIApplicationExitsOnSuspend = true(即不支持后台挂起)的应用会在终止时触发该回调,所有支持后台运行的应用,无论用户手动杀进程还是系统回收进程,都不会触发该方法。
  • func sceneDidEnterBackground(_ scene: UIScene)
    只要场景离开前台进入后台就会触发,涵盖用户切到其他App、按Home键回到桌面、用户手动终止应用等所有场景,确实无法区分是临时进入后台还是会被彻底终止。
  • func sceneDidDisconnect(_ scene: UIScene)
    只要场景被彻底销毁就会触发,覆盖所有正常的应用终止场景:用户前台直接上滑杀进程、应用先进入后台后用户再手动杀进程、iPad多窗口下单独关闭某个场景、系统资源不足主动回收应用进程。你后续测试得出的「先后台再终止也会触发」的结论完全正确。

补充说明

仅存在极端场景下的例外:应用发生闪退、设备强制断电/重启、系统触发最高优先级的紧急资源回收直接杀掉应用进程时,所有系统回调都不会执行,该情况属于iOS进程管理的原生限制,没有可覆盖的API。
如果需要做数据保存这类高优先级操作,建议将轻量的保存逻辑提前放在sceneDidEnterBackground中执行,sceneDidDisconnect中做二次状态校验即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:30:05