Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot convert value of type 'NSMutableDictionary' to type '[NSObject: AnyObject]' in coercion for google ios Analytics

I want to add google Analytics ios into my project but i got some problems when i tried to paste their code into my app like the code below.

var tracker = GAI.sharedInstance().defaultTracker tracker.set(kGAIScreenName, value: "rootPlayView")  var builder = GAIDictionaryBuilder.createScreenView() tracker.send(builder.build() as [NSObject : AnyObject]) 

Then i got an error like this

enter image description here

how can i fix this?

Thanks!

like image 746
Varis Darasirikul Avatar asked Nov 06 '15 07:11

Varis Darasirikul


2 Answers

type conversion

type conversion table

Swift 3

Screen Track

let tracker = GAI.sharedInstance().defaultTracker tracker.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().defaultTracker  tracker!.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().defaultTracker tracker.set(kGAIDescription, value: "rootPlayView") let builder: NSObject = GAIDictionaryBuilder.createScreenView().build() tracker.send(builder as! [NSObject : AnyObject]) 

for event Track

let tracker = GAI.sharedInstance().defaultTracker let builder: NSObject = GAIDictionaryBuilder.createEventWithCategory(             "xxxx",             action: "buttonclicked",             label: "you pressed xxx button",             value: nil).build() tracker.send(builder as! [NSObject : AnyObject]) 
like image 200
Anbu.Karthik Avatar answered Oct 09 '22 21:10

Anbu.Karthik


This answer has been updated for Swift 3

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

OR...

let tracker = GAI.sharedInstance().defaultTracker tracker.set(kGAIDescription, value: "ScreenViewName") let eventTracker: NSObject = GAIDictionaryBuilder.createScreenView().build() tracker.send(eventTracker as! [NSObject : AnyObject]) 
like image 39
Włodzimierz Woźniak Avatar answered Oct 09 '22 21:10

Włodzimierz Woźniak