使用Google Analytics iOS跟踪崩溃

5

你好
我在我的中使用Google Analytics。 我正在跟踪应用程序的安装,屏幕访问和点击事件。
现在,我想追踪应用程序中的崩溃和异常及其原因和位置(位置指的是方法名称、行号或其他任何东西)。 我已经阅读了谷歌提供的文档,但没有得到有用的信息。
有人可以帮我吗?任何示例都将不胜感激。


更新:这里,我附上GA仪表板的截图链接。

enter image description here

3个回答

7
你可以发送已经符号化的回溯信息。 我将sendUncaughtExceptions设置为FALSE并手动发送。
id tracker = [[GAI sharedInstance] defaultTracker];

NSString * model = [[UIDevice currentDevice] model];
NSString * version = [[UIDevice currentDevice] systemVersion];
NSArray * backtrace = [exception callStackSymbols];
NSString * description = [NSString stringWithFormat:@"%@.%@.%@.Backtrace:%@",
                          model,
                          version,
                          exception.description,
                          backtrace];

[tracker send:[[GAIDictionaryBuilder
                createExceptionWithDescription:description  // Exception description. May be truncated to 100 chars.
                withFatal:NO] build]];     

(模型和版本可选)

堆栈跟踪将具有 <已编辑>,但最重要的类和方法将是符号化(崩溃发生的位置),您将知道在哪里。

** 编辑 **

如何处理异常

  1. 详细说明
  2. 下载示例文件“UncaughtExceptions.zip”
  3. UncaughtExceptionHandler.m中的方法"handleException:(NSException *)exception"内,您可以按照自己的方式进行操作,在我的情况下,我有其他方法来验证异常,并在此后发送到GAI。

你是如何处理异常的?这意味着我不想在每个函数中都写try-catch。 - Paras Gandhi
2
我正在使用这个:http://www.cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html - 下载示例“UncaughtExceptions.zip”,在“handleException:(NSException *)exception”中,您可以调用任何您想要的内容。 - silvaric

1
我还没有使用过Google Analytics的崩溃报告功能,但是发现了这个可能会有帮助。
您可以使用以下代码让Google Analytics(v2)报告未捕获的异常,即崩溃情况。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GAI sharedInstance].sendUncaughtExceptions = YES; // Enable 

  // ... the rest of your code, include other GAI properties you want to set.
}

我认为这些崩溃报告不会被符号化,因为设备无法对其进行符号化。因此,您可能需要自己对收到的崩溃报告进行符号化,以了解导致此崩溃的代码行号。
请查看在哪里查看Google Analytics iOS崩溃日志? 参考:符号化iPhone应用程序崩溃报告 希望能有所帮助!

谢谢您的回答。但是,我该如何在Google Analytics中实现这个(符号化崩溃报告)?我必须跟踪App Store上的应用程序崩溃情况。 - Piyush
我已经在application:didFinishLaunchingWithOptions函数中编写了上述代码行。但是,我想跟踪应用程序崩溃的代码行(或函数)。我在“Crashes&Exceptions”标签中收到以下消息:NSInvalidArgumentException Trace: -[NSObject(NSObject) doesNotRecognizeSelector:] ___forwarding___ _CF_forwarding_prep_0 CFStringGetLength _CPCreateUT。现在,我想知道这个崩溃发生在哪里,以及是由什么原因引起的? - Piyush
@Piyush 你需要在GA仪表板上检查描述字段,其中会显示堆栈跟踪。这将向您展示导致应用程序崩溃的函数是哪个。 - Amar
让我们在聊天中继续这个讨论 - Piyush
@Piyush 嗯,这似乎是很少的信息来确定崩溃的位置。不确定你如何继续下去。 - Amar
显示剩余5条评论

0

Swift 3

    GAI.sharedInstance().trackUncaughtExceptions = true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接