Releases: microsoft/cordova-plugin-code-push
v1.9.1-beta
Breaking Changes
To improve download speeds globally, CodePush updates are now distributed using a CDN. This applies only to cordova-plugin-code-push
versions 1.9.0-beta
and up. Note that if you are currently specifying approved URLs using the <access origin />
element in your config.xml file or a whitelist plugin, you will need to add https://codepushupdates.azureedge.net
to the list.
Bug Fixes (iOS)
Fix a possible hang that can occur when installing files, due to the file copy operation in cordova-plugin-file
being executed on the main thread. Thank you @viking2009 and @galsch for reporting this and following up!
v1.8.2-beta
This is simply a bug fix release which addresses an iOS build issue when using PhoneGap Build and the PhoneGap CLI v6.0.0+. It is now available on NPM and can be updated immediately by running cordova plugin add cordova-plugin-code-push@latest
.
v1.8.1-beta
This is simply a bug fix release for the iOS platform (Android is untouched). It is now available on NPM and can be updated immediately by running cordova plugin add cordova-plugin-code-push@latest
.
Bug Fixes (iOS)
- Fixed a regression with the
cordova-plugin-wkwebview-engine
plugin which prevented it from working on iOS 9.3+ devices (the simulator worked fine). - Ensured that our most IO-intensive operations run on a background thread in order to free up your app's UI thread as much as possible.
v1.8.0-beta
This release introduces retry logic to the existing install metrics feature, and address a few key bugs. It is now available on NPM and can be updated immediately by running cordova plugin add cordova-plugin-code-push@latest
.
New Features
- Install metrics reporting will now retry in the event of connectivity issues In order to ensure the integrity of the install metrics data, this plugin now detects failures when trying to report that an update was installed or rollback, and will queue it up to re-send to the CodePush server later. This way, no metrics are permanently lossed due to temporary connectivity issues for your end users.
Bug Fixes
- The
getCurrentPackage
method wasn't returning the correct metadata in situations when an app had installed two updates before restarting (this is a rare but possible scenario). This has now been fixed, and you can confidently retrieve the metadata for the running version of the app by calling this method. - Fixed a crash that would occur when the plugin tried to report an update rollback.
v1.7.1-beta
This is simply a quick bug-fix release. It is now available on NPM and can be updated immediately by running cordova plugin add cordova-plugin-code-push@latest
.
Bug Fixes
- Resolved an issue with reporting install metrics for apps that didn't specify a deployment key in their
config.xml
file (i.e. they specify thedeploymentKey
value when callingsync
) - Improved the
sync
logging to be less noisy and output more details when using some of the new features (e.g.mandatoryInstallMode
andminimumBackgroundDuration
).
v1.7.0-beta
This release introduces a couple of highly-requested features, as well as some key bug fixes. It is now available on NPM and can be updated immediately by running cordova plugin add cordova-plugin-code-push@latest
.
New Features
-
Added support for throttling resume-based installs We've seen a lot of developers want to use the resume-based install strategy, in order to get their updates in front of their end users sooner. However, forcing a restart on the next resume might be too obtrusive if the user switched away from the app for only a few seconds (e.g. to respond to a text). In order to help get updates in front of users sooner, while still respecting their workflow, the
sync
method now accepts a new option calledminimumBackgroundDuration
that specifies the number of seconds that the app needs to have been in the background before forcing the install. More details// If the app was in the background for 10 minutes, we assume that it is "safe" to restart to install the update codePush.sync(null, { installMode: InstallMode.ON_NEXT_RESUME, minimumBackgroundDuration: 10 * 60 });
-
Optional and mandatory updates can be now be installed using different strategies The
sync
method now accepts a new option calledmandatoryInstallMode
, which allows you to individually customize the install mode that is used for optional and mandatory updates. This new property defaults toInstallMode.IMMEDIATE
(which is what we've found most devs want), but can be changed by passing a different value when calling sync.// Install optional updates on restart, but enforce mandatory updates on the next app resume codePush.sync(null, { mandatoryInstallMode: InstallMode.ON_NEXT_RESUME });
-
The contents of the binary are now hashed and sent to the CodePush server so that we can detect whether an available update is equivalent to what the end-user is already running. This helps prevent the unnecessary first-run update issue, and we now encourage developers to release their binary contents to CodePush to help solve this scenario, as well as enable diff updates for the initial CodePush update after a fresh binary install/update.
Bug Fixes (General)
- The
deploymentKey
parameter of thecheckForUpdate
andsync
methods can now be specified without needing to also configure a deployment key in the app'sconfig.xml
file. This way, you can configure your deployment keys entirely in code and/or at runtime.
Bug Fixes (Android)
- File permissions are now configured correctly for Marshmallow devices, which ensures that a consent dialog isn't displayed when a CodePush update is about to be written to disk. Please ensure that you have >=
4.2.0
of thecordova-plugin-file
plugin installed to ensure this fix is included.
v1.6.0-beta
This release primarily introduces client-side support for the new rollout release feature in the CLI, as well as some key bug fixes. It is now available on NPM and can be updated immediately by running cordova plugin add cordova-plugin-code-push@latest
.
New Features
-
Added client-side support for the new release rollout feature in the CLI This version of the Cordova SDK is required in order to begin taking advantage of this new capability, so make sure to upgrade your apps before attempting to release updates with a rollout percentage. More details
code-push release-cordova MyApp ios --rollout 25%
-
Better diagnostic logging when calling
checkForUpdate
andsync
, so that it's easier to understand what the CodePush runtime is doing and whether any errors were encountered. When in doubt, always check the Safari and/or Chrome dev tools console for info!
Bug Fixes
- The
sync
method can no longer be called multiple times concurrently. Whensync
is called while a previous call is outstanding, the second one will complete by firing anIN_PROGRESS
status to thesyncStatusCallback
(if provided). Being able to callsync
concurrently could have led to some subtle bugs, so this change simply ensures that your app can't get into an odd state if you accidentally callsync
multiple times. - We updated some of our
d.ts
files to accommodate Cordova devs using TypeScript with CodePush
1.5.1-beta
This release introduces support for the WKWebView
on iOS 9.0+, so that apps can make use of the cordova-plugin-wkwebview-engine plugin at the same time as CodePush.
1.5.0-beta
Release notes:
- Breaking changes to the rollback mechanism: Rollback is now enabled by default and the
rollbackTimeout
option was removed.codePush.notifyApplicationReady()
MUST to be called after update, sometime during the first run of the updated code. If you usecodePush.sync()
to install updates you are not affected, sincesync()
callsnotifyApplicationReady()
internally. - Added a two new methods:
getPendingPackage()
andrestartApplication()
. - Made changes to the reporting mechanism, to accommodate install statistics in the CodePush CLI.
1.3.0-beta
Release notes:
- Added a download progress callback to
download
andsync
- Added two new install modes: on app restart / on app resume
- Added a parameter to override the config.xml deployment key if needed
- Renamed
LocalPackage.apply
toLocalPackage.install
- Added new, intermediate statuses to
sync
for better progress reporting