2015-06-02 8 views
13

Chciałbym śledzić wydarzenie, gdy użytkownik kliknie Uibutton w Google Analytics. Mam poniższy kod, ale wyświetlany jest błąd. Gdzie się mylę? DziękiŚledzenie zdarzeń UIButton Google Analytics (Swift)

Kod:

@IBAction func startGame1(sender: AnyObject) { 

     var tracker = GAI.sharedInstance().defaultTracker 

     tracker.send(GAIDictionaryBuilder.createEventWithCategory("Game 1", action: "Start Pressed", label: "Start Timer One", value: nil).build()) 
    } 

Błąd:

Cannot invoke 'send' with an argument list of type'(NSMutableDictionarry)' 
+0

możliwe duplikat [Google Analytics nie działa z Swift 1.2 i Xcode 6.3] (http://stackoverflow.com/questions/29591930/google-analytics-not-working-with -swift-1-2-and-xcode-6-3) – jregnauld

Odpowiedz

15

Od Swift 1.2 jest zwolniony, trzeba rzucić GAIDictionaryBuilder jak [NSObject : AnyObject]

Zobacz ten post na StackOverflow

Google Analytics not working with Swift 1.2 and Xcode 6.3

Jest to rozwiązanie dla problemu

@IBAction func startGame1(sender: AnyObject) { 

     var tracker = GAI.sharedInstance().defaultTracker 

     tracker.send(GAIDictionaryBuilder.createEventWithCategory("Game 1", action: "Start Pressed", label: "Start Timer One", value: nil).build() as [NSObject : AnyObject]) 
    } 

Nadzieję, że to pomaga!

+2

Hej, juz pomoc w Swift 2.0, błąd: NSMutableDictionary nie jest konwertowalny na [NSObject: AnyObject] . sugestia? –

14

Ta odpowiedź została zaktualizowana do Swift 3

let tracker = GAI.sharedInstance().defaultTracker 
tracker.set(kGAIDescription, value: "ScreenViewName") 
let eventTracker: NSObject = GAIDictionaryBuilder.createScreenView().build() 
tracker.send(eventTracker as! [NSObject : AnyObject]) 

albo ...

let tracker = GAI.sharedInstance().defaultTracker 
let eventTracker: NSObject = GAIDictionaryBuilder.createEvent( 
      withCategory: "SomeCategory", 
      action: "SomeAction", 
      label: "SomeLabel", 
      value: nil).build() 
tracker.send(eventTracker as [NSObject : AnyObject]!) 
+0

Niesamowite dzięki ... Dokumentacja Google'a nie została jeszcze w pełni zaktualizowana dla Swift ... również, jest naprawdę ciężko, że samouczek SDK dla iOS nie działa :( –

+0

@ChrisAllinson moja przyjemność) –

12

Swift 3: Należy użyć "[AnyHashable: Wszelkie]" zamiast [NSObject: AnyObject] .

Źródło: https://developer.apple.com/swift/blog/?id=39

guard let tracker = GAI.sharedInstance().defaultTracker else {return} 
let eventTracker: NSObject = GAIDictionaryBuilder.createEvent(
    withCategory: YOUR_CATEGORY_NAME, 
    action: YOUR_ACTION_NAME, 
    label: YOUR_LABEL_NAME, 
    value: nil).build() 
tracker.send(eventTracker as! [AnyHashable: Any]) 
+1

To jest poprawna odpowiedź – Gibraltar