際際滷

際際滷Share a Scribd company logo
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
4
@"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/R
eference.html
Note : il est aussi possible dutiliser 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
4
@"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/R
eference.html
Note : il est aussi possible dutiliser 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
+33 6 25 06 26 46
camille.chaudet@cctconsulting.fr
@camille.chaudet
Contact : Camille CHAUDET

More Related Content

Camille chaudet measure camp-tagguing_mobile_apps_june15_v1.0

  • 1. CCT Consulting June 2015 Camille Chaudet Mobile Analytics Tagging mobile apps Let's share our REX to become Mobile Analytics Heroes
  • 2. Mobile Analytics and you June 15 CCT Consulting - @camillechaudet 2
  • 4. 3 ways to develop mobile apps Native Native code Hybrid Native code HTML Web view HTML Native container June 15 CCT Consulting - @camillechaudet 4
  • 5. June 15 CCT Consulting - @camillechaudet 5
  • 6. June 15 CCT Consulting - @camillechaudet 6
  • 7. June 15 CCT Consulting - @camillechaudet 7
  • 9. 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
  • 10. Mobile Analytics solutions June 15 CCT Consulting - @camillechaudet 10
  • 11. 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
  • 12. Tag plan June 15 CCT Consulting - @camillechaudet 12
  • 13. Mobile Apps Tagging AT Internet native tagging code 4 @"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/R eference.html Note : il est aussi possible dutiliser 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 4 @"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/R eference.html Note : il est aussi possible dutiliser 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
  • 14. 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
  • 18. Different ways to test Real devices Emulators Crowdtesting (beta testers) June 15 CCT Consulting - @camillechaudet 18
  • 19. Real devices testing Wifi STEP 1 : Connect the PC and the mobile device to the same wifi network June 15 CCT Consulting - @camillechaudet 19
  • 20. Real devices testing STEP 2 : Set proxy Use the same IP adress than your computer June 15 CCT Consulting - @camillechaudet 20
  • 21. Real devices testing STEP 3 : Catch server calls with Charles Proxy/Fiddler June 15 CCT Consulting - @camillechaudet 21
  • 22. 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
  • 24. 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
  • 25. +33 6 25 06 26 46 camille.chaudet@cctconsulting.fr @camille.chaudet Contact : Camille CHAUDET