@robingenz/capacitor-app-update v1.3.1
🚧 This project is currently under active development and has not yet been sufficiently tested. It might be changed in backward-incompatible ways.
This plugin supports retrieving app update information on Android and iOS.
Additionally, this plugin supports in-app updates on Android.
Maintainers
Maintainer | GitHub | Social |
---|---|---|
Robin Genz | robingenz | @robin_genz |
Installation
npm install @robingenz/capacitor-app-update
npx cap sync
Android Variables
This plugin will use the following project variables (defined in your app’s variables.gradle
file):
$androidPlayCore
version ofcom.google.android.play:core
(default:1.9.0
)
Configuration
No configuration required for this plugin.
Usage
import { AppUpdate } from '@robingenz/capacitor-app-update';
const getCurrentAppVersion = async () => {
const result = await AppUpdate.getAppUpdateInfo();
return result.currentVersion;
};
const getAvailableAppVersion = async () => {
const result = await AppUpdate.getAppUpdateInfo();
return result.availableVersion;
};
const openAppStore = async () => {
await AppUpdate.openAppStore();
};
const performImmediateUpdate = async () => {
const result = await AppUpdate.getAppUpdateInfo();
if (result.updateAvailability !== AppUpdateAvailability.UPDATE_AVAILABLE) {
return;
}
if (result.immediateUpdateAllowed) {
await AppUpdate.performImmediateUpdate();
}
};
const startFlexibleUpdate = async () => {
const result = await AppUpdate.getAppUpdateInfo();
if (result.updateAvailability !== AppUpdateAvailability.UPDATE_AVAILABLE) {
return;
}
if (result.flexibleUpdateAllowed) {
await AppUpdate.startFlexibleUpdate();
}
};
const completeFlexibleUpdate = async () => {
await AppUpdate.completeFlexibleUpdate();
};
API
getAppUpdateInfo()
openAppStore()
performImmediateUpdate()
startFlexibleUpdate()
completeFlexibleUpdate()
addListener('onFlexibleUpdateStateChange', ...)
- Interfaces
- Enums
getAppUpdateInfo()
getAppUpdateInfo() => Promise<AppUpdateInfo>
Returns app update informations.
Only available for Android and iOS.
Returns: Promise<AppUpdateInfo>
openAppStore()
openAppStore() => Promise<void>
Opens the app store entry of the app in the Play Store (Android) or App Store (iOS).
Only available for Android and iOS.
performImmediateUpdate()
performImmediateUpdate() => Promise<AppUpdateResult>
Performs an immediate in-app update.
Only available for Android.
Returns: Promise<AppUpdateResult>
startFlexibleUpdate()
startFlexibleUpdate() => Promise<AppUpdateResult>
Starts a flexible in-app update.
Only available for Android.
Returns: Promise<AppUpdateResult>
completeFlexibleUpdate()
completeFlexibleUpdate() => Promise<void>
Completes a flexible in-app update by restarting the app.
Only available for Android.
addListener('onFlexibleUpdateStateChange', ...)
addListener(eventName: 'onFlexibleUpdateStateChange', listenerFunc: (state: FlexibleUpdateState) => void) => PluginListenerHandle
Adds a flexbile in-app update state change listener.
Param | Type |
---|---|
eventName | 'onFlexibleUpdateStateChange' |
listenerFunc | (state: FlexibleUpdateState) => void |
Returns: PluginListenerHandle
Interfaces
AppUpdateInfo
Prop | Type | Description |
---|---|---|
currentVersion | string | Version code (Android) or CFBundleShortVersionString (iOS) of the currently installed app version. Only available for Android and iOS. |
availableVersion | string | Version code (Android) or CFBundleShortVersionString (iOS) of the update. Only available for Android and iOS. |
availableVersionReleaseDate | string | Release date of the update in ISO 8601 (UTC) format. Only available for iOS. |
updateAvailability | AppUpdateAvailability | The app update availability. Only available for Android and iOS. |
updatePriority | number | In-app update priority for this update, as defined by the developer in the Google Play Developer API. Only available for Android. |
immediateUpdateAllowed | boolean | true if an immediate update is allowed, otherwise false . Only available for Android. |
flexibleUpdateAllowed | boolean | true if a flexible update is allowed, otherwise false . Only available for Android. |
AppUpdateResult
Prop | Type |
---|---|
code | AppUpdateResultCode |
PluginListenerHandle
Prop | Type |
---|---|
remove | () => Promise<void> |
FlexibleUpdateState
Prop | Type | Description |
---|---|---|
installStatus | FlexibleUpdateInstallStatus | Flexible in-app update install status. |
bytesDownloaded | number | Returns the number of bytes downloaded so far. undefined if the install status is other than DOWNLOADING . |
totalBytesToDownload | number | Returns the total number of bytes to be downloaded for this update. undefined if the install status is other than DOWNLOADING . |
Enums
AppUpdateAvailability
Members | Value |
---|---|
UNKNOWN | 0 |
UPDATE_NOT_AVAILABLE | 1 |
UPDATE_AVAILABLE | 2 |
UPDATE_IN_PROGRESS | 3 |
AppUpdateResultCode
Members | Value | Description |
---|---|---|
OK | 0 | The user has accepted the update. |
CANCELED | 1 | The user has denied or cancelled the update. |
FAILED | 2 | Some other error prevented either the user from providing consent or the update to proceed. |
NOT_AVAILABLE | 3 | No update available. |
NOT_ALLOWED | 4 | Update type not allowed. |
INFO_MISSING | 5 | App update info missing. You must call getAppUpdateInfo() before requesting an update. |
FlexibleUpdateInstallStatus
Members | Value |
---|---|
UNKNOWN | 0 |
PENDING | 1 |
DOWNLOADING | 2 |
INSTALLING | 3 |
INSTALLED | 4 |
FAILED | 5 |
CANCELED | 6 |
DOWNLOADED | 11 |
Test with internal app-sharing
The Android Developers documentation describes how to test in-app updates using internal app sharing: https://developer.android.com/guide/playcore/in-app-updates/test
Changelog
See CHANGELOG.md.
License
See LICENSE.
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago