Created
November 14, 2014 05:49
-
-
Save lostincode/909b72f96bfbf8d7f956 to your computer and use it in GitHub Desktop.
Google Analytics Swift Extension
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
extension UIViewController { | |
func setScreeName(name: String) { | |
self.title = name | |
self.sendScreenView() | |
} | |
func sendScreenView() { | |
let tracker = GAI.sharedInstance().defaultTracker | |
tracker.set(kGAIScreenName, value: self.title) | |
tracker.send(GAIDictionaryBuilder.createScreenView().build()) | |
} | |
func trackEvent(category: String, action: String, label: String, value: NSNumber?) { | |
let tracker = GAI.sharedInstance().defaultTracker | |
let trackDictionary = GAIDictionaryBuilder.createEventWithCategory(category, action: action, label: label, value: value).build() | |
tracker.send(trackDictionary) | |
} | |
} |
swift 2:
extension UIViewController {
func setScreeName(name: String) {
self.title = name
self.sendScreenView()
}
func sendScreenView() {
let tracker = GAI.sharedInstance().defaultTracker
tracker.set(kGAIScreenName, value: self.title)
let builder = GAIDictionaryBuilder.createScreenView()
tracker.send(builder.build() as [NSObject : AnyObject])
}
func trackEvent(category: String, action: String, label: String, value: NSNumber?) {
let tracker = GAI.sharedInstance().defaultTracker
let trackDictionary = GAIDictionaryBuilder.createEventWithCategory(category, action: action, label: label, value: value)
tracker.send(trackDictionary.build() as [NSObject : AnyObject])
}
}
There's a typo in the first function:
I believe func setScreeName
should be func setScreenName
screeName
becomes screenName
swift 3 & GA 3.17.0:
extension UIViewController {
func setScreenName(name: String) {
self.title = name
self.sendScreenView()
}
func sendScreenView() {
weak var tracker = GAI.sharedInstance().defaultTracker
tracker!.set(kGAIScreenName, value: self.title)
tracker!.send(GAIDictionaryBuilder.createScreenView()?.build() as [NSObject : AnyObject]!)
}
func trackEvent(category: String, action: String, label: String, value: NSNumber?) {
let tracker = GAI.sharedInstance().defaultTracker
let trackDictionary = GAIDictionaryBuilder.createEvent(withCategory: category, action: action, label: label, value: value)
tracker?.send(trackDictionary?.build() as [NSObject : AnyObject]!)
}
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hey, sorry for the random comment but did you get GA to work with Swift?
I've added all the header files for GA to my bridging file and I can instantiate
GAI
objects from my AppDelegate without a problem (also added the required frameworks to the project).Now when I try to go
let tracker = GAI.sharedInstance().defaultTracker
in any of my view controllers I getUse of unresolved identifier 'GAI'
.You wouldn't have an idea of what could be going on here by any chance?
Thanks so much!