The crash was happening when an attachment was still loading in the last cell but before loading ended, the number of cells changed by deleting a message. Once the attachment was loaded, the crash occured.
This is no fixed by using a safer approach on updating the cell content for loaded attachments by using notifications and letting the cells decide themselves if they need to re-display their content.
- "Add image" button not reappearing when deleting the 3rd attachment
- Attachment scrollview not being always scrollable when it should be
- Support for rotating and correctly adjusting the attachment scrollview
When the authentication mechanism couldn't save the auth token to the keychain, now only show a message in the console. The user will have to login on the next app start anyway until the developer fixes the keychain signing or entitlements issue.
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.
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.
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