SlideShare uma empresa Scribd logo
1 de 34
Knowing is Understanding

      A road trip through Google
    analytics for Windows Phone
Who is
Tom Janssens
Who is?
•   Name: Tom Janssens

•   Independent consultant
•   Starting indie game developer

•   www: http://www.blugri.com
•   Facebook: http://www.facebook.com/blugri
•   Twitter: @blugri
Google
 Analytics
Account Setup
Google Analytics – Account setup
•   Accounts
•   Web Properties
•   Profiles
•   Filters

•   Advanced Segments
•   Dashboards
Google Analytics – Account
structure
Google Analytics – Accounts
•   You can only start 20 accounts
•   Given access to unlimited accounts
Google Analytics – Web
Properties
•   An account can have only 50 properties
•   Web Property = tracking code
Google Analytics – Profiles
and Filters
•   Limited to 50 profiles (over all properties)
•   Filters incoming data
•   Filters executed in order of definition
•   Always keep a profile with all raw data
Google Analytics – Advanced
Segments
•   Isolate and analyse your analytics data
•   Default or Custom Advanced Segments
Google Analytics – Dashboards
•   Sticky to login
•   Configuration sharing
•   Widgets added via filters
•   Export and Email
Google Analytics – Dashboards
Google Analytics –
Multiple apps
•   Use advances segments
•   Or filter on e.g.
    –   Page title
Google Analytics –
Going live
•   Go to marketplace   •   Or scan QR-code
•   Search “sudoku”
•   Search this icon




•   Download and
    start!
Microsoft Silverlight
Analytics Framework
      For Windows Phone
MSAF
•   Web analytics Framework
•   Supports
    – Silverlight, WPF and Windows Phone
    – Offline scenarios
    – Pageview and event tracking
    – …

•   Extensible
•   Get it from http://msaf.codeplex.com/
MSAF
The code
      C#
Adding it to your application
•   Add the code to your App.xaml
<Application.ApplicationLifetimeObjects>
        <!--Required object that handles lifetime events for the application-->
        <shell:PhoneApplicationService
            Launching="Application_Launching" Closing="Application_Closing"
            Activated="Application_Activated" Deactivated="Application_Deactivated"/>

        <Analytics:AnalyticsService x:Name="analyticsService" WebPropertyId="UA-12345678-9"
AutomaticPageTrackingEnabled="True" />
    </Application.ApplicationLifetimeObjects>
Adding it to your application
•   And to App.xaml.cs
<pre class="brush: csharp;">
public partial class App : Application
    {
        private AnalyticsTracker _tracker;
        public AnalyticsTracker Tracker
        {
            get
            {
                if (_tracker == null)
                {
                    AnalyticsService service = null;
                    foreach (var obj in this.ApplicationLifetimeObjects)
                    {
                        if (typeof(AnalyticsService).Equals(obj.GetType()))
                        {
                             service = obj as AnalyticsService;
                             break;
                        }
                    }
                    _tracker = new AnalyticsTracker(service);
                }
                return _tracker;
            }
        }
    }
Application properties
•   Google Analytics: 5 custom variables
public class AnalyticsService : IApplicationService
{                                                         Key 1:   ProductID
    private readonly IApplicationService _innerService;
    private readonly GoogleAnalytics _googleAnalytics;

    public AnalyticsService()                             Key 2:   User defined
    {
        _googleAnalytics = new GoogleAnalytics();
        _googleAnalytics.CustomVariables.Add(
            new PropertyValue
            {
                                                          Key 3:   User defined
                PropertyName = "Device ID",
                Value = AnalyticsProperties.DeviceId
            });
        ...                                               Key 4:   User defined
    }
}

                                                          Key 5:   User defined
Reading the manifest
public class PhoneHelper
{
    const string AppManifestName = "WMAppManifest.xml";
    const string AppNodeName = "App";

