The main reasons for releasing this SDK is to align the Android and Apple SDKs, as well as fix some inconsistencies.
This blog post describes what is new in this SDK version, and what changes you need to perform in your source code.
What is new
- Log levels
- Manually checking for app updates
Xcode 10.1 or newer is required since this is required in order to have ARM64e support, which is used in iPhone XR + XS and newer. Xcode 10.1 is also required in order to submit apps to the AppStore. The minimum iOS version supported is now 8.0, since this is the oldest version supported by Xcode 10.1.
Everything is disabled by default
In previous versions analytics was enabled by default. This is now disabled and must be enabled manually.
Reporting non-fatal issues was automatically enabled, when enabling crash reporting. This feature now
has its own feature flag,
nonFatalEnabled which is disabled by default.
TPAManager has been renamed to
In Swift you must change all occurrences of
In Objective-C you must change all occurrences of
sessionRecordingEnabled flag has been removed, and is now part of
analyticsEnabled which enables both session recording and any custom tracking (if implemented in your source code).
We have added log levels (debug, info, warning, and error) to the logging API.
You must add the log level as the first parameter, e.g.:
TPA.shared().log(.info, message: "My log message");
TPALog(TPALogLevelInfo, @"My log message");
Limiting remote and console logging
In order to limit the amount of logging output to TPA and the console, we have added two properties to TPA.
If you only want to send error logs to TPA you can specify:
TPA.shared().remoteLogLevel = .error
Likewise, you can limit the logs output to the console to only info, warning, and error by specifying:
TPA.shared().consoleLogLevel = .info
Both levels default to
.debug unless the app is being distributed via the App Store, in which
case the default is
Note: Please be aware, that remote logs does count toward your DataPoint limit.
Check for updates
The feature flag,
updateNotification has been changed from a boolean (
updateNotificationsEnabled) to an enum, since it now has three possible values,
You can manually trigger the check for updates:
This requires that either automatic or manual update notifications are enabled.
Note: update notifications are always disabled in apps distributed via the App Store.
Separate flag to enable non-fatal issue reporting
A new flag has been added to enable reporting of non-fatal issues. Non-fatal issues are only send to TPA if the following is set and
reportNonFatalIssue is called in your source code.
TPA.shared.nonFatalEnabled = true
TPAViewController has been removed
We believe that all tracking should be considered thoroughly with regards to the exact location of when the event is sent, the tags that are includeded and the naming of the event. TPAViewController did not encourage this, so it has been removed from SDK 5.0. If your code relies on TPAViewController, you can download it here: