HockeyApp for Applications on Windows

HockeyApp for Windows implements support for using HockeyApp in your applications that run on Windows operating system, including Windows 10 Universal Windows Platform (UWP), Windows 8.1 (WinRT), Windows 8.0 (Silverlight), Windows Presentation Foundation (WPF).

This document contains the following sections:

  1. Introduction
  2. Setup
  3. Features
    1. Crash Reporting
    2. Beta distribution
    3. User Tracking
    4. Feedback
    5. Authentication
    6. Event Tracking
    7. Application Insights Integration
  4. Troubleshooting
    1. Enable Diagnostics
    2. Report Diagnostics
    3. Crash is not reported
    4. User metrics are not reported

1. Introduction

The following features are currently supported by different Windows Platforms for C# / .NET applications:

Feature \ Platform UWP WinRT Silverlight WPF PCL
Nuget name HockeySDK.UWP HockeySDK.WINRT HockeySDK.WP HockeySDK.WPF HockeySDK.Core
Crash Reporting
Beta Distribution
User Tracking
Feedback
Authentication
Event Tracking
Application Insights Integration

2. Setup

We assume that you already have a project in Visual Studio and that this project is opened in Visual Studio 2013 or later. The SDK supports Windows Silverlight 8.1 or later. In order to on-board your application to HockeyApp, you need to perform the following three steps:

  1. Create HockeyApp application for app

  2. Instrument application

  3. If your app is Windows UWP app, you need to perform the step Upload symbols. Otherwise skip it.

3. Features

3.1. Crash reporting

3.1.1 Crash reporting for UWP

Please, follow article Crash Reporting for Windows, which covers in great detail crash reporting functionality available for Windows apps.

3.1.1 Crash reporting for old platforms (WinRT, WPF, Silverlight)

For platforms WinRT and Silverlight, you need to add the following line of code at the end of the OnLaunched(LaunchActivatedEventArgs e) Method (in App.xaml.cs)

await HockeyClient.Current.SendCrashesAsync();

and the following line of code at App() method
HockeyClient.Current.Configure("App id on dashboard");

For platform WPF, you need to add the following line of code at the end of the
OnStartup(StartupEventArgs e) Method(in App.xaml.cs)

HockeyClient.Current.Configure("App id on dashboard");

await HockeyClient.Current.SendCrashesAsync();

uwp-exception-diagnostics.png

3.2. Beta distribution.

3.2.1 Beta Distribution for Windows 10 (UWP)

Beta distribution for UWP applications is described at in our article How to sideload UWP applications with HockeyApp

3.2.2 Beta Distribution for Windows Phone 8.0 and 8.1 (Silverlight & WinRT)

For store apps, on platforms Windows 8.1 and below we provide additional functionality for the user to install beta versions of the apps over-the-air. To be able to let users install your beta versions over-the-air you need to:

  1. Sign your appx-package (see official documentation from Microsoft)

  2. Add the following line in the OnLaunched(LaunchActivatedEventArgs e) method in App.xaml.cs after your call to SendCrashesAsync (Silverlight only):
    await HockeyClient.Current.CheckForAppUpdateAsync();

Windows_WP_UpdateMsg.png

Windows_WP_Update.png

3.2.3 Beta Distribution for WPF

Add the following line in the OnStartup(StartupEventArgs e) method in App.xaml.cs after your call to SendCrashesAsync:

 await HockeyClient.Current.CheckForUpdatesAsync(true, () =>
     {
         if (Application.Current.MainWindow != null) { Application.Current.MainWindow.Close(); }
         return true;
     });

3.3. User Tracking

HockeyApp will automatically show you number of users and sessions your application had per day for the last 30 day period.
In HockeyApp, session is defined as continues interaction within an app for the 20 sec or more.

UsersAndSessions2.PNG

3.4. Feedback

By using our feedback feature, you will be able to collect feedback from your users about your application in-private, without sharing this data publicly as it is done with the store reviews.
To open the feedback UI to let your users provide feedback via HockeyApp call the following method in your code (e.g. inside a Button-Click handler)

HockeyClient.Current.ShowFeedback();

Important note for Windows Phone Apps: To let your users add images as attachments HockeySDK must be able to pick up after a PickFileAndContinue call which suspends and later resumes your app. To allow for that please add the following line to the OnActivated(IActivatedEventArgs e) method in App.xaml.cs

HockeyClient.Current.HandleReactivationOfFeedbackFilePicker(e);

