SwiftSDK

Swift SDK for TelemetryDeck, a privacy-conscious analytics service for apps and websites.

OTHER License

Stars
155
Committers
22

Bot releases are hidden (Show)

SwiftSDK - Version 1.1.4

Published by winsmith about 3 years ago

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

SwiftSDK - Version 1.1.3

Published by winsmith about 3 years ago

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.

SwiftSDK - Version 1.1.2

Published by winsmith about 3 years ago

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

SwiftSDK - Version 1.1.1

Published by winsmith about 3 years ago

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)

SwiftSDK - Version 1.1

Published by winsmith about 3 years ago

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)

SwiftSDK - 1.0.13

Published by winsmith over 3 years ago

This update adds the system locale to the the default Signal payload. Thanks to @Rubenfer for adding this PR.

SwiftSDK - 1.0.12

Published by winsmith over 3 years ago

Introduce sessions. Signals now include an automatically generated session identifier. If you change nothing, a session lasts until your app is restarted from cold storage. If you want to start a new session, call TelemetryManager.generateNewSession().

SwiftSDK - 1.0.11

Published by winsmith over 3 years ago

Show logs when a signal is not being sent in DEBUG mode, and when a unique user identifier could not be created.

SwiftSDK - 1.0.10

Published by winsmith almost 4 years ago

Telemetry Manager can now optionally configured to actually send Signals in DEBUG mode. It still won't by default, however.

Thanks to @ddaddy for this PR.

SwiftSDK - 1.0.9

Published by winsmith almost 4 years ago

This update fixes various issues that prevented the client from being compiled for watchOS and tvOS. Additionally, devices that don't supply the identifierForVendor property, such as the Mac, now report their platform and the system version number as identifier.

SwiftSDK - 1.0.8

Published by winsmith almost 4 years ago

Adds these values to the default signal payload:

  • architecture: The build architecture, such as x86_64 or arm64
  • operatingSystem: The operating system as reported by Swift. Note that this will report catalyst apps and iOS apps running on macOS as "iOS".
  • targetEnvironment: The target environment as reported by swift. Either "simulator", "macCatalyst" or "native"

Also updates this value in the default payload:

  • platform: Based on the operating version reported by swift, but adding some smartness to better detect the actual platform. Should correctly identify catalyst apps on macOS. Will probably not detect iOS apps running on ARM based Macs.
SwiftSDK - 1.0.7

Published by winsmith almost 4 years ago

SwiftSDK - 1.0.6

Published by winsmith about 4 years ago

SwiftSDK - 1.0.5

Published by winsmith about 4 years ago

SwiftSDK - 1.0.4

Published by winsmith about 4 years ago

SwiftSDK - 1.0.3

Published by winsmith about 4 years ago

SwiftSDK - 1.0.1

Published by winsmith about 4 years ago

SwiftSDK - 1.0.0

Published by winsmith about 4 years ago

First Version of Telemetry Swift Client ♥️

Package Rankings
Top 26.91% on Cocoapods.org
Top 23.49% on Swiftpackageindex.com