All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Removed the 'v' from the version string in UpdatesUI.
- Added PrivacyInfo.xcprivacy
- Applied Xcode 16 recommended build settings.
- Base deployment target updated from iOS 9.3 to iOS 12.0 in-line with Xcode 16 support.
- Default branch now
main
rather thanmaster
.
- Added a public
init
forUpdatesResult
to make unit testing easier in consumer projects.
- Added another
promptToUpdate
function which does not require anUpdatesResult
object which means that the function can be used without having to pass anUpdatesResult
object around the calling app. UpdatesResult
now has the App Store URL for the calling app if it is possible to form it from the required parameters.
- Added properties
minOptionalAppVersion
andminRequiredAppVersion
with the latter taking precedence if both are set to a version string. If the former is set then the update type value will be.soft
i.e. a soft update whereas if the latter is set then the update type will be.hard
indicating that a different UI should be displayed to the user.
Note: At the current time UpdatesUI largely behaves the same for both type of update but for .hard
updates the cancel button is omitted meaning that the user must press the Update button to quit the dialog - it is recommended to implement your own UI here instead.
- Added property
isUpdated
which can be used to determine whether the current app launch is the first one since an install or update has occurred. - Added property
updateType
which can be used to determine whether an update is hard or soft. If using UpdatesUI then for hard updates the cancel button will not be shown when the update dialog is presented.
- Removed properties
isFirstLaunchFollowingInstall
andisFirstLaunchFollowingUpdate
as they didn't function without callingcheckForUpdates
first.
- Added
useStoreKit
flag.
- Added notification mode
.withoutAvailableUpdate
which notifies on every invocation ofcheckForUpdates
even where no update is available. Can be used for testing purposes.
- Fixed an issue which would result in the user always being notified about an update regardless of the value of the
NotificationMode
preference.
- Fixed an issue whereby the result could be returned as
.none
where information was missing from the user'sUpdates.json
file.
- Fixed an issue whereby Updates could falsely indicate that a new app version was available.
- Ensured that the
countryCode
property can be detected correctly on the macOS Catalyst platform as well as on iOS.
UIAlertController
button titles can be set using localization keysupdates.update-button-title
andupdates.cancel-button-title
.
- Uses
SKStoreFront
on iOS 13 to improve accuracy of country code used for iTunes Search API calls.
- Fixed a bug whereby the
SKStoreProductViewController
would be dismissed immediately after being presented.
- Support for Swift Package Manager.
- Improved support for app extensions (by avoiding referencing
UIDevice.current.systemVersion
directly inUpdates.swift
).
- Updated to Swift 5.0
- Able to determine whether app has recently been installed (using
isFirstLaunchFollowingInstall
) or updated (usingisFirstLaunchFollowingUpdate
).
- Significant improvements to documentation.
- Added caching for the situation where remote configuration cannot be fetched.
- Added ability to configure update checking manually.
- Added UpdatesUI component for presenting SKStoreProductViewController.
- Initial release.