Skip to content

Releases: TelemetryDeck/SwiftSDK

Version 1.4.1

16 Jan 09:43
f87b6b0
Compare
Choose a tag to compare

This bugfix update fixes a crash due to objects being released too early. Thanks a lot to @andreyz for the contribution!

What's Changed

  • Update Xcode version in CI by @winsmith in #86
  • Avoid runtime exception due to deallocated unowned self by @andreyz in #84

New Contributors

Full Changelog: 1.4.0...1.4.1

Version 1.4.0

29 Dec 15:54
685264f
Compare
Choose a tag to compare

This version adds support for sending numerical values in Signals via the new floatValue property. Any signal you send can have one floatValue (which, annoyingly, maps to a Double type in Swift). On the server, you'll be able to aggregate, min, max and average these values.

What's Changed

Version 1.3.0

12 Dec 17:43
Compare
Choose a tag to compare

What's Changed

  • Use a self-generated UUID as default ID on macOS + add tvOS support by @Jeehut in #71
  • Ensure not to make SwiftUI previews crash due to missing init call by @Jeehut in #74
  • Implement analyticsDisabled to allow an opt out of analytics by @kimar in #76
  • Add Objective-C support by @winsmith in #79

New Contributors

Full Changelog: 1.2.0...1.3.0

Version 1.2.0

11 Aug 18:36
87b866e
Compare
Choose a tag to compare

Oh wow, big release! We've fixed various bugs, especially ones that would report inconsistent values on macOS, such as for isAppStore.

We're also giving you the option to specify a salt before hashing user identifiers, slightly improving cryptographic security.

What's Changed

New Contributors

Full Changelog: 1.1.6...1.2.0

Version 1.1.6

29 Dec 17:22
Compare
Choose a tag to compare

This version adds a terminate method as well as the isInitialized property. Thanks to @StarLard for your contribution!

Full Changelog: 1.1.5...1.1.6

Version 1.1.5

26 Oct 21:24
Compare
Choose a tag to compare

This release brings you Testing Mode, and better OS Version reporting.

Testing Mode

Previously, when you ran your app locally with the Build Configuration set to DEBUG, TelemetryManager would not send any signals at all. This is because otherwise these testing signals would pollute your actual data, which is not something we desire. However, that made it hard to test wether your configuration actually works, and to prepare reasonable Insights before your launch.

This is why we're introducing Testing Mode. When you run your app in the DEBUG Build Configuration, i.e. directly from Xcode, TelemetryManager will now send all signals, but tag them as Testing Mode signals. In an upcoming version of the app, you will be able to see those signals separately, so you can immediately confirm that your code is working correctly without polluting the actual data.

Better OS Version Reporting

Previously signals sent by TelemetryManager would include the full system version string, e.g. iOS 15.0.1. However, this makes it hard to create an Insight to answer the question: How many of my users are already on iOS 15? To help with that, we added two more default payload keys:

  • majorSystemVersion, which reports just the major system version, i.e. iOS 15
  • majorMinorSystemVersion, which reports major and minor version, but not the point release, e.g. iOS 15.0

We left the existing systemVersion payload key untouched. You can continue to use it as is.

And an internal change: We updated the code to determine the system version to always use processInfo.operatingSystemVersion on all platforms. This should not change anything, but it makes the code smaller and easier.

Enjoy, and have a wonderful time with TelemetryDeck. Thanks to @conath for contributing code to this release. We love getting your pull request!

Best

Lisa & Daniel, who make TelemetryDeck

Version 1.1.4

12 Sep 10:51
Compare
Choose a tag to compare

This bugfix release fixes a compile error on macOS < 11 discovered by @biocross. Thanks for reporting 🚀

Version 1.1.3

08 Sep 09:06
Compare
Choose a tag to compare

This release fixes an incompatibility with older WatchOS versions, thanks to @ddaddy, a better detection of iOS apps running on Mac thanks to @maxbaeumle, and better DEBUG detection in TestFlight builds thanks to @jazzychad.

It also switches all signals to our new ingestion URL, nom.telemetrydeck.com. That's right, we have a new and even cooler name <3

This version replaces version 1.1.2 which had a typo in the URL.

Version 1.1.2

07 Sep 18:56
Compare
Choose a tag to compare

This release fixes an incompatibility with older WatchOS versions, thanks to @ddaddy, a better detection of iOS apps running on Mac thanks to @maxbaeumle, and better DEBUG detection in TestFlight builds thanks to @jazzychad.

It also switches all signals to our new ingestion URL, nom.telemetrydeck.com. That's right, we have a new and even cooler name <3

Version 1.1.1

13 Aug 15:32
d4e89df
Compare
Choose a tag to compare

This point release includes some awesome PRs from users, specifically #35 #36 #37 and #38. Thanks a lot @Clafou and @jazzychad! And thanks to @ddaddy for the implementation of caching!

New API Endpoint

This version of the TelemetryClient sends its signals to the new dedicated ingestion API, nom.apptelemetry.io. It provides better availability, and it accepts signals bundled in bulk instead of one by one. Which is important for...

Signal Caching

Signals are now only sent every 10 seconds. If the time hasn't elapsed yet, there is no internet connectivity, or an error occurs on the server side, the signals are locally cached (in the user's cachesDirectory in a file called telemetrysignalcache) until they can be delivered to the server. Not only does this mean signals now survive if your users are out and about beyond the reach of cell reception, it also means even less impact on battery, because we're operating the radio way fewer.

Session Management

A session ID automatically gets generated when the TelemetryClient is initialized. On iOS, watchOS and tvOS, a new session identifier gets generated whenever your app returns from background (this will also send a sessionUpdated signal). To manually set a new session call TelemetryManager.generateNewSession().

Default User

You can now call the TelemetryManager.updateDefaultUser(...) method to set the default user for all signals created after the default user has been set (e.g. when your user has logged in). This way you don't have to supply a user identifier every time you send a signal, just set it once and all your signals belong to that user.

(User identifiers are hashed on device, and then hashed again on the server before storage, so you can use email addresses or other sensible information as user identifier without breaking any privacy law: the actual identifier never leaves the device)