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
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
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 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
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 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
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