libAppTelemetry - Google Analytics for shareware software (Windows, MacOS X)
"No relationship can survive without effective and honest communication, and the special relationship that exists between you and your users is no exception.
Yet development organizations too rarely exploit the most immediate communication tool at their disposal: their application."
Read about the benefits of application statistics on this article of Sebastian Holst.
On IOS and Android there are native ways to monitor your app's usage via the itunesconnect account or the Google Developer account.
But for Windows and Mac OS X there are only a few (and costly for the independent developers) systems to get runtime statistics of your programs.
We created this telemetry library so you (and we) can see stats of desktop applications using the free Google Analytics platform.
You can easily link this library to your desktop application and send usage statistics to your Google Analytics account. We wrote the documentation in a form of checklist that can be used as an integration guide.
/// get the version string of the library. You can call this anytime. const char* appTelemetryGetVersion(void); /// get the full path name of the log file. You can call this anytime. const char* appTelemetryGetLogFilename(void); /// enable or disable the writing to the log file. You can call this anytime. /// Default state is Disabled. void appTelemetryEnableLogfile(const char *appName, const char *macBundleId); void appTelemetryDisableLogfile(void); /// initialize the library. /// Must be called before: appTelemetryAddOsVersion(), AddPageview(), AddEvent(), Free() bool appTelemetryInit(const char *appName, const char *appVersion, const char *propertyID, const bool userGaveConsent); /// free the library. /// The function will wait for a maximum of 3 seconds for all pending async calls to gracefully finish. /// After freeing the library, you can call again appTelemetryInit() if you need to reuse it. void appTelemetryFree(void); /// You can see the user's OS version under the "browser" field in G.A. /// and the user's screen resolution under the "screen resolution" field in G.A. /// But for your convenience you can add a pageview that contains the OS version with this function bool appTelemetryAddOsVersion(void); /// call this function on program launch, on program exit and on every important form, window, screen /// that you want to track. E.g. Main Window, Configuration settings, Main Window, Exiting bool appTelemetryAddPageview(const char *pagePath, const char *pageTitle=0); /// optionally call this function to log events in Google Analytics. /// With the events you have an alternative way of tracking your program. /// Depending on the things you want to track, maybe the Events will allow you to create /// a better model for understanding the usage of your program. bool appTelemetryAddEvent(const char *eventAction, const char *eventLabel, const int eventValue );
- Versions up to 1.0 will be free.
- Version after 1.0 might have a small fee. The fee will be so small that it would be easily affordable by independent software developers that make little or even no income from their software.
By using the library you can see in Google Analytics all the following figures as being fed directly from your installations arround the world:
- number of active users now
- daily/monthly number of active users
- number of unique installations
- new users vs returning users
- new installations per day/month
- average number of windows/forms that the users open
- average usage time
- preferred language on the user's computer
- screen resolution
- OS versions
- OS 32/64 bit
- Screen views of your program and users path, e.g.
main screen -> address book -> create new contact
main screen -> configuration -> main screen -> (exiting)
- custom events sent from your program
- Versions of your application
- Work in a reporting/analytics tool you already know: Google Analytics
- Free and reliable reporting platform: Google Analytics
- Simple API; easy linking by example
Icon designed by Eucalyp from Flaticon