Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ios应用程序中存储崩溃日志文件?_Ios_Objective C_Ios6_Crash Reports - Fatal编程技术网

如何在ios应用程序中存储崩溃日志文件?

如何在ios应用程序中存储崩溃日志文件?,ios,objective-c,ios6,crash-reports,Ios,Objective C,Ios6,Crash Reports,假设我的应用程序崩溃,意味着此时调用了applicationWillTerminate函数。在该函数中,我希望将崩溃日志文件保存在临时目录中。 当应用程序启动时,我想通过编码将崩溃报告文件从iOS设备上传到我的服务器位置 我正在使用此代码保存崩溃日志文件 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirec

假设我的应用程序崩溃,意味着此时调用了
applicationWillTerminate
函数。在该函数中,我希望将崩溃日志文件保存在临时目录中。 当应用程序启动时,我想通过编码将崩溃报告文件从iOS设备上传到我的服务器位置

我正在使用此代码保存崩溃日志文件

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
但这段代码将在模拟器中工作。我可以在中看到此文件

/Users/UserNAme/Library/Application Support/iPhone Simulator/6.0/Applications/xxx-yyy-sss--eee/Documents/console.log
但是我在ios设备中找不到这个文件

注:
为了在我正在使用的ios设备中查找文件,不幸的是,您无法通过编程方式获取设备上的crashlog。为了克服这个问题,有许多商业、准商业和开源解决方案

特别是,(现在归微软所有)并提供商业解决方案。此外,(虽然由苹果购买)仍然通过其界面提供此类功能

HockeyApp源代码也可在上获得

最后,这些系统中的大多数都使用了一个名为的底层崩溃捕捉器,这是一个开源框架,它将iOS崩溃报告的一个几乎完全相同的副本放在您的目录中


如果你想自己管理事情,我强烈建议
plcrashreporter
,否则托管解决方案和商业解决方案都是可用的,你应该看看它们并自己决定。

另一个有用的选择(我们使用它)是Crashlytics.com,它是免费的,并且对报告有很大的控制权(现在归twitter所有,小心使用!).

当然,我将此应用程序TestFlightApp用于devoper、s和tester的测试目的。在这里,我只想将崩溃文件发送到特定的邮件id。上面的答案仍然正确。如果你需要自己处理崩溃报告,你必须自己生成它。绝对没有办法打破沙箱并从设备内获取崩溃报告的操作系统版本。唯一的其他选择是手动从设备上获取,或者使用iTunes或Xcode,但我得到的印象是,您希望对现场放置的设备而不是开发设备执行此操作。此外,大多数托管解决方案可以与实时应用程序以及测试应用程序一起使用。