HockeyApp from Microsoft

HockeySDK 4.1.0 for Xamarin


Hot on the tail of our iOS and Android SDK releases, we also release the stable version of our HockeySDK-Xamarin bringing Custom Events to every HockeyApp user. It includes the latest compatibility updates for iOS 10 (HockeySDK-iOS 4.1.1) and Android 7.0 (HockeySDK-Android 4.1.1).

iOS 10

The Xamarin SDK includes the AllFeatures variant of our iOS SDK - which means, that you will have to include a new Info.plist key as described in our iOS 10 SDK blog post - otherwise you risk an App Store rejection.

Custom Events

We’ve released Custom Events to all HockeyApp users recently, learn more about it in our public release blog post.

Here’s a short code snippet on how to use Custom Events in your Xamarin application, after you set up the SDK, you can create a Custom Event as follows:

using HockeyApp;
using System.Collections.Generic;

// Track a Custom Event
HockeyApp.MetricsManager.TrackEvent("Custom Event");

// Track a Custom Event with properties and measurements
  "Custom Event",
  new Dictionary<string, string> { { "property", "value" } },
  new Dictionary<string, double> { { "time", 1.0 } }

If you have any questions or suggestions, please open a thread in our support forum or chat with us on HockeyCamp - our public Slack channel.

You can access the release here:

Xamarin SDK

HockeySDK 4.1.1 for iOS and 4.1.0 for MacOS and tvOS


HockeySDK-iOS 4.1.1


We strongly suggest upgrading to version 4.1.1 of the SDK. If you are using our Feedback feature, upgrading to 4.1.1 requires additional steps on your side, though without upgrading the SDK you’re risking an App Store rejection.

We would have loved to give you a heads-up earlier, but we only learned of the possible rejection when Xcode 8 GM was released last week.

A bug on iOS 10 Simulator affects our testing our SDK there but doesn’t happen on device!

Feedback and iOS 10

Version 4.1.1 of the HockeySDK removes the Feedback feature from the default version of the SDK. The reason is that iOS 10 requires developers to add a usage string to their Info.plist in case they include the photos framework in their app. If this string is missing, the app will be rejected when submitting the app to the App Store. Since HockeyApp’s Feedback feature includes a dependency to the photos framework this means that if you include HockeyApp into your app, even developers who don’t use the Feedback feature are required to add the usage string. We don’t want to force this kind of dependency on you. Therefore, if you don’t use Feedback in your app, simply upgrade HockeySDK to version 4.1.1. If you are using Feedback, additional steps are required.

1. Use the new all-feature variant of the SDK

If you’re integrating the binary distribution directly, use HockeySDK.embeddedframework in the subfolder HockeySDKAllFeatures. If you’re using Cocoapods, use

pod "HockeySDK", :subspecs => ['AllFeaturesLib']

in your Podfile.

2. Add NSPhotoLibraryUsageDescription to your Info.plist

As of iOS 10, developers have to add Usage-Description-strings before using system frameworks with privacy implications. To learn more about this requirement, see this comprehensive writeup of this year’s WWDC Session on Privacy and have a look at how to localize Info.plist values.

Add a (localized) usage description string for the key NSPhotoLibraryUsageDescription to your Info.plist. Unfortunately, this process can’t be automated or done within our SDK, so you have to add the string manually.

We suggest the following text: To attach a photo to your feedback, we need access to your Photo Library.

HockeySDK-iOS and iOS 10 simulators

There appears to be an issue with the latest iOS 10 simulators (up to Xcode 8 Gold Master at the time of this writing) that makes it impossible to write values to the keychain. This affects previous versions of the SDK and results in an InternalInconsistencyException while HockeySDK-iOS 4.1.1 fails silently. This issue does not affect real devices and simulators for previous iOS versions. We have filed a radar with Apple and are hoping to get this issue resolved shortly, but you may encounter errors when testing HockeySDK in the simulator. As a workaround, we recommend testing HockeySDK on a physical device running iOS 10. If you do not have access to a real device, you can also try enabling Keychain Sharing in the Capabilities section of your app, as described in this StackOverflow post.

HockeySDK-Mac 4.1.0 and HockeySDK-tvOS 4.1.0

The latest update to our MacOS and tvOS SDK adds support for Custom Events and you can use it the same way as on iOS. To learn more about Custom Events, please read last week’s blog post about Custom Events for Everybody. Additionally we added some bug fixes, so please check out the release notes for HockeySDK-Mac and HockeySDK-tvOS.

Here is a short code snippet on how to use it in your MacOS application:


BITMetricsManager *metricsManager = [BITHockeyManager sharedHockeyManager].metricsManager;
[metricsManager trackEventWithName:eventName];


let metricsManager = BITHockeyManager.sharedHockeyManager().metricsManager

If you have any questions or suggestions, please open a thread in our support forum or chat with us on HockeyCamp - our public Slack channel.

