We got a (single) report that storing the anonymous UUID to the keychain can take multiple seconds causing the launch process to be locked and causing iOS to kill the app.
Storing in a background thread doesn't do any harm in our case, and if it fails, it would simply cause the next app start to produce another UUID which is fine.
- Fix iOS 8 issue with not remove part of a path when using `stringByStandardizingPath` (removed leading `/private`)
- Exclude iOS swift libraries from being detect as app specific
New delegate `updateManagerWillExitApp` for `BITUpdateManager` that is invoked right before the app wil exit to allow app update to start (>= iOS 8 only)
AssetsLibrary isn't as fast as we want it to be to provide the screenshot always on the screenshot gesture trigger. So we delay fetching the data from AssetsLibrary by 0.5s and hope the screenshot will then be available.
If there was predefined text to appear in a feedback compose view and the user added some more text and then added an attachment, the user added text was removed and only the predefined text appeared.
When compiling for the iOS simulator, it would produce this warning.
The receiver of message 'resultType' is nil and returns a value of type 'NSTextCheckingType' that will be garbage
switch (result.resultType) {
~~~~~~ ^~~~~~~~~~
In landscape the text couldn't be seen, since the text view was moved up due to iOS 8 returning the keyboard height now as `height` in landscape, while it did return it as `width` in previous iOS versions.
Hardcode the iOS 6.1 and iOS 7.1 NSFoundationVersionNumber values, so the checks also work when compiling the source with iOS 6.1 or iOS 7.1 as base iOS version.
- Added simple detection method to check wether the SDK runs in an extension
- BITCrashManager will send crash reports without UI (UIAlertViews aren't allowed in extensions anyway)
- Don't start BITUpdateManager, BITStoreUpdateManager, BITFeedbackManager and BITAuthenticator in app extensions
Even though the UI showed the newest version that the device can install, the download request always triggered downloading the latest version.
This commit fixes this bug.
In iOS 8 the app is not moved to background once the users accepts the iOS install alert button. Without this, the install process doesn't start. So for now we exit the app once that alert disappears.
Important: The iOS dialog offers the user to deny installation, we can't find out which button was tapped, so we assume the user agreed.
iOS Frameworks use an extra `Modules/module.modulemap` file that is used with the `import` statement to get all required information for integration. We simulate this behavior by writing our own file manually. So in apps using Swift the Objective-C bridging header is not required any longer (when using the binary distribution of the framework).
Use `kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly` instead of `kSecAttrAccessibleWhenUnlockedThisDeviceOnly` when storing data into the keychain to allow the data to be also fetched when the app is launched in the background
Notify the developer about the issues by logging a warning to the console when the SDK is initialized more than once or startManager is invoked multiple times
If the `configure` initializers or `startManager` are invoked multiple times, this can cause undefined behaviour and crashes. Hence we simply ignore if they are invoked multiple times.
Resizable iPhone causes modal presentations not to be full screen any longer, so we always should use the views width and never the device-width for the version update data presentation. This also works just fine when build with iOS <= 7.1.x
The warning about `delegate` setting after calling `startManager` being incorrect, should actually only be shown if it was called after it and not before it. Doh.