    public static string GetAppAttribute(string attributeName)
    {
        try
        {
            var settings = new XmlReaderSettings { XmlResolver = new XmlXapResolver() };

            using (var rdr = XmlReader.Create(AppManifestName, settings))
            {
                rdr.ReadToDescendant(AppNodeName);
                if (!rdr.IsStartElement())
                {
                    throw new FormatException(AppManifestName + " is missing " + AppNodeName);
                }
                return rdr.GetAttribute(attributeName);
            }
        }
        catch (Exception)
        {
            return "";
        }
    }
}
Pageview Tracking
public class AnalyticsService : IApplicationService
{
    private readonly IApplicationService _innerService;
    private readonly GoogleAnalytics _googleAnalytics;

    public AnalyticsService()
    {
        _googleAnalytics = new GoogleAnalytics();
        _googleAnalytics.CustomVariables.Add(
            new PropertyValue
            {
                PropertyName = "Device ID",
                Value = AnalyticsProperties.DeviceId
            });
        ...
        _innerService = new WebAnalyticsService
            {
                IsPageTrackingEnabled = true,
                Services = { _googleAnalytics, }
            };
    }
}
Pageview Tracking
•   Basic tracking
    – For apps with many pages
    – Shows in analytics as pagename.xaml?p1=v1

•   Realtime analytics
Event Tracking
public class AnalyticsTracker
{
    private AnalyticsService _service;

    public AnalyticsTracker(AnalyticsService service)
    {
        CompositionInitializer.SatisfyImports(this);

        _service = service;
    }

    [Import("Log")]
    public Action<AnalyticsEvent> Log { get; set; }

    public void Track(string category, string name, string actionValue)
    {
        Log(new AnalyticsEvent
            {
                Category = category,
                Name = name,
                ObjectName = actionValue
            });
    }
}
Event Tracking
used for pageviews
public void TrackPageView(string pageViewName)
{
    // Avoid double tracking
    if (_service != null && !_service.AutomaticPageTrackingEnabled)
    {
        Log(new AnalyticsEvent
        {
            ActionValue = pageViewName,
            HitType = Microsoft.WebAnalytics.Data.HitType.PageView,
            Name = "CurrentScreenChanged",
            NavigationState = pageViewName,
            ObjectType = pageViewName,
            AppName = Analytics.AnalyticsProperties.ApplicationTitle
            });
        }
    }
}
References
•   Google.WebAnalytics
•   Microsoft.WebAnalytics
•   Microsoft.WebAnalytics.Behaviors
•   Microsoft.WebAnalytics.Navigation
•   Microsoft.SilverlightMediaFramework.Compat
    ibility.Phone
    –   Replaces:
         •   System.ComponentModel.Composition
         •   System.ComponentModel.Composition.Initialization
•   System.Windows.Interactivity
Tracking
  options
Useful tracks
Useful trackings
•   Reviews and Sharing
    – Event Tracking
    – Get insights where to place your share /
      review buttons
Useful trackings
•   Version Tracking
    – Updates vs new downloads
    – Sticky users vs user growth
    – Store current version in isolated storage
Useful trackings
string installedVersion = AppSettingsAndStatistics.Instance.ApplicationVersion;
string currentVersion = Analytics.AnalyticsProperties.ApplicationVersion;

if (installedVersion == null)
{
    AppSettingsAndStatistics.Instance.ApplicationVersion = currentVersion;

    ((Sudoku.App)App.Current).Tracker.Track("Installation”, "New",
       string.Format("new version: {0}”,
                Analytics.AnalyticsProperties.ApplicationVersion));
}
else if (!installedVersion.Equals(currentVersion))
 {
   AppSettingsAndStatistics.Instance.ApplicationVersion = currentVersion;

    ((Sudoku.App)App.Current).Tracker.Track("Installation", "Update",
       string.Format("old version: {0} - new version: {1}",
                installedVersion,
                currentVersion));
}
Useful trackings
•   Application events
    –   Game modes
        •   Game controls
        •   Levels played / Difficulty
    – Use of Hints, Tips, …
    – Advertising
        •   Providers
        •   Number of ads displayed, clicked
    –   …