You can access the releases here:




Custom Events Available for Everybody


We are happy to announce that we are moving the latest feature from HockeyApp, Custom Events, to full public preview. Starting today, all HockeyApp customers will be able to take advantage of our Custom Events feature. It works together with our User Metrics to give you a deep understanding of how customers are using your applications. In addition to releasing Custom Events to all HockeyApp users, we are also announcing a deeper integration with Application Insights, making the feature even more powerful. Through this integration you will be able to take advantage of both Analytics, a powerful ad-hoc query capability on raw data, and Continuous Export, which automatically routes all raw data directly into your own Azure Storage account. All of these features are enabled with little additional effort. You can collect all your data via the HockeyApp SDKs, and when configured, the same data will be routed to both HockeyApp and Application Insights Analytics, and Continuous Export allowing you to take advantage of the full power of both of these products.

Custom Events

Custom Events allows you to track any discrete action taken within your app. This is incredibly easy to do via the SDK with just a single line of code needing only a string event name. With just that one line of tracking code, all events will be automatically sent and collected by HockeyApp and displayed for analysis. In addition, we will integrate that data with User Metrics to show you not just the total count and distribution of events, but how many distinct users fired that event and the % of your total user base. You can see the power of this feature in the screenshot above, where you can quickly identify the percentage popularity of each feature tracked by each event.

For more details on getting started with Custom Events please see our knowledge base article.

Application Insights

It is now possible to integrate existing HockeyApp apps with Application Insights. You can now link your HockeyApp app to Application Insights and take advantage of the Application Insights tools such as Analytics and Continuous Export on your HockeyApp data. Linking is as simple to set up as going to the Azure portal, creating a new Application Insights HockeyApp bridge app, and linking it to your existing HockeyApp app via a HockeyApp access token. After that, all Custom Events sent via the HockeyApp SDKs will also be routed to the Application Insights tools.


Application Insights Analytics is a powerful ad-hoc query and visualization tool. Its rich query language allows you to analyze data after it has been captured. This enables you to answer questions about your app as they come up, without a long delay to re-instrument, re-deploy, and re-analyze your data. The speed and power of this analysis technique can change the way you approach application telemetry.

As a quick example, we show off how easy it is to compute a common telemetry view, to see where our customers are running our application from. We are quickly able to generate this distribution by performing the aggregation over all our raw event data with a simple short query.

For more information on the power of Analytics check out the documentation or the videos from //Build for an introduction or more advanced topics.

Continuous Export

At HockeyApp we know that the data you collect is essential to the success of your app. And we always want you to have the deepest access possible to that data. As part of our integration with Application Insights, we are also supporting the Continuous Export feature. The Continuous Export feature will route all raw event data directly into an Azure Storage account owned by you. Once this data is in your account, you can take advantage of many powerful Azure big data tools such as Cortana Intelligence Suite and other intelligence and analytics tools. Or make use of the storage REST APIs to have full API access to all your raw event data.

HockeySDK 4.1.0 for iOS and 4.1.1 for Android


In this new release for iOS and Android SDK, we are rolling out the Custom Events feature from our Preseason program to all customers, and are adding additional APIs to track an event with properties and measurements.

You can use Custom Events in your app to understand user actions and see the aggregates on the HockeyApp dashboard. When tracking events with properties and measurements, the data will be available in Application Insights portal. See this article for more information: Custom Events Available for Everybody

Here’s how to use Custom Events for iOS and Android:


BITMetricsManager *metricsManager = [BITHockeyManager sharedHockeyManager].metricsManager;
[metricsManager trackEventWithName:@"My custom event name"];


let metricsManager = BITHockeyManager.sharedHockeyManager().metricsManager
metricsManager.trackEventWithName("My custom event name")


MetricsManager.trackEvent("My custom event name");

If you have any question or suggestion, please open a thread in our support forum or chat with us on our Slack channel - HockeyCamp.

You can access the release here:



We have added support for Android 7.0 Nougat in this version of Android SDK.

Tell Us Your Story - Win a Surface 3


TL;DR - Take our survey, win a Surface 3!

What is the Future of Mobile DevOps?

“The future is already here — it’s just not very evenly distributed.” - William Gibson

When building any product there are levels of questions. The deeper the level of the question, the more stable and abstract the answer. For example, a deep question is:

Why are we doing this? For me, I am working at Microsoft in mobile DevOps because I want to accelerate the rate of innovation of humanity. Abstract and at the same time very stable (this motivation has been with me for years).

A higher level question is:

What are we building? As you can see, its answer will be constantly changing and also very concrete.

Also, this question is the point of this post. We at Microsoft, from a variety of backgrounds and with a variety of different personal motivations, want to learn how we can help you to develop mobile apps faster and better than ever before.

Will you help us? Then fill out our survey and please note that you are willing to chat with a Microsoft Program Manager. We will be giving away a Surface 3 to one lucky respondent!