Windows_WP8_FeedbackForm.png

3.4.1. Localizing feedback UI

HockeySDK includes localization strings for English and German. To support additional languages or override the provided strings,
you can provide xour own ResoureManager. Add a new resx file (and the corresponding language-specififc lang.resx files) to your project and provide strings. As a template you can use our resx file from github.

Expand your inititial HockeyClient configuration in the following way:

HockeyClient.Current.Configure(DemoConstants.YOUR_APP_ID).UseCustomResourceManager(YourResources.ResourceManager)

HockeySDK will then use your strings if it finds a the key in your resource-file otherwise fall back to the internally provided string.

3.5. Authentication

With HockeyApp you can either identify users by validating their email address (*Identify*) or authorize them by checking their HockeyApp credentials (email and password).

To authenticate users on app start in the OnLaunched(LaunchActivatedEventArgs e) method (in App.xaml.cs) replace the line

rootFrame.Navigate(typeof(MainPage), e.Arguments);

with one of the following calls:

//authorize
HockeyClient.Current.AuthorizeUser(typeof(YourMainPage));
//identify
HockeyClient.Current.IdentifyUser("App_secret", typeof(YourMainPage));
Replace App_secret with your app's secret from the HockeyApp app page.

Windows_WP_Authorize.png

A dialog will be shown for users to input their credentials if they haven't been authenticated before or if revalidation of the token is needed.

To delete a saved user token (*Logout*) call the method await HockeyClient.Current.LogoutUserAsync() (for Windows Phone apps) respectively HockeyClient.Current.LogoutUser (for Windows apps).

3.6. Event Tracking

Event tracking is a method that you can use to record user interaction with mobile application, such as button click or file download. You can accomplish this a by instrumenting the desired UI element interation with TrackEvent API: Microsoft.HockeyApp.HockeyClient.Current.TrackEvent(eventName)

Rich portal experience will allow you to see list of custom events, unique users count for an event and rate of events over time.

EventTracking4.png

3.7. Application Insights Integration

Starting from HockeySDK 4.1.1 we support integration with Application Insight, which allows you to track custom telemetry from your application. We covered in a great detail the integration story in article How to integrate HockeyApp with Application Insights

4. Troubleshooting

4.1 Enable Diagnostics.

In this section we will describe pre-requisites you need to perform to help us troubleshoot the issue.

  1. In the App class constructor modify HockeyApp instrumentation code with the following syntax. Please skip this step for WPF application for which SDK level diagnostics are not supported.

           Microsoft.HockeyApp.HockeyClient.Current.Configure(“Your_App_ID”, 
                 new TelemetryConfiguration() { EnableDiagnostics = true });
    
  2. Enable Debugging API callback which will handle unhandled exception from HockeySDK

           #if DEBUG
                 ((HockeyClient)HockeyClient.Current).OnHockeySDKInternalException += (sender, args) =>
                 {
                      if (Debugger.IsAttached) { Debugger.Break(); }
                 };
           #endif
    
  3. Install Fiddler

  4. Configure Fiddler to show traffic only from the following host: dc.services.visualstudio.com.

  5. Enable Https traffic decryption in fiddler

  6. Deploy application to Windows 10 Desktop device

4.2 Report Diagnostics

In this section we will describe steps you need to perform to report the diagnostics information to our support team.

. Capture Visual Studio Output.

  1. Capture Fiddler traffic.

  2. Provide Visual Studio Outputs and Fiddler Traffic to our support team as a ticket in support system

  3. Install Wintellect Package Explorer. You need to unzip the folder and run _Collateral\Wintellect Package Explorer.exe)

  4. Open Wintellect Package Explorer and navigate to your app

  5. Right click on the app -> Open User Data Folder.

  6. Zip and send to our support team LocalState\HockeyApp folder.

4.2 Crash is not reported.

If your crash is not shown in HockeyApp portal, please perform the following troubleshooting steps:

  1. Perform step 4.1 Enable Diagnostics.

  2. Run the application and generate a crash.

  3. Capture Visual Studio Output.

  4. Restart the application.

  5. Perform step 4.2 Report Diagnostics

4.3 User Tracking Metrics are not reported

If you don't see user tracking metrics, like number of users in your app or number of sessions, please perform the following troubleshooting steps:

  1. Perform step 4.1 Enable Diagnostics.

  2. Run the application and wait for a minute.

  3. Restart the application.

  4. Perform step 4.2 Report Diagnostics