The Analytics Monitor has a number of key features and concepts that is worth highlighting.
- Simple and easy. The monitor aims at providing a simple and intuitive API that is easily understood and utilized in your application. We want to enable you to get things done without putting up any roadblocks for your existing application development.
- Asynchronous data delivery. The process of sending data to the servers are scheduled and performed on background threads to ensure that the hosting application is not blocked when calling methods on the API.
- Supporting occasionally connected applications. If the analytics data cannot be delivered to our server the monitor library will cache the data locally and attempt to send it at a later point in time, even when starting your application at a later point again.
- Configurable. While you can get up and running with just a few lines of code you can construct the monitor with a few initial settings using the IAnalyticsMonitorSettings class to control things like the maximum size of data send per day or providing your own implementation for persisting data on behalf of the monitor.
The tracking of your application uses the concept of a session. A session is defined as the tracking the occurs from the time you start the monitor until you stop the monitor (or your application exists without explicitly stopping the monitor) so all tracking data becomes associated with a unique session.
The Analytics monitor starts tracking data as soon as the monitor is started. If you require your end users to opt-in to usage tracking or customer experience improvement program you should refrain from call the start method on the monitor until you have obtained this acceptance.
The data being tracking by the Analytics monitor falls into two categories. Some data is tracked implicitly while other data is tracked explicitly. The implicitly tracked data is mainly the executional environment data such as operating system info and other settings which is picked up automatically by the monitor when started. The explicitly tracked data is the data that is tracked by explicit calls on the monitor API, such as tracking features or exceptions.