What is a Signal?

A TelemetryDeck Signal is the most basic building block in the TelemetryDeck ecosystem. Every time an event happens in your app, you can send a signal using the TelemetryManager.send(...) function.

Signals have a type which is the name of the signal such as AppLaunchedViaNotification or SettingsShown, a user which is a String representation of a hashed user identifier, plus a payload dictionary which consists of various metadata, such as operatingSystem, platform, or custom metadata you want to deliver with each signal.

Signals are the raw data that is being interpreted by Insights.

Who is creating TelemetryDeck?

Hi, I'm Daniel Jilg and I live in Augsburg, Germany. I've been a Swift developer since day one, and one of my apps was among the first 100 apps ever admitted to the App Store. I also have over 12 years of experience building server based applications.

User Privacy has always been an important value in the projects that I've worked on, and I loooove automatic data analysis. After creating a prototype of TelemetryDeck for use on my own apps, I figured, this is a lot of work to do right! Why not offer this to my friends in the developer community? And here we are.

Can I use TelemetryDeck for my Website? My Android App? My app for [platform x]?

All TelemetryDeck Signals are sent via HTTP POST request, so you can send them from a web page, or any other app for any platform. There is a Swift Client to make things easier, but it is not strictly necessary.

Client packages for Kotlin and Python are planned. If you would like to see other client packages, open an issue or (if you want to be particularly awesome) maybe write one yourself and share it with me and the community? Here's a spec document to get you started.

To view and manage your Insights you currently need the app for iOS or macOS 11. In other words, you as the developer of the app currently need an iOS device or a Mac, but your clients do not.

A web app and/or an android app for managing your insights might follow at some point, but I can't give an ETA on those.

What are Insights and Insight Groups?

An Insight is a configurable way of looking at your signal data. You can think of it as a pre-defined database query with filters and groupings. This query will be run on the set of signals received in the currently visible date range (which is displayed in the top toolbar), and displayed in a customizable way.

Each insight runs its filters, groupings and breakdowns (see below for more on those) on all Signals that were received for the currently selected app in the currently selected date range.

Calculating an Insight's data will yield a number of, for lack of a better word, rows of data, with each line having a title (either a string of a date) and a result (either a string or a number).

See the Insights Reference for more in-detail information about Insights.

What Licenses are Applicable to my Code?

TelemetryDeck has three parts: The server, the viewer app, and the client code which is included in your app.

The client code included in your app is licensed under a modified MIT License with a removed attribution clause. This means you can use it in any project without restriction, and you do not have to attribute it.

Server and Viewer App are currently not Open Source. Parts of them might be open sourced at some point in the future.

If you would like a custom license to view or modify TelemetryDeck's code, for you self-hosted solution or to change how aspects work, or to make sure there are no shenanigans going on, I'm open to talks, just hit me up <3