25
CCT Consulting June 2015 Camille Chaudet Mobile Analytics Tagging mobile apps Let's share our REX to become Mobile Analytics Heroes

Camille chaudet measure camp-tagguing_mobile_apps_june15_v1.0

Embed Size (px)

Citation preview

Page 1: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

CCT Consulting

June 2015 Camille Chaudet

Mobile Analytics Tagging mobile apps

Let's share our REX to become Mobile Analytics Heroes

Page 2: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Mobile Analytics and you

June 15 CCT Consulting - @camillechaudet 2

Page 3: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

MOBILE APPS DEVELOPMENT

Page 4: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

3 ways to develop mobile apps Native

Native code

Hybrid

Native code

HTML

Web view

HTML

Native container

June 15 CCT Consulting - @camillechaudet 4

Page 5: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

June 15 CCT Consulting - @camillechaudet 5

Page 6: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

June 15 CCT Consulting - @camillechaudet 6

Page 7: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

June 15 CCT Consulting - @camillechaudet 7

Page 8: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

MOBILE ANALYTICS TOOLS

Page 9: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

 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

Page 10: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Mobile Analytics solutions

June 15 CCT Consulting - @camillechaudet 10

Page 11: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

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

Page 12: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Tag plan

June 15 CCT Consulting - @camillechaudet 12

Page 13: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

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

Page 14: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

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

Page 15: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

What about your experience?

Page 16: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

TESTING & QA

Page 17: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Testing mobile apps

audience analytics

crash analysis

performance analysis

June 15 CCT Consulting - @camillechaudet 17

Page 18: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Different ways to test

Real devices Emulators Crowdtesting (beta testers)

June 15 CCT Consulting - @camillechaudet 18

Page 19: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Real devices testing

Wifi

STEP 1 : Connect the PC and the mobile device to the same wifi network

June 15 CCT Consulting - @camillechaudet 19

Page 20: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Real devices testing

STEP 2 : Set proxy Use the same IP adress than your computer

June 15 CCT Consulting - @camillechaudet 20

Page 21: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

Real devices testing

STEP 3 : Catch server calls with Charles Proxy/Fiddler

June 15 CCT Consulting - @camillechaudet 21

Page 22: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

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

Page 23: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

What about your experience?

Page 24: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

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

Page 25: Camille chaudet   measure camp-tagguing_mobile_apps_june15_v1.0

+33 6 25 06 26 46

[email protected]

@camille.chaudet

Contact : Camille CHAUDET