Swift中Google Analytics异常跟踪的正确语法是什么?

时间:2016-03-01 22:50:07

标签: ios swift google-analytics google-analytics-v4 google-analytics-sdk

我尝试在Google Analytics中为我的应用使用异常跟踪。 https://developers.google.com/analytics/devguides/collection/ios/v3/exceptions

我只是想在Swift中找出这个语法(不熟悉Obj-C):

@try {
    // Request some scores from the network.
    NSArray *highScores = [self getHighScoresFromCloud];
}
@catch (NSException *exception) {
    // May return nil if a tracker has not already been initialized with a
    // property ID.
    id tracker = [[GAI sharedInstance] defaultTracker];
    [tracker send:[[GAIDictionaryBuilder
        createExceptionWithDescription:@"Connection timout %d: %@", connectionError, errorDescription  // Exception description. May be truncated to 100 chars.
    withFatal:@NO] build]];  // isFatal (required). NO indicates non-fatal exception.
}

我已经设置了我的智能设备,并且将其他数据保存到GA工作正常,只是在Swift中调用createExceptionWithDescription()的语法,我不确定。

对于使用Swift进行Google Analytics操作的示例/文档,肯定没有什么好处... = /如果您知道,请告诉我们!

感谢。

2 个答案:

答案 0 :(得分:1)

谢谢,黄大卫,你的帖子帮助了我很多,使我的语法正确。

这篇文章也对我有很大帮助: Cannot convert value of type 'NSMutableDictionary' to type '[NSObject: AnyObject]' in coercion for google ios Analytics

最终为我工作的是:

let tracker = GAI.sharedInstance().defaultTracker
let eventTracker: NSObject = GAIDictionaryBuilder.createExceptionWithDescription("No internet connection.", withFatal: false).build()
tracker.send(eventTracker as! [NSObject : AnyObject])

再次感谢!

答案 1 :(得分:0)

我想象它的某些东西:

let dictionaryToSend = GAIDictionaryBuilder.createExceptionWithDescription("Connection timeout \(connectionError): \(errorDescription)", withFatal: NSNumber(bool: false)).build()

如果它的一个类函数在Obj-C中写成

[GAIDictionaryBuilder createExceptionWithDescription:...]; // objc

它写得像

GAIDictionaryBuilder.createExceptionWithDescription(...); // swift

obj-c中的每个冒号都表示一个参数变量。

// Broken into two lines to make it easier to read
    [GAIDictionaryBuilder createExceptionWithDescription: @"String here"
                          withFatal: @NO]; 

你可以在swift中做同样的事情:

//Comma separated 
    GAIDictionaryBuilder.createExceptionWithDescription("Description String",
                                                        withFatal: NSNumber(bool:false));

我建议你学习一点ObjC消息语法,因为很多iOS代码仍然在ObjC中,但不要担心它的大量内容。斯威夫特是一种更好的语言。