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

React Native:如何检测用户退出应用的时机?

iOS 应用退出时的回调与警告实现

核心方案:利用系统终止回调

iOS 中当用户主动退出应用(比如上滑划掉),系统会提供一个回调时机——UIApplicationDelegate 的 applicationWillTerminate(_:) 方法。但有个前提:如果你的应用处于后台活跃状态(比如你之前实现的后台持续运行逻辑在正常工作),这个方法会被触发;但如果应用已经被系统挂起(后台长时间未活跃),用户划掉时系统会直接终止进程,不会调用该回调。

代码实现步骤

  1. 实现终止回调逻辑
    在 AppDelegate.swift 中添加以下方法,这里可以执行自定义的收尾操作,同时通过本地通知告知用户后台程序已停止:
func applicationWillTerminate(_ application: UIApplication) {
    // 执行你的自定义回调逻辑,比如停止后台任务
    stopRunningBackgroundTasks()
    
    // 发送本地通知(弹窗可能因应用即将终止无法显示,通知更可靠)
    let notificationContent = UNMutableNotificationContent()
    notificationContent.title = "提示"
    notificationContent.body = "后台程序已停止运行"
    notificationContent.sound = UNNotificationSound.default
    
    let request = UNNotificationRequest(identifier: "TerminationNotice", content: notificationContent, trigger: nil)
    UNUserNotificationCenter.current().add(request)
}
  1. 提前申请通知权限
    要发送本地通知,需先获取用户授权,在应用启动时添加以下代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { granted, _ in
        if granted {
            application.registerForRemoteNotifications()
        }
    }
    return true
}

关键注意事项

  • 无法阻止用户退出:iOS 不允许应用拦截用户的终止操作,只能在退出前完成收尾和告知。
  • 回调触发有条件:若应用已被系统挂起,用户划掉时不会触发 applicationWillTerminate,这种场景下无法执行回调。
  • 避免复杂UI操作:回调中弹窗等UI操作大概率无法生效,因为应用即将被终止,系统不会处理UI更新,本地通知是最稳妥的告知方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:57:20