检测我的应用程序的意外关闭

Sar*_*ith 11 objective-c ios swift

有时用户按下主页按钮并从最近的列表中关闭应用程序.

我想用" This application not properly closed last time" 这样的消息来警告用户.

如何检测这种意外关闭应用程序?有什么办法吗?另外我想保存用户填写的数据.

下面的方法工作正常,但在后台停留一段时间后关闭应用程序将不会被调用到此方法.

- (void)applicationWillTerminate:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

swift 3.0中有什么解决方案吗?

Roe*_*e84 5

要保存用户填写的数据,您应该使用func applicationDidEnterBackground(_ application: UIApplication)函数.

这是功能描述:

//使用此方法释放共享资源,保存用户数据,使计时器无效,并存储足够的应用程序状态信息,以便将应用程序恢复到当前状态,以防以后终止.//如果您的应用程序支持后台执行,则在用户退出时调用此方法而不是applicationWillTerminate:

至于"此应用程序上次没有正确关闭"消息,您想要呈现给用户 - 显示此类消息是错误的.关闭应用程序的方法是按主屏幕并从列表中关闭它,这是预期的行为.

  • 这应该被接受,因为它是正确的答案.此外,它清楚地表明*你不应该做这样的对话*.基本上iOS关于应用程序关闭原因的理念是"这不关你的事".您需要"准备好"终止,无论是用户的结果(从任务管理器中刷过)还是系统.整个生命周期比通常更复杂.请参阅https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html#//apple_ref/doc/uid/TP40007072-CH2-SW3 (4认同)

The*_*tor -3

在应用程序委托中,您可以检查不同的事件。检查 applicationWillResignActive 方法或 ApplicationDidEnterBackground。

适当的位置将取决于您的用例。