In the previous post I showed how to instrument a Windows Phone app with Google Analytics using GoogleAnalyticsTracker.WindowsPhone. There are couple issues with this approach. It requires writing a substantial amount of code for event and custom variables tracking. Google Analytics for Windows Phone solves the issue of custom variables, but its performance is inferior to GoogleAnalyticsTracker.WindowsPhone. Furhtermore, both nugets suffer from a major shortcoming of supporting only single provider, Google Analytics (GA). If for any reason you decide to switch to another provider, it would require changing every file in the app which has a GA fingerprint. Having used three different analytics providers (PreEmptive, Flurry, and GA) in the past two years, I have experienced the pain first hand. Something had to be done to relieve the pain and stop the suffering.
Analytics for Windows Phone
Introducing Analytics for Windows Phone nuget to rule them all. It abstracts out analytics providers and makes it trivial to swap in and out different providers. Even though it currently only supports GA, it takes the best features of both existing nugets and provides them in a single and simple to use nuget package. Its performance is on par with GoogleAnalyticsTracker.WindowsPhone and simplicity of use goes beyond Google Analytics for Windows Phone. The custom variables are sent with every call to Track method. You do not need to explicitly define or call them. What variables are sent you may ask? Here they are:
Instrumenting an App
After installing the package build your app solution. Open App.cs file and add a static property Tracker as shown below. We will use this property throughout the app to call tracking events.
Conclusion
Instrumenting an app with provider independent framework has never been easier. Even though it currently supports only Google Analytics, other providers can be easily added. Am I going to add any new ones? I do not have any plans for now. If I decide to switch to a new provider then I would definitely add it. If you prefer a different provider and are willing to contribute to the project, I would be more than happy to work with you in extending the nuget package.
Let me know what you think in the comments below.
Analytics for Windows Phone
Introducing Analytics for Windows Phone nuget to rule them all. It abstracts out analytics providers and makes it trivial to swap in and out different providers. Even though it currently only supports GA, it takes the best features of both existing nugets and provides them in a single and simple to use nuget package. Its performance is on par with GoogleAnalyticsTracker.WindowsPhone and simplicity of use goes beyond Google Analytics for Windows Phone. The custom variables are sent with every call to Track method. You do not need to explicitly define or call them. What variables are sent you may ask? Here they are:
Index | Variable key | Variable value example |
1 | Device ID | {48a98908-8449-e011-854c-00237de2db9e} |
2 | Application version | 3.5 |
3 | Device OS | WP 7.10.8773 |
4 | Device | Nokia - Lumia 900 |
5 | TotalMemory | 256 MB |
Instrumenting an App
After installing the package build your app solution. Open App.cs file and add a static property Tracker as shown below. We will use this property throughout the app to call tracking events.
public partial class App : ApplicationMake sure to replace YourPropertyId above with the Id you have created on GA portal. If you do not know how to do that, check the previous post. Now we can start instrumenting the app with tracking events. Since we already have App.cs file open, lets add a track method that will be called when unhandled exception occurs in the app.
{
private static AnalyticsTracker _tracker;
public static AnalyticsTracker Tracker
{
get
{
if (null == _tracker)
{
AnalyticsTrackerCreator creator = new
GACreator("YourPropertyId");
_tracker = creator.Instance;
}
return _tracker;
}
}
}
public partial class App : ApplicationOnce the app experiences a crash the event along with custom variables will be sent to Google Analytics and in several minutes it will show up on the web portal. This is good enough for scenarios that do not require real-time tracking. However, we may be interested to know how many people are using the app or a particular feature of the app at this moment. For those type of scenarios we need to use the real-time tracking mechanism. Let's add it to the OnNavigatedTo method on the main page.
{
// Code to execute on Unhandled Exceptions
private void Application_UnhandledException(object sender,
ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
System.Diagnostics.Debugger.Break();
}
else
{
App.Tracker.Track(EventCategories.Exception,
EventAction.ExceptionUnhandled);
}
}
}
public partial class MainPage : PhoneApplicationPageAs soon as OnNavigatedTo method is invoked and TrackRealtime method is called, Google Analytics will report presence of a user on the MainPage.xaml page. Go to the web portal and witness the magic. :)
{
protected override void OnNavigatedTo(NavigationEventArgs e)
{
App.Tracker.TrackRelatime(e.Uri);
base.OnNavigatedTo(e);
}
}
Conclusion
Instrumenting an app with provider independent framework has never been easier. Even though it currently supports only Google Analytics, other providers can be easily added. Am I going to add any new ones? I do not have any plans for now. If I decide to switch to a new provider then I would definitely add it. If you prefer a different provider and are willing to contribute to the project, I would be more than happy to work with you in extending the nuget package.
Let me know what you think in the comments below.
0 comments:
Post a Comment