如何阻止 iOS 在执行关键操作时终止应用程序?
How do I discourage iOS from terminating app while doing a critical operation?
我有一个通过 BLE 与自定义硬件通信的应用程序。在正常情况下,我希望我的应用程序在用户按下主页按钮时快速终止。但是,当我的应用程序正在我的自定义硬件上更新固件时,我想劝阻 iOS 终止应用程序。此固件操作从开始到结束大约需要五分钟。我知道没有办法绝对阻止 iOS 终止应用程序,但是我可以做些什么来阻止它在执行固件更新操作时终止我的应用程序吗?
如果你需要3分钟或更少的时间,你可以在做更新时使用beginBackgroundTaskWithName:expirationHandler:,这样应用程序会在后台请求时间继续运行以完成任务即使用户按下主页按钮。问题是它只给你 3 分钟,不会超过 3 分钟。
鉴于 3 分钟显然不足以让您完成上传,如果您走这条路,我建议结合使用屏幕上的一些看起来非常严肃的消息,告诉用户不要离开应用程序.您还可以在应用程序即将进入后台 (applicationDidEnterBackground
) 时安排本地通知,提醒用户 return 应用程序,否则将面临严重后果。
更好的是,您可以将应用声明为需要适当后台模式的应用。例如,有可能适用的专用背景模式 bluetooth-central
或 bluetooth-peripheral
。那么三分钟的限制就不适用了。请参阅 iOS 的 应用程序编程指南中的 Declaring Your App’s Supported Background Tasks。
我有一个通过 BLE 与自定义硬件通信的应用程序。在正常情况下,我希望我的应用程序在用户按下主页按钮时快速终止。但是,当我的应用程序正在我的自定义硬件上更新固件时,我想劝阻 iOS 终止应用程序。此固件操作从开始到结束大约需要五分钟。我知道没有办法绝对阻止 iOS 终止应用程序,但是我可以做些什么来阻止它在执行固件更新操作时终止我的应用程序吗?
如果你需要3分钟或更少的时间,你可以在做更新时使用beginBackgroundTaskWithName:expirationHandler:,这样应用程序会在后台请求时间继续运行以完成任务即使用户按下主页按钮。问题是它只给你 3 分钟,不会超过 3 分钟。
鉴于 3 分钟显然不足以让您完成上传,如果您走这条路,我建议结合使用屏幕上的一些看起来非常严肃的消息,告诉用户不要离开应用程序.您还可以在应用程序即将进入后台 (applicationDidEnterBackground
) 时安排本地通知,提醒用户 return 应用程序,否则将面临严重后果。
更好的是,您可以将应用声明为需要适当后台模式的应用。例如,有可能适用的专用背景模式 bluetooth-central
或 bluetooth-peripheral
。那么三分钟的限制就不适用了。请参阅 iOS 的 应用程序编程指南中的 Declaring Your App’s Supported Background Tasks。