Resources
     Links
Links
•   https://www.google.com/ads/agencyedge/

•   http://msaf.codeplex.com/

•   http://www.windowsphonegeek.com/news/
    analyze-the-use-of-a-wp7-app-with-
    google-analytics-and-microsoft-silverlight-
    analytics-framework-msaf

Mais conteúdo relacionado

Mais procurados

PredictionIO - Building Applications That Predict User Behavior Through Big D...
PredictionIO - Building Applications That Predict User Behavior Through Big D...PredictionIO - Building Applications That Predict User Behavior Through Big D...
PredictionIO - Building Applications That Predict User Behavior Through Big D...predictionio
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncmdevtalk
 
Testing Android apps based on Dagger and RxJava
Testing Android apps based on Dagger and RxJavaTesting Android apps based on Dagger and RxJava
Testing Android apps based on Dagger and RxJavaFabio Collini
 
Apache Struts 2 Advance
Apache Struts 2 AdvanceApache Struts 2 Advance
Apache Struts 2 AdvanceEmprovise
 
Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2Fabio Collini
 
PredictionIO - Scalable Machine Learning Architecture
PredictionIO - Scalable Machine Learning ArchitecturePredictionIO - Scalable Machine Learning Architecture
PredictionIO - Scalable Machine Learning Architecturepredictionio
 
Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020
Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020
Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020Alex Thissen
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andevMike Nakhimovich
 

Mais procurados (8)

PredictionIO - Building Applications That Predict User Behavior Through Big D...
PredictionIO - Building Applications That Predict User Behavior Through Big D...PredictionIO - Building Applications That Predict User Behavior Through Big D...
PredictionIO - Building Applications That Predict User Behavior Through Big D...
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
 
Testing Android apps based on Dagger and RxJava
Testing Android apps based on Dagger and RxJavaTesting Android apps based on Dagger and RxJava
Testing Android apps based on Dagger and RxJava
 
Apache Struts 2 Advance
Apache Struts 2 AdvanceApache Struts 2 Advance
Apache Struts 2 Advance
 
Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2
 
PredictionIO - Scalable Machine Learning Architecture
PredictionIO - Scalable Machine Learning ArchitecturePredictionIO - Scalable Machine Learning Architecture
PredictionIO - Scalable Machine Learning Architecture
 
Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020
Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020
Logging tracing and metrics in .NET Core and Azure - dotnetdays 2020
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
 

Destaque

Open Police Design Principles - Open Belgium 2016
Open Police Design Principles - Open Belgium 2016Open Police Design Principles - Open Belgium 2016
Open Police Design Principles - Open Belgium 2016Timble
 
CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...
CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...
CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...Global Business Intel
 
Marketing Strategy Assessing &amp; Estimating Market Demand
Marketing Strategy Assessing &amp; Estimating Market DemandMarketing Strategy Assessing &amp; Estimating Market Demand
Marketing Strategy Assessing &amp; Estimating Market DemandMostafa Ewees
 
Management - Planning (6)
Management - Planning (6)Management - Planning (6)
Management - Planning (6)Gary Bye
 
Assessing Your Sales & Marketing Processes
Assessing Your Sales & Marketing ProcessesAssessing Your Sales & Marketing Processes
Assessing Your Sales & Marketing ProcessesMisty Hibbler Khan
 
Management - Assessing (5)
Management - Assessing (5)Management - Assessing (5)
Management - Assessing (5)Gary Bye
 
Front-end on Steroids
Front-end on SteroidsFront-end on Steroids
Front-end on SteroidsTimble
 

Destaque (9)

Open Police Design Principles - Open Belgium 2016
Open Police Design Principles - Open Belgium 2016Open Police Design Principles - Open Belgium 2016
Open Police Design Principles - Open Belgium 2016
 
CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...
CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...
CMO Event - Assessing customer satisfaction and harnessing the marketing oppo...
 
Marketing Strategy Assessing &amp; Estimating Market Demand
Marketing Strategy Assessing &amp; Estimating Market DemandMarketing Strategy Assessing &amp; Estimating Market Demand
Marketing Strategy Assessing &amp; Estimating Market Demand
 
Management - Planning (6)
Management - Planning (6)Management - Planning (6)
Management - Planning (6)
 
PWHN 5/11/10 Presentation
PWHN 5/11/10 PresentationPWHN 5/11/10 Presentation
PWHN 5/11/10 Presentation
 
V4: Sub‐basin management and governance of rainwater and small reservoirs
V4: Sub‐basin management and governance of rainwater and small reservoirsV4: Sub‐basin management and governance of rainwater and small reservoirs
V4: Sub‐basin management and governance of rainwater and small reservoirs
 
Assessing Your Sales & Marketing Processes
Assessing Your Sales & Marketing ProcessesAssessing Your Sales & Marketing Processes
Assessing Your Sales & Marketing Processes
 
Management - Assessing (5)
Management - Assessing (5)Management - Assessing (5)
Management - Assessing (5)
 
Front-end on Steroids
Front-end on SteroidsFront-end on Steroids
Front-end on Steroids
 

Semelhante a Knowing is Understanding: A road trip through Google analytics for Windows Phone

Cómo tener analíticas en tu app y no volverte loco
Cómo tener analíticas en tu app y no volverte locoCómo tener analíticas en tu app y no volverte loco
Cómo tener analíticas en tu app y no volverte locoGemma Del Olmo
 
Google Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCMGoogle Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCMAmplexor
 
Integrating Google Analytics in Android apps
Integrating Google Analytics in Android appsIntegrating Google Analytics in Android apps
Integrating Google Analytics in Android appsFranklin van Velthuizen
 
AnDevCon - Tracking User Behavior Creatively
AnDevCon - Tracking User Behavior CreativelyAnDevCon - Tracking User Behavior Creatively
AnDevCon - Tracking User Behavior CreativelyKiana Tennyson
 
第一次用Parse就深入淺出
第一次用Parse就深入淺出第一次用Parse就深入淺出
第一次用Parse就深入淺出Ymow Wu
 
Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎
Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎
Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎Qingwen zhao
 
20200815 inversions
20200815 inversions20200815 inversions
20200815 inversionsChiwon Song
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Mahmoud Hamed Mahmoud
 
Opticon 2015 - Getting Started with the Optimizely Developer Platform
Opticon 2015 - Getting Started with the Optimizely Developer PlatformOpticon 2015 - Getting Started with the Optimizely Developer Platform
Opticon 2015 - Getting Started with the Optimizely Developer PlatformOptimizely
 
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...Learnosity
 
Testing android apps with espresso
Testing android apps with espressoTesting android apps with espresso
Testing android apps with espressoÉdipo Souza
 
Google analytics
Google analyticsGoogle analytics
Google analyticsSean Tsai
 
Android Support Library: Using ActionBarCompat
Android Support Library: Using ActionBarCompatAndroid Support Library: Using ActionBarCompat
Android Support Library: Using ActionBarCompatcbeyls
 
Application Frameworks: The new kids on the block
Application Frameworks: The new kids on the blockApplication Frameworks: The new kids on the block
Application Frameworks: The new kids on the blockRichard Lord
 
