Skip to content

Instantly share code, notes, and snippets.

@lostincode
Created November 14, 2014 05:49
Show Gist options
  • Save lostincode/909b72f96bfbf8d7f956 to your computer and use it in GitHub Desktop.
Save lostincode/909b72f96bfbf8d7f956 to your computer and use it in GitHub Desktop.
Google Analytics Swift Extension
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)
}
}
@fatihyildizhan
Copy link

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])
    }
}

@sealz
Copy link

sealz commented Jul 2, 2016

There's a typo in the first function:

I believe func setScreeName should be func setScreenName

screeName becomes screenName

@tolbard
Copy link

tolbard commented Oct 14, 2016

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