@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 syncAndroid Variables
This plugin will use the following project variables (defined in your app’s variables.gradle file):
$androidPlayCoreversion 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) => PluginListenerHandleAdds 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.
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago