Cannot convert value of type 'NSMutableDictionary' to type '[NSObject: AnyObject]' in coercion for google ios Analytics
type conversion
Swift 3
Screen Track
let tracker = GAI.sharedInstance().defaultTrackertracker.set(kGAIScreenName, value: "Home")tracker.send(GAIDictionaryBuilder.createScreenView().build() as [AnyHashable : Any])
Objective-C
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];// Set the screen name on the tracker so that it is used in all hits sent from this screen.[tracker set:kGAIScreenName value:@"Home"];[tracker send:[[GAIDictionaryBuilder createScreenView] build]];
Automatic Screen Tracking
Swift 3
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) self!.screenName = "About Screen"}
Objective-C
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.screenName = @"About Screen";}
event Track
Swift 3
let tracker = GAI.sharedInstance().defaultTrackertracker!.send(GAIDictionaryBuilder.createEventWithCategory("ui_action", action: "button_press", label: "menuButton", play: nil).build())
Objective-C
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action" // Event category (required) action:@"button_press" // Event action (required) label:@"play" value:nil] build]];
or use
weak var tracker = GAI.sharedInstance().defaultTracker// Set screen name on the tracker to be sent with all hits. tracker!.set(kGAIScreenName, value: "Home Screen")// Send a screen view for "Home Screen".// [tracker send:[[GAIDictionaryBuilder createAppView] build]]; // Previous V3 SDK versions.tracker!.send(GAIDictionaryBuilder.createScreenView().build())// SDK Version 3.08 and up.// This event will also be sent with &cd=Home%20Screen.tracker!.send(GAIDictionaryBuilder.createEventWithCategory("UX", action: "touch", label: "menuButton", value: nil).build())// Clear the screen name field when we're done.tracker!.set(kGAIScreenName, value: nil)
for more information see this
example
try this
var builder = GAIDictionaryBuilder.createScreenView().build() as! [NSObject : AnyObject]tracker.send(builder)
for screen track
let tracker = GAI.sharedInstance().defaultTrackertracker.set(kGAIDescription, value: "rootPlayView")let builder: NSObject = GAIDictionaryBuilder.createScreenView().build()tracker.send(builder as! [NSObject : AnyObject])
for event Track
let tracker = GAI.sharedInstance().defaultTrackerlet builder: NSObject = GAIDictionaryBuilder.createEventWithCategory( "xxxx", action: "buttonclicked", label: "you pressed xxx button", value: nil).build()tracker.send(builder as! [NSObject : AnyObject])
This answer has been updated for Swift 3
let tracker = GAI.sharedInstance().defaultTrackerlet eventTracker: NSObject = GAIDictionaryBuilder.createEvent( withCategory: "SomeCategory", action: "SomeAction", label: "SomeLabel", value: nil).build()tracker.send(eventTracker as [NSObject : AnyObject]!)
OR...
let tracker = GAI.sharedInstance().defaultTrackertracker.set(kGAIDescription, value: "ScreenViewName")let eventTracker: NSObject = GAIDictionaryBuilder.createScreenView().build()tracker.send(eventTracker as! [NSObject : AnyObject])
For GA 3.17.0 use:
let tracker = GAI.sharedInstance().defaultTrackerlet builder = GAIDictionaryBuilder.createEvent(withCategory: category, action: action, label: nil, value: nil).build()tracker?.send(builder as [NSObject : AnyObject]!)
Note the !
at the end of [NSObject: AnyObject]!
.