已更新!检查照片后。
所有
我今天正在玩iPhone应用程序(Photovine)并注意到我希望在我的应用程序中包含的功能。当应用程序崩溃时,我正在向应用程序添加照片。我想没什么大不了的,我只是重新打开它。当我重新打开它时,BAM,UIAlertView弹出一个小文本框,询问我“当应用程序崩溃时你在做什么?”
我认为这是一个非常棒的功能,但在我发布问题之前的10秒搜索中,我找不到如何实现它。
有谁知道怎么做?
**编辑:对于尝试此操作的任何人,请记住同步您的NSUserDefaults
以使其正常运行。如果在将其写入YES后进行同步,则NSUserDefaults
方法可以正常工作。只需致电[NSUserDefaults synchronize];
,你就会变得金黄。
答案 0 :(得分:2)
没有代码 - 但主要想法是:
现在,当您启动应用程序时,检查此属性是设置为YES还是NO以指示崩溃。
答案 1 :(得分:2)
您可以为导致程序终止的条件(未捕获的异常和信号)安装处理程序,并设置您在启动时检查的标志。有关捕获异常和信号的详细信息,请参阅此Cocoa with Love post。
此代码将为未捕获的异常和信号安装处理程序,导致程序关闭。
void InstallUncaughtExceptionHandler() {
NSSetUncaughtExceptionHandler(&HandleException);
signal(SIGABRT, SignalHandler);
signal(SIGILL, SignalHandler);
signal(SIGSEGV, SignalHandler);
signal(SIGFPE, SignalHandler);
signal(SIGBUS, SignalHandler);
signal(SIGPIPE, SignalHandler);
}
SignalHandler
和HandleException
函数应该:
NSUserDefaults
设置标记以指示崩溃,并存储任何其他可能有用的信息(例如时间,以便您可以判断哪些数据与哪次崩溃有关)。在didFinishLunchingWithOptions:
方法中,您应该检查此标志。如果找到它,则显示窗口以从用户收集信息并将其发送给自己。然后清除旗帜。
答案 2 :(得分:1)
我猜应用程序会在应用程序正常终止时设置一个标志。如果应用程序加载并且未设置标志,则抛出对话框。
查看app delegate方法:
- (void)applicationWillTerminate:(UIApplication *)application
答案 3 :(得分:1)
您可以做的一件事是使用NSUserDefaults
记录应用程序启动或移动到前台的时间,然后当应用程序终止或移动到后台时,您可以记录退出时间(因为在Apple可以随时终止您的申请,恕不另行通知。每次发布时,请确保应用程序关闭时间>比应用程序启动时间,否则可能是崩溃。