PredictionIO – A Machine Learning Server in Scala – SF Scala
PredictionIO – A Machine Learning Server in Scala – SF ScalaPredictionIO – A Machine Learning Server in Scala – SF Scala
PredictionIO – A Machine Learning Server in Scala – SF Scalapredictionio
 
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rules
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rules[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rules
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rulesSrijan Technologies
 

Semelhante a Knowing is Understanding: A road trip through Google analytics for Windows Phone (20)

Cómo tener analíticas en tu app y no volverte loco
Cómo tener analíticas en tu app y no volverte locoCómo tener analíticas en tu app y no volverte loco
Cómo tener analíticas en tu app y no volverte loco
 
Google Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCMGoogle Analytics intro - Best practices for WCM
Google Analytics intro - Best practices for WCM
 
Integrating Google Analytics in Android apps
Integrating Google Analytics in Android appsIntegrating Google Analytics in Android apps
Integrating Google Analytics in Android apps
 
AnDevCon - Tracking User Behavior Creatively
AnDevCon - Tracking User Behavior CreativelyAnDevCon - Tracking User Behavior Creatively
AnDevCon - Tracking User Behavior Creatively
 
第一次用Parse就深入淺出
第一次用Parse就深入淺出第一次用Parse就深入淺出
第一次用Parse就深入淺出
 
Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎
Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎
Apache Eagle: 来自eBay的分布式实时Hadoop数据安全引擎
 
Node.js and Parse
Node.js and ParseNode.js and Parse
Node.js and Parse
 
20200815 inversions
20200815 inversions20200815 inversions
20200815 inversions
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Opticon 2015 - Getting Started with the Optimizely Developer Platform
Opticon 2015 - Getting Started with the Optimizely Developer PlatformOpticon 2015 - Getting Started with the Optimizely Developer Platform
Opticon 2015 - Getting Started with the Optimizely Developer Platform
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
Introduction toandroid
Introduction toandroidIntroduction toandroid
Introduction toandroid
 
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...
 
Tips for Angular Applications
Tips for Angular ApplicationsTips for Angular Applications
Tips for Angular Applications
 
Testing android apps with espresso
Testing android apps with espressoTesting android apps with espresso
Testing android apps with espresso
 
Google analytics
Google analyticsGoogle analytics
Google analytics
 
Android Support Library: Using ActionBarCompat
Android Support Library: Using ActionBarCompatAndroid Support Library: Using ActionBarCompat
Android Support Library: Using ActionBarCompat
 
Application Frameworks: The new kids on the block
Application Frameworks: The new kids on the blockApplication Frameworks: The new kids on the block
Application Frameworks: The new kids on the block
 
PredictionIO – A Machine Learning Server in Scala – SF Scala
PredictionIO – A Machine Learning Server in Scala – SF ScalaPredictionIO – A Machine Learning Server in Scala – SF Scala
PredictionIO – A Machine Learning Server in Scala – SF Scala
 
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rules
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rules[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rules
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rules
 

Último

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Knowing is Understanding: A road trip through Google analytics for Windows Phone

  • 1. Knowing is Understanding A road trip through Google analytics for Windows Phone
  • 3. Who is? • Name: Tom Janssens • Independent consultant • Starting indie game developer • www: http://www.blugri.com • Facebook: http://www.facebook.com/blugri • Twitter: @blugri
  • 5. Google Analytics – Account setup • Accounts • Web Properties • Profiles • Filters • Advanced Segments • Dashboards
  • 6. Google Analytics – Account structure
  • 7. Google Analytics – Accounts • You can only start 20 accounts • Given access to unlimited accounts
  • 8. Google Analytics – Web Properties • An account can have only 50 properties • Web Property = tracking code
  • 9. Google Analytics – Profiles and Filters • Limited to 50 profiles (over all properties) • Filters incoming data • Filters executed in order of definition • Always keep a profile with all raw data
  • 10. Google Analytics – Advanced Segments • Isolate and analyse your analytics data • Default or Custom Advanced Segments
  • 11. Google Analytics – Dashboards • Sticky to login • Configuration sharing • Widgets added via filters • Export and Email
  • 12. Google Analytics – Dashboards
  • 13. Google Analytics – Multiple apps • Use advances segments • Or filter on e.g. – Page title
  • 14. Google Analytics – Going live • Go to marketplace • Or scan QR-code • Search “sudoku” • Search this icon • Download and start!
  • 16. MSAF • Web analytics Framework • Supports – Silverlight, WPF and Windows Phone – Offline scenarios – Pageview and event tracking – … • Extensible • Get it from http://msaf.codeplex.com/
  • 17. MSAF
  • 18. The code C#
  • 19. Adding it to your application • Add the code to your App.xaml <Application.ApplicationLifetimeObjects> <!--Required object that handles lifetime events for the application--> <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated"/> <Analytics:AnalyticsService x:Name="analyticsService" WebPropertyId="UA-12345678-9" AutomaticPageTrackingEnabled="True" /> </Application.ApplicationLifetimeObjects>
  • 20. Adding it to your application • And to App.xaml.cs <pre class="brush: csharp;"> public partial class App : Application { private AnalyticsTracker _tracker; public AnalyticsTracker Tracker { get { if (_tracker == null) { AnalyticsService service = null; foreach (var obj in this.ApplicationLifetimeObjects) { if (typeof(AnalyticsService).Equals(obj.GetType())) { service = obj as AnalyticsService; break; } } _tracker = new AnalyticsTracker(service); } return _tracker; } } }
  • 21. Application properties • Google Analytics: 5 custom variables public class AnalyticsService : IApplicationService { Key 1: ProductID private readonly IApplicationService _innerService; private readonly GoogleAnalytics _googleAnalytics; public AnalyticsService() Key 2: User defined { _googleAnalytics = new GoogleAnalytics(); _googleAnalytics.CustomVariables.Add( new PropertyValue { Key 3: User defined PropertyName = "Device ID", Value = AnalyticsProperties.DeviceId }); ... Key 4: User defined } } Key 5: User defined
  • 22. Reading the manifest public class PhoneHelper { const string AppManifestName = "WMAppManifest.xml"; const string AppNodeName = "App"; public static string GetAppAttribute(string attributeName) { try { var settings = new XmlReaderSettings { XmlResolver = new XmlXapResolver() }; using (var rdr = XmlReader.Create(AppManifestName, settings)) { rdr.ReadToDescendant(AppNodeName); if (!rdr.IsStartElement()) { throw new FormatException(AppManifestName + " is missing " + AppNodeName); } return rdr.GetAttribute(attributeName); } } catch (Exception) { return ""; } } }
  • 23. Pageview Tracking public class AnalyticsService : IApplicationService { private readonly IApplicationService _innerService; private readonly GoogleAnalytics _googleAnalytics; public AnalyticsService() { _googleAnalytics = new GoogleAnalytics(); _googleAnalytics.CustomVariables.Add( new PropertyValue { PropertyName = "Device ID", Value = AnalyticsProperties.DeviceId }); ... _innerService = new WebAnalyticsService { IsPageTrackingEnabled = true, Services = { _googleAnalytics, } }; } }
  • 24. Pageview Tracking • Basic tracking – For apps with many pages – Shows in analytics as pagename.xaml?p1=v1 • Realtime analytics
  • 25. Event Tracking public class AnalyticsTracker { private AnalyticsService _service; public AnalyticsTracker(AnalyticsService service) { CompositionInitializer.SatisfyImports(this); _service = service; } [Import("Log")] public Action<AnalyticsEvent> Log { get; set; } public void Track(string category, string name, string actionValue) { Log(new AnalyticsEvent { Category = category, Name = name, ObjectName = actionValue }); } }
  • 26. Event Tracking used for pageviews public void TrackPageView(string pageViewName) { // Avoid double tracking if (_service != null && !_service.AutomaticPageTrackingEnabled) { Log(new AnalyticsEvent { ActionValue = pageViewName, HitType = Microsoft.WebAnalytics.Data.HitType.PageView, Name = "CurrentScreenChanged", NavigationState = pageViewName, ObjectType = pageViewName, AppName = Analytics.AnalyticsProperties.ApplicationTitle }); } } }
  • 27. References • Google.WebAnalytics • Microsoft.WebAnalytics • Microsoft.WebAnalytics.Behaviors • Microsoft.WebAnalytics.Navigation • Microsoft.SilverlightMediaFramework.Compat ibility.Phone – Replaces: • System.ComponentModel.Composition • System.ComponentModel.Composition.Initialization • System.Windows.Interactivity
  • 29. Useful trackings • Reviews and Sharing – Event Tracking – Get insights where to place your share / review buttons
  • 30. Useful trackings • Version Tracking – Updates vs new downloads – Sticky users vs user growth – Store current version in isolated storage
  • 31. Useful trackings string installedVersion = AppSettingsAndStatistics.Instance.ApplicationVersion; string currentVersion = Analytics.AnalyticsProperties.ApplicationVersion; if (installedVersion == null) { AppSettingsAndStatistics.Instance.ApplicationVersion = currentVersion; ((Sudoku.App)App.Current).Tracker.Track("Installation”, "New", string.Format("new version: {0}”, Analytics.AnalyticsProperties.ApplicationVersion)); } else if (!installedVersion.Equals(currentVersion)) { AppSettingsAndStatistics.Instance.ApplicationVersion = currentVersion; ((Sudoku.App)App.Current).Tracker.Track("Installation", "Update", string.Format("old version: {0} - new version: {1}", installedVersion, currentVersion)); }
  • 32. Useful trackings • Application events – Game modes • Game controls • Levels played / Difficulty – Use of Hints, Tips, … – Advertising • Providers • Number of ads displayed, clicked – …
  • 33. Resources Links
  • 34. Links • https://www.google.com/ads/agencyedge/ • http://msaf.codeplex.com/ • http://www.windowsphonegeek.com/news/ analyze-the-use-of-a-wp7-app-with- google-analytics-and-microsoft-silverlight- analytics-framework-msaf

Notas do Editor

  1. Independent consultant, mainly .NET, functional analystLong term experience in mobileWhat am I not:No google analytics expert or certificationLearned from experience and tracking windows phone applications in the last 6 months
  2. Before we start: who are you?Who has already used google analytics?Who has already used filters?Who has already used advanced segments?Who has already used google analytics for silverlight / windows phone?Why google analytics: because I wanted the data as raw as possible?
  3. Used when data is collected:AccountsWeb propertiesProfilesFiltersUsed / Customizable anytimeAdvances segmentsDashboards
  4. Start max 20 accounts, but given access to unlimited  client should start the accountNo more than one account / clientElse clients have access to each other dataShow account list in gaShow how to set up an account
  5. NOT POSSIBLE to change property from one account to anotherWeb property = tracking codeShow how to create a property
  6. Profile is a filtered web propertyMultiple filters can be appliedData that is not in the filter cannot be usedShow how to create profiles / filters
  7. More flexible than filters.Can be changed at runtime Not always 100% correct as not all data is usedShow how to create advanced sements
  8. More flexible than filters. Can be changed at runtimeConfiguration sharing happens at time of sharing, updates of configuration are not automatically sharedExport and email is PDF onlyShow how to create dashboards
  9. More flexible than filters. Can be changed at runtimeConfiguration sharing happens at time of sharing, updates of configuration are not automatically sharedExport and email is PDF only
  10. Filter on page title: Only when pages are tracked manually and page title is application name
  11. Only when pages are tracked manually and page title is application nameShow real time analytics
  12. Support for many analytics services
  13. - Any information of the phone or user can be used as a custom variable- But remember filters do not work on custom variables
  14. Any information of the phone or user can be used as a custom variableOther custom variables are generally read from the manifest fileXml parserCopied from coding4fun libraryUse complete library if you use other features
  15. Any information of the phone or user can be used as a custom variable
  16. You can track more than pageviewsEvent tracking is most useful for apps as they tell what the user does
  17. Any information of the phone or user can be used as a custom variable
  18. Microsoft does not provide version informationTracking from Microsoft is a couple of days behind