假设我的应用程序崩溃意味着当时调用了applicationWillTerminate
函数。在该功能中,我想将崩溃日志文件保存在Temporary目录中。
当应用程序在那时启动时,我想通过编码将崩溃报告文件从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设备中查找文件我正在使用iExplorer
答案 0 :(得分:9)
很遗憾,您无法以编程方式获取设备上的崩溃日志。为了克服这个问题,有许多商业,准商业和开源解决方案。
特别是,HockeyApp(现在由Microsoft拥有)和crittercism提供商业解决方案。此外,TestFlightApp(尽管Apple购买)仍然通过其界面提供此类功能。
HockeyApp源代码也可在github上找到。
最后,这些系统中的大多数都使用名为plcrashreporter的底层崩溃捕获器,这是一个开源框架,可以在您的目录中放置几乎完全相同的iOS崩溃报告。
如果您想自己管理,我强烈建议plcrashreporter
,否则托管和商业解决方案都可用,您应该查看它们并自行决定。
答案 1 :(得分:2)
另一个有用的选项(我们使用它)是Crashlytics.com,它是免费的,并且对报告有很多控制权(现在由twitter拥有,谨慎使用!)。