After telling you how to get started with Mobile Engagement the next step is how to generate useful information to know the application usage by users or errors that may occur in the platform.
As I told you in the previous post, there are two tabs called Analytics and Monitor. In the first one we see computerized information which can be displayed in different formats and filter in different ways. All graphs can be downloaded in CSV format.
One section that I like is User Path, which lets you see what the user behavior is.

Another section that could be useful to identify the type of devices, carriers, SDK versions, screen size, etc. is Technicals.

On the other hand there are a couple of sections, Users and Retention, dedicated to count the number of new users, assets, returning visitors, and so on. The rest of the sections are related to more specific topics, which our application should be able to generate through programming. These same sections can be seen in the Monitor section which shows a real time user actions that are generating this kind of information.

- Sessions: occurs when a user uses the application, from the moment he/she starts using it until it stops. As you can see in the picture above, the sessions are initiated when an activity starts (eg access to a screen). Following the example of the previous post, in an application for Windows Phone using Main.xaml page itself generates an activity (because it inherits from EngagementPage) but you can also generate activities manually as follows:
private void Panorama_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { var panoramaItem = (PanoramaItem)e.AddedItems[0]; var header = panoramaItem.Header.ToString(); EngagementAgent.Instance.StartActivity(header); }
This example has captured the change selection in the panorama control and the activity is generated with the title of the section.
- Jobs: are used to report actions that have a duration in time, as may be called Apis, background tasks, filling reports, the time a user spends reviewing an order, and so on. A job can be launched in the background without user interaction.
private void JobBtn_OnClick(object sender, RoutedEventArgs e) { EngagementAgent.Instance.StartJob("SleepingJob"); Thread.Sleep(10000); EngagementAgent.Instance.EndJob("SleepingJob"); }
- Events: are used to report user actions, such as clicking a button, purchase an item, and so on.
private void LongListSelector_DoubleTap(object sender, GestureEventArgs e) { EngagementAgent.Instance.SendEvent("Double tap!"); }
- Errors: Errors are used to report issues correctly detected by the application (like incorrect user actions, or API call failures).
private void ErrorBtn_Click(object sender, RoutedEventArgs e) { var extraData = new Dictionary<object, object> { { "operationID", "1234" } }; EngagementAgent.Instance.SendError("Error from my Windows Phone app", extraData); }
- Crashes: are issued automatically by the Mobile Engagement SDK to report application failures (i.e. issues not detected by the application that make it crash.)
private void CrashBtn_Click(object sender, RoutedEventArgs e) { throw new Exception("Booooom!"); }
Finally we have a space called Alerts where we can subscribe to any of the above actions.

Cheers!