camille chaudet measure camp-tagguing_mobile_apps_june15_v1.0
TRANSCRIPT
CCT Consulting
June 2015 Camille Chaudet
Mobile Analytics Tagging mobile apps
Let's share our REX to become Mobile Analytics Heroes
Mobile Analytics and you
June 15 CCT Consulting - @camillechaudet 2
MOBILE APPS DEVELOPMENT
3 ways to develop mobile apps Native
Native code
Hybrid
Native code
HTML
Web view
HTML
Native container
June 15 CCT Consulting - @camillechaudet 4
June 15 CCT Consulting - @camillechaudet 5
June 15 CCT Consulting - @camillechaudet 6
June 15 CCT Consulting - @camillechaudet 7
MOBILE ANALYTICS TOOLS
MOBILE ANALYTICS WEB ANALYTICS
Javascript <TAG> SDK
Web Analytics server
Mobile App Web & Mobile Site
Cookie Device ID
≠
Internet
Local offline database
Real-time Server Call
Web Analytics server
Internet
Server Call
June 15 CCT Consulting - @camillechaudet 9
Mobile Analytics solutions
June 15 CCT Consulting - @camillechaudet 10
Deploying a Mobile Analytics solution
Business needs + technical
constraints Write tag plan Deploy tag
plan + settings Tests
STEP 1 STEP 2 STEP 3 STEP 4
June 15 CCT Consulting - @camillechaudet 11
Tag plan
June 15 CCT Consulting - @camillechaudet 12
Mobile Apps Tagging AT Internet native tagging code
Guide de marquage | Applications
4
//build an object and convert to json NSDictionary* info = [NSDictionary dictionaryWithObjectsAndKeys: @"my_label", @"pname", [NSNumber numberWithInteger:1234], @"vid", [NSDictionary dictionaryWithObjectsAndKeys: @"key1", @"kw", [NSNumber numberWithInteger:1], @"resultPage",nil], @"internal_search", nil]; ATParams *tag = [[ATParams alloc] init]; NSString *xtcustom = [info JSONRepresentation]; [tag put:@"stc" andValue:xtcustom]; [tag xt_sendTag]; [tag release]; Le résultat sera ceci : &stc={"pname":"my_label","vid":1234,"internal_search":{"kw" :"key1","resultPage" :1}}
iOS5 et ultérieurs
iOS 5 intègre nativement une librairie JSON , voir documentation ici : http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html Note : il est aussi possible d’utiliser un framework externe comme vu dans la partie pour iOS 4 Exemple simple : //build an info object and convert to json NSDictionary* info = [NSDictionary dictionaryWithObjectsAndKeys: @"my_label", @"pname", [NSNumber numberWithInteger:1234], @"vid", [NSDictionary dictionaryWithObjectsAndKeys: @"key1", @"kw", [NSNumber numberWithInteger:1], @"resultPage",nil], @"internal_search", nil]; //convert object to data NSError* error; NSData* jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error]; ATParams *tag = [[ATParams alloc] init]; NSString * xtcustom = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; [tag put:@"stc" andValue:xtcustom]; [tag xt_sendTag]; [tag release]; [xtcustom release]; Le résultat sera ceci : : &stc={"pname":"my_label","vid":1234,"internal_search":{"kw" :"key1","resultPage" :1}}
iOS Android
Guide de marquage | Applications
4
//build an object and convert to json NSDictionary* info = [NSDictionary dictionaryWithObjectsAndKeys: @"my_label", @"pname", [NSNumber numberWithInteger:1234], @"vid", [NSDictionary dictionaryWithObjectsAndKeys: @"key1", @"kw", [NSNumber numberWithInteger:1], @"resultPage",nil], @"internal_search", nil]; ATParams *tag = [[ATParams alloc] init]; NSString *xtcustom = [info JSONRepresentation]; [tag put:@"stc" andValue:xtcustom]; [tag xt_sendTag]; [tag release]; Le résultat sera ceci : &stc={"pname":"my_label","vid":1234,"internal_search":{"kw" :"key1","resultPage" :1}}
iOS5 et ultérieurs
iOS 5 intègre nativement une librairie JSON , voir documentation ici : http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html Note : il est aussi possible d’utiliser un framework externe comme vu dans la partie pour iOS 4 Exemple simple : //build an info object and convert to json NSDictionary* info = [NSDictionary dictionaryWithObjectsAndKeys: @"my_label", @"pname", [NSNumber numberWithInteger:1234], @"vid", [NSDictionary dictionaryWithObjectsAndKeys: @"key1", @"kw", [NSNumber numberWithInteger:1], @"resultPage",nil], @"internal_search", nil]; //convert object to data NSError* error; NSData* jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error]; ATParams *tag = [[ATParams alloc] init]; NSString * xtcustom = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; [tag put:@"stc" andValue:xtcustom]; [tag xt_sendTag]; [tag release]; [xtcustom release]; Le résultat sera ceci : : &stc={"pname":"my_label","vid":1234,"internal_search":{"kw" :"key1","resultPage" :1}}
June 15 CCT Consulting - @camillechaudet 13
Our REX
• Chaos when there is no analytics skills : lot of screens and clicks are not
taggued
• Mobile analytics is easier than web analytics because screens and clicks
are technically the same (events)
• Less errors and less constraints (no javascript conflict, no click to
transform into virtual page, etc.)
June 15 CCT Consulting - @camillechaudet 14
What about your experience?
TESTING & QA
Testing mobile apps
audience analytics
crash analysis
performance analysis
June 15 CCT Consulting - @camillechaudet 17
Different ways to test
Real devices Emulators Crowdtesting (beta testers)
June 15 CCT Consulting - @camillechaudet 18
Real devices testing
Wifi
STEP 1 : Connect the PC and the mobile device to the same wifi network
June 15 CCT Consulting - @camillechaudet 19
Real devices testing
STEP 2 : Set proxy Use the same IP adress than your computer
June 15 CCT Consulting - @camillechaudet 20
Real devices testing
STEP 3 : Catch server calls with Charles Proxy/Fiddler
June 15 CCT Consulting - @camillechaudet 21
Issues faced during QA • Too many or too few mobile devices to run tests
• Lack of time, especially to test non-regressions
• Don't know what/how to test
• Lack of tools to test
• Too many environments (DEV, INT, UAT, PRP, PROD)
• Lack of quality due to manual tests (risks of human errors)
• Lack of autonomy (need other people to run tests)
June 15 CCT Consulting - @camillechaudet 22
What about your experience?
Attendees' REX • Ask logs to developers to help debug
• Use Google Analytics first for real-time tests
• Some testing tools : Charles Proxy, Tag inspector, WASP, Hubscan,
ObservePoint, run a macro on browser consoles, Screaming Frog
• Set alerts on conversion rate drop by browser
June 15 CCT Consulting - @camillechaudet 24