* feat(mixpanel): add serverUrl and trackAutomaticEvents params to init()
Expose the serverUrl parameter for EU data residency support and
trackAutomaticEvents for Android. This requires the corresponding
cordova-plugin-mixpanel update (samzilverberg/cordova-mixpanel-plugin).
Usage: this.mixpanel.init(token, true, 'https://api-eu.mixpanel.com')
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: regenerate plugin readmes
---------
Co-authored-by: Simon Brami <simon.brami@evy.eu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The publish script was catching errors and logging them but exiting
with code 0, causing the CI workflow to show green even when publishing
failed. Now calls process.exit(1) on publish failure.
The publish workflow requires id-token: write for npm provenance.
When called via workflow_call, permissions are inherited from the
caller, so id-token must be declared in release-please.yml.
Split publish into a separate reusable workflow (publish.yml) that can
be triggered manually via workflow_dispatch or called from release-
please. This allows re-running publish independently when a release
already exists but publishing failed.
Fix __String vs string type mismatch in imports transformer by
converting escapedText to string. Add @ts-expect-error for TypeDoc
Converter.on() which exists at runtime but is not in public type
exports.
Replace all implicit and explicit any types in build scripts with
proper TypeScript Compiler API types (Decorator, ClassDeclaration,
MethodDeclaration, Identifier, SourceFile, etc.). Add PackageJson
and InjectableClassEntry interfaces. Fix return types, null checks,
and type assertions throughout all transformer scripts.
Add --provenance flag to npm publish for supply chain security.
Add id-token: write permission to release workflow for OIDC-based
provenance attestation. Fix MIN_CORE_VERSION to dynamically use
current version instead of hardcoded ^8.0.2.
zone.js was listed as a devDependency but is never imported or used
in the source code or build scripts. The Angular partial compilation
does not require it. Consumers decide whether to use zone.js in their
own apps. Also removes the zone.js version constraint from renovate.
Update renovate.json for current dependencies. Remove Commitizen badge
from README. Replace @ionic-native imports with @awesome-cordova-plugins
in plugin JSDoc examples. Fill in Kommunicate documentation links.
Add modern package exports to published plugin packages. Remove unused
shipit script and release-please scripts.
Update CI workflow: restrict triggers to master+PRs, add concurrency
groups and npm cache. Update release-please and stale workflows to
latest action versions. Replace single ISSUE_TEMPLATE.md with YAML-
based templates (bug report, feature request, config). Rewrite
CONTRIBUTING.md for awesome-cordova-plugins.
Bump targets from ES2020 to ES2022, update moduleResolution to
"bundler" for tsconfigs (modern standard for bundler-consumed
libraries) and Node16 for build scripts. Remove unused genDir: "aot"
from angularCompilerOptions. Clean up stale .gitignore entries.
Replace fs-extra/rimraf with native node:fs, lodash with
structuredClone/spread, ts-node with tsx, minimist with node:util
parseArgs, winston with console logger, async-promise-queue with
native Promise concurrency. Use promisify for child_process.exec.
Normalize all imports to use node: protocol. Extract Jest config to
jest.config.ts and replace ts-jest with @swc/jest.
Migrate from husky + lint-staged to lefthook v2 for git hooks. Migrate
prettier config from CJS to ESM. Remove commitizen/cz-conventional-
changelog (release-please handles conventional commits).
Replace legacy .eslintrc with eslint.config.mjs flat config. Update to
ESLint 10, typescript-eslint v8, and eslint-plugin-jsdoc v62. Resolve
all lint warnings and tighten configuration.
Replace the legacy dgeni/gulp documentation pipeline with TypeDoc
and typedoc-plugin-markdown. Generates plugin README files with
extracted @Plugin() decorator metadata. Register custom JSDoc tags
used by plugin source files.
Update all core dependencies to latest versions: Angular 20, TypeScript
5.8, RxJS 7.8, zone.js 0.15. Bump Node.js engine requirement to >=20.
Update all devDependencies to current versions.
BREAKING CHANGE: Requires Node.js 20+ and Angular 20+.
* feat(cordova-plugin-unvired-sdk): added new properties into loginparameters class and new function.
* feat(cordova-plugin-unvired-sdk): added a new property.
* feat(mobile-messaging): add callback parameter for Mobile Messaging SDK init function
* fix(mobile-messaging): order of init parameters in JSDoc
* feat(mobile-messaging): support for JWT authorization for user operations
---------
Co-authored-by: Ivan Bilobrk <Ivan.Bilobrk@infobip.com>
* Update fingerprint-aio/index.ts
Added two optional parameters to FingerprintAIO.isAvailable to reflect the optional parameters of isAvailable in cordova-plugin-fingerprint-aio
* Update index.ts
Added documentation to isAvailable()
* Update index.ts
Added documentation to plugin
* Added "callbackOrder : 'reverse'" to isAvailable()
* feat(mobile-messaging): fullfeaturedInApps option to configuration, support of the Inbox methods and registerForAndroidRemoteNotifications method
* fix(mobile-messaging): cleanup
* feat(diagnostics): add missing constants and methods for latest plugin version (#4600)
* feat(cordova-plugin-firebase-model): Add new plugin to download and process ML model hosted in firebase. (#4608)
* feat(unvired-cordova-sdk): Add new function to regenrate the JWT Token
* feat(unvired-cordova-sdk): Add couple of properties to login parameters.
* feat(cordova-plugin-firebase-model): Add new plugin for downloading and processing ML model hosted in Firebase.
* fix(cordova-plugin-unvired-sdk): revert last set of changes.
* fix(cordova-plugin-unvired-sdk): Add two new login properties.
* fix(cordova-plugin-firebase-model): Delete the previously added plugin.
* Revert "fix(cordova-plugin-firebase-model): Delete the previously added plugin."
This reverts commit 86f39dc7e8.
* Revert "fix(cordova-plugin-unvired-sdk): Add two new login properties."
This reverts commit a79f31e12e.
* feat(clevertap): support clevertap-cordova 2.7.0 (#4617) [skip ci]
* feat(clevertap): add CleverTap plugin
* style(clevertap): cleanup stray lint error
* refactor
* feat(clevertap): update for latest CleverTap Cordova plugin
* chore: Update Repo from Ionic Native Repo
* fix: Code Changes for parity SDK-155
* fix: Indentation fixes for SDK-155
* fix: Code Repo fix while updating fork branch
* fix: Remove unnecessary adder .scripts Folder
* fix: Remove unwanted added folder .circleci
* fix: Remove unwanted added File .npmrc
* fix: Revert .Github Folder Changes to as per Ionic-Native master
* fix: Update changes as per ionic-native master
* fix: Code Repo fix while updating fork branch
fix: Remove unnecessary adder .scripts Folder
fix: Remove unwanted added folder .circleci
fix: Remove unwanted added File .npmrc
fix: Revert .Github Folder Changes to as per Ionic-Native master
fix: Update changes as per ionic-native master
* fix(CleverTap): Fix for missing methods issue #3491
* refactor(profile): remove setProfile methods for fb and google
* refactor(dynamic variables): remove Product A/B Testing (Dynamic Variables) code
* fix(product config): add key param to product config getters
* feat(identity): add a new public method getCleverTapID and deprecate existing CleverTapID methods
* feat(profile): add public methods to increment/decrement values set via User properties
* feat(profile): add public methods to increment/decrement values set via User properties
* feat(inapp): add public methods for suspending/discarding & resuming InApp Notifications
* feat(inbox): add new api for iOS to delete bulk inbox messages for given message ids
* refactor(xiaomi-push): add region as an extra mandatory parameter to setPushXiaomiToken
* Update index.ts to support cordova 2.7.0
* Update index.ts
---------
Co-authored-by: Peter Wilkniss <peter@clevertap.com>
Co-authored-by: Daniel Sogl <mytechde@outlook.com>
Co-authored-by: Darshan Pania <darshan@clevertap.com>
Co-authored-by: Surya <suryanarayan@clevertap.com>
Co-authored-by: SuryaClevertap <63039490+SuryaClevertap@users.noreply.github.com>
Co-authored-by: Piyush Kukadiya <piyush.kukadiya@clevertap.com>
Co-authored-by: piyush-kukadiya <61137760+piyush-kukadiya@users.noreply.github.com>
* feat(save-dialog): add plugin (#4618)
* smtp-client
* fix plugin ref
* cloud settings
* + save-dialog
---------
Co-authored-by: Daniel Sogl <daniel@sogls.de>
* Change installation example to use plugin author's package ID
(rather than a random fork)
---------
Co-authored-by: Dave Alden <dpa99c@gmail.com>
Co-authored-by: Srinidhi <srinidhi.rao@unvired.com>
Co-authored-by: AishwaryaNanna <97506871+AishwaryaNanna@users.noreply.github.com>
Co-authored-by: Peter Wilkniss <peter@clevertap.com>
Co-authored-by: Darshan Pania <darshan@clevertap.com>
Co-authored-by: Surya <suryanarayan@clevertap.com>
Co-authored-by: SuryaClevertap <63039490+SuryaClevertap@users.noreply.github.com>
Co-authored-by: Piyush Kukadiya <piyush.kukadiya@clevertap.com>
Co-authored-by: piyush-kukadiya <61137760+piyush-kukadiya@users.noreply.github.com>
Co-authored-by: marysuon <marysuon@gmail.com>
* feat(diagnostics): add missing constants and methods for latest plugin version (#4600)
* feat(cordova-plugin-firebase-model): Add new plugin to download and process ML model hosted in firebase. (#4608)
* feat(unvired-cordova-sdk): Add new function to regenrate the JWT Token
* feat(unvired-cordova-sdk): Add couple of properties to login parameters.
* feat(cordova-plugin-firebase-model): Add new plugin for downloading and processing ML model hosted in Firebase.
* fix(cordova-plugin-unvired-sdk): revert last set of changes.
* fix(cordova-plugin-unvired-sdk): Add two new login properties.
* fix(cordova-plugin-firebase-model): Delete the previously added plugin.
* Revert "fix(cordova-plugin-firebase-model): Delete the previously added plugin."
This reverts commit 86f39dc7e8.
* Revert "fix(cordova-plugin-unvired-sdk): Add two new login properties."
This reverts commit a79f31e12e.
* feat(clevertap): support clevertap-cordova 2.7.0 (#4617) [skip ci]
* feat(clevertap): add CleverTap plugin
* style(clevertap): cleanup stray lint error
* refactor
* feat(clevertap): update for latest CleverTap Cordova plugin
* chore: Update Repo from Ionic Native Repo
* fix: Code Changes for parity SDK-155
* fix: Indentation fixes for SDK-155
* fix: Code Repo fix while updating fork branch
* fix: Remove unnecessary adder .scripts Folder
* fix: Remove unwanted added folder .circleci
* fix: Remove unwanted added File .npmrc
* fix: Revert .Github Folder Changes to as per Ionic-Native master
* fix: Update changes as per ionic-native master
* fix: Code Repo fix while updating fork branch
fix: Remove unnecessary adder .scripts Folder
fix: Remove unwanted added folder .circleci
fix: Remove unwanted added File .npmrc
fix: Revert .Github Folder Changes to as per Ionic-Native master
fix: Update changes as per ionic-native master
* fix(CleverTap): Fix for missing methods issue #3491
* refactor(profile): remove setProfile methods for fb and google
* refactor(dynamic variables): remove Product A/B Testing (Dynamic Variables) code
* fix(product config): add key param to product config getters
* feat(identity): add a new public method getCleverTapID and deprecate existing CleverTapID methods
* feat(profile): add public methods to increment/decrement values set via User properties
* feat(profile): add public methods to increment/decrement values set via User properties
* feat(inapp): add public methods for suspending/discarding & resuming InApp Notifications
* feat(inbox): add new api for iOS to delete bulk inbox messages for given message ids
* refactor(xiaomi-push): add region as an extra mandatory parameter to setPushXiaomiToken
* Update index.ts to support cordova 2.7.0
* Update index.ts
---------
Co-authored-by: Peter Wilkniss <peter@clevertap.com>
Co-authored-by: Daniel Sogl <mytechde@outlook.com>
Co-authored-by: Darshan Pania <darshan@clevertap.com>
Co-authored-by: Surya <suryanarayan@clevertap.com>
Co-authored-by: SuryaClevertap <63039490+SuryaClevertap@users.noreply.github.com>
Co-authored-by: Piyush Kukadiya <piyush.kukadiya@clevertap.com>
Co-authored-by: piyush-kukadiya <61137760+piyush-kukadiya@users.noreply.github.com>
* feat(save-dialog): add plugin (#4618)
* smtp-client
* fix plugin ref
* cloud settings
* + save-dialog
---------
Co-authored-by: Daniel Sogl <daniel@sogls.de>
* Update to cordova 5 (#98)
---------
Co-authored-by: Dave Alden <dpa99c@gmail.com>
Co-authored-by: Srinidhi <srinidhi.rao@unvired.com>
Co-authored-by: AishwaryaNanna <97506871+AishwaryaNanna@users.noreply.github.com>
Co-authored-by: Peter Wilkniss <peter@clevertap.com>
Co-authored-by: Darshan Pania <darshan@clevertap.com>
Co-authored-by: Surya <suryanarayan@clevertap.com>
Co-authored-by: SuryaClevertap <63039490+SuryaClevertap@users.noreply.github.com>
Co-authored-by: Piyush Kukadiya <piyush.kukadiya@clevertap.com>
Co-authored-by: piyush-kukadiya <61137760+piyush-kukadiya@users.noreply.github.com>
Co-authored-by: marysuon <marysuon@gmail.com>
Co-authored-by: Cesar de la Vega <cesarvegaro@gmail.com>
Changes:
- added confirmationRequired param to show method to options
- moved plugin errors to a separate enum
- changes some plugin method return values
* chore(deps): bump angular and typescript
- required to enable ivy output & partial compilation mode
* chore(build): enable ivy output & partial compilation mode
- change ngx builds to use ivy
- remove some code that is no longer required with ivy
* add set zoom for Dynamsoft Barcode Scanner
* update Dynamsoft Barcode Scanner to add setFocus
* feat: add rotate scan option and rotation frame result to Dynamsoft Barcode Scanner
* add comments and rename the rotation result for Dynamsoft Barcode Scanner
Added new POST_NOTIFICATIONS, READ_MEDIA_AUDIO, READ_MEDIA_IMAGES, and READ_MEDIA_VIDEO permissions. Adding missing Bluetooth permissions for advertise, connect, and scan.
The Bluetooth permissions are already present in the underlying Cordova plugin. The Android 13 permissions have been submitted to the underlying Cordova plugin as a pull request so may not be present there yet, but match the pull request and the actual underlying permission names found in Android 13.
`useTouchID` is not an optional parameter. When it is not explicitly set, the whole app crashes with this error:
> Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull boolValue]: unrecognized selector sent to instance 0x111f02f08'
This bug is known since November 2018 and likely won't be fixed: https://github.com/ionic-team/cordova-plugin-ios-keychain/issues/34
* feat(urbanairship): Add attributes editing and fix tag editing
* feat(urbanairship): Update for urbanairship 14.0
Co-authored-by: Christian von Rohr <christian.vonrohr@well.ch>
"this.emailComposer.hasClient()" and "this.emailComposer.isAvailable()" method usage is wrong on the official documentation. Please check.
.hasClient and .isAvailable both requires an app name string as the parameter, and they return promises.
The original code of putting the parameter "app" into the "then()" chainable is not correct, as the "then()" only accepts callback functions as parameters.
Tested and proved in visual studio code.
* add chooser actual fork plugin
* * removes base64 functionality as we can use ionic native file plugin to get file directly
* use getFiles
Co-authored-by: Pronin Andrey <a@innoline.pro>
* feat(unvired-cordova-sdk): support login via email
* fix(unvired-cordova-sdk): return typed promise object for user settings
* fix(unvired-cordova-sdk): change return type to string for guid()
* doc(unvired-cordova-sdk): doc update
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add support for metadata JSON
* doc(unvired-cordova-sdk): update doc
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add methods to get and set log level
* fix(unvired-cordova-sdk): update the return type for getLog()
* feat(unvired-cordova-sdk): return platform name
* feat(unvired-cordova-sdk): add method to get log file path
* feat(unvired-cordova-sdk): test push notifications
* fix(unvired-cordova-sdk): define return for logRead
* doc(unvired-cordova-sdk): remove mobile only restriction for some apis
* feat(unvired-cordova-sdk): add new property containing HTTP status code.
* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data
* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.
* fix(unvired-cordova-sdk): change the return type for lockDataSender api
* fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus
* doc(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc
* feat(unvired-cordova-sdk): Added new notification type
* feat(unvired-cordova-sdk): delete outbox item based on lid
* fix(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc for userSettings()
* feat(unvired-cordova-sdk): add new discovery api
* fix(unvired-cordova-sdk): rename the property
* doc(unvired-cordova-sdk): Doc update
* fix(unvired-cordova-sdk): Update the return type for startDiscoveryService api
* doc(unvired-cordova-sdk): Rename the loginParameter languageCode to loginLanguage.
* changes after doing npm install
* feat(unvired-cordova-sdk): Add a new login parameter to send jwt options.
* feat(unvired-cordova-sdk): add new function to cache website data
* feat(unvired-cordova-sdk): new function to export the database for browser platform
* fix(unvired-cordova-sdk): fix method names
* feat(unvired-cordova-sdk): add new function 'setClientCredentials'
* doc(unvired-cordova-sdk): Update doc
* fix(unvired-cordova-sdk): Create a new Credential object and pass that as an input to the setClientCredentials() function.
* fix(unvired-cordova-sdk): Fix the typo in the function parameter.
* fix(unvired-cordova-sdk): Changed the type of port to string.
* feat(unvired-cordova-sdk): add methods to encrypt and decrypt the string.
* Delete package-lock.json
removed the package-locj.json from the PR
* Update package-lock.json
fix(unvired-cordova-sdk): Update package-lock.json corresponding to version 5.35.0
* doc(unvired-cordova-sdk) Updated document for the new function
Co-authored-by: Srinidhi Anand Rao <srinidhi.rao@unvired.io>
* add new methods
* feat(preview-any-file): new methods to preview or open files from url, path, assets or base64
* REVERT CHANGES
* feat(preview-any-file): new methods to preview or open files from url, path, assets or base64
* feat(unvired-cordova-sdk): support login via email
* fix(unvired-cordova-sdk): return typed promise object for user settings
* fix(unvired-cordova-sdk): change return type to string for guid()
* doc(unvired-cordova-sdk): doc update
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add support for metadata JSON
* doc(unvired-cordova-sdk): update doc
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add methods to get and set log level
* fix(unvired-cordova-sdk): update the return type for getLog()
* feat(unvired-cordova-sdk): return platform name
* feat(unvired-cordova-sdk): add method to get log file path
* feat(unvired-cordova-sdk): test push notifications
* fix(unvired-cordova-sdk): define return for logRead
* doc(unvired-cordova-sdk): remove mobile only restriction for some apis
* feat(unvired-cordova-sdk): add new property containing HTTP status code.
* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data
* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.
* fix(unvired-cordova-sdk): change the return type for lockDataSender api
* fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus
* doc(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc
* feat(unvired-cordova-sdk): Added new notification type
* feat(unvired-cordova-sdk): delete outbox item based on lid
* fix(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc for userSettings()
* feat(unvired-cordova-sdk): add new discovery api
* fix(unvired-cordova-sdk): rename the property
* doc(unvired-cordova-sdk): Doc update
* fix(unvired-cordova-sdk): Update the return type for startDiscoveryService api
* doc(unvired-cordova-sdk): Rename the loginParameter languageCode to loginLanguage.
* changes after doing npm install
* feat(unvired-cordova-sdk): Add a new login parameter to send jwt options.
* feat(unvired-cordova-sdk): add new function to cache website data
* feat(unvired-cordova-sdk): new function to export the database for browser platform
* fix(unvired-cordova-sdk): fix method names
* feat(unvired-cordova-sdk): add new function 'setClientCredentials'
* doc(unvired-cordova-sdk): Update doc
* fix(unvired-cordova-sdk): Create a new Credential object and pass that as an input to the setClientCredentials() function.
* fix(unvired-cordova-sdk): Fix the typo in the function parameter.
* fix(unvired-cordova-sdk): Changed the type of port to string.
* feat(unvired-cordova-sdk): add methods to encrypt and decrypt the string.
* Delete package-lock.json
removed the package-locj.json from the PR
Co-authored-by: Srinidhi Anand Rao <srinidhi.rao@unvired.io>
* feat(approov-advanced-http) add wrapper for approov advanced http cordova plugin
* feat(approov-advanced-http) update plugin name so that it does not collide with existing http module
* added custom-uisdk index file
* feat(CustomUiSDK): add plugin for Paytm Custom UI SDK
* removed template generated comments and added ngx at the end to the import
* feat(CustomUiSDK): added app invoke method
* feat(unvired-cordova-sdk): support login via email
* fix(unvired-cordova-sdk): return typed promise object for user settings
* fix(unvired-cordova-sdk): change return type to string for guid()
* doc(unvired-cordova-sdk): doc update
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add support for metadata JSON
* doc(unvired-cordova-sdk): update doc
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add methods to get and set log level
* fix(unvired-cordova-sdk): update the return type for getLog()
* feat(unvired-cordova-sdk): return platform name
* feat(unvired-cordova-sdk): add method to get log file path
* feat(unvired-cordova-sdk): test push notifications
* fix(unvired-cordova-sdk): define return for logRead
* doc(unvired-cordova-sdk): remove mobile only restriction for some apis
* feat(unvired-cordova-sdk): add new property containing HTTP status code.
* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data
* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.
* fix(unvired-cordova-sdk): change the return type for lockDataSender api
* fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus
* doc(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc
* feat(unvired-cordova-sdk): Added new notification type
* feat(unvired-cordova-sdk): delete outbox item based on lid
* fix(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc for userSettings()
* feat(unvired-cordova-sdk): add new discovery api
* fix(unvired-cordova-sdk): rename the property
* doc(unvired-cordova-sdk): Doc update
* fix(unvired-cordova-sdk): Update the return type for startDiscoveryService api
* doc(unvired-cordova-sdk): Rename the loginParameter languageCode to loginLanguage.
* changes after doing npm install
Co-authored-by: Srinidhi Anand Rao <srinidhi.rao@unvired.io>
* feat(unvired-cordova-sdk): support login via email
* fix(unvired-cordova-sdk): return typed promise object for user settings
* fix(unvired-cordova-sdk): change return type to string for guid()
* doc(unvired-cordova-sdk): doc update
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add support for metadata JSON
* doc(unvired-cordova-sdk): update doc
* doc(unvired-cordova-sdk): update doc
* feat(unvired-cordova-sdk): add methods to get and set log level
* fix(unvired-cordova-sdk): update the return type for getLog()
* feat(unvired-cordova-sdk): return platform name
* feat(unvired-cordova-sdk): add method to get log file path
* feat(unvired-cordova-sdk): test push notifications
* fix(unvired-cordova-sdk): define return for logRead
* doc(unvired-cordova-sdk): remove mobile only restriction for some apis
* feat(unvired-cordova-sdk): add new property containing HTTP status code.
* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data
* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.
* fix(unvired-cordova-sdk): change the return type for lockDataSender api
* fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus
* doc(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc
* feat(unvired-cordova-sdk): Added new notification type
* feat(unvired-cordova-sdk): delete outbox item based on lid
* fix(unvired-cordova-sdk): Update doc
* doc(unvired-cordova-sdk): Update doc for userSettings()
* feat(unvired-cordova-sdk): add new discovery api
* fix(unvired-cordova-sdk): rename the property
* doc(unvired-cordova-sdk): Doc update
Co-authored-by: Srinidhi Anand Rao <srinidhi.rao@unvired.io>
* added custom-uisdk index file
* feat(CustomUiSDK): add plugin for Paytm Custom UI SDK
* removed template generated comments and added ngx at the end to the import
#### There are no rules, but here are a few things to consider:
###### Before you submit an issue:
* Do a quick search to see if there are similar issues
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/api/platform/Platform/#ready).
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save @ionic-native/core@latest`
###### Still having problems? submit an issue with the following details:
* Short description of the issue
* Steps to reproduce
* Stack trace (if available)
Before submitting an issue:
- Search existing issues to avoid duplicates
- Make sure you are using the latest version of `@awesome-cordova-plugins/core`
- Ensure `deviceready` has fired before interacting with any plugin
## Feature request?
Have a plugin you'd like to see supported? Since Ionic Native is a thin wrapper around existing Cordova plugins, adding support for new plugins is as easy as creating a new wrapper for whatever plugin you'd like to add.
Still having problems? [Open an issue](https://github.com/danielsogl/awesome-cordova-plugins/issues/new/choose) with:
Take a look at our [Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.
- Short description of the issue
- Steps to reproduce
- Stack trace (if available)
**Please do not submit support requests as issues.** Use the [Discussions](https://github.com/danielsogl/awesome-cordova-plugins/discussions) section instead.
## Want to add a plugin?
Awesome Cordova Plugins is a set of wrappers for Cordova plugins. Adding support for a new plugin is straightforward:
1. Run `npm run plugin:create -- -n PluginName` to scaffold a new plugin wrapper
2. Implement the wrapper following the patterns in existing plugins
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or https://ionicworldwide.herokuapp.com/
**Current behavior:**
<!-- Describe how the bug manifests. -->
**Expected behavior:**
<!-- Describe what the behavior would be without the bug. -->
**Steps to reproduce:**
<!-- If you are able to illustrate the bug or feature request with an example, please provide steps to reproduce. -->
**Related code:**
```
insert any relevant code here
```
**Other information:**
<!-- List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to fix, Stack Overflow links, forum links, etc. -->
**Ionic info:** (run `ionic info` from a terminal/cmd prompt and paste output below):
This is a short guide on creating new plugin wrappers for Ionic Native.
This is a short guide on creating new plugin wrappers for Awesome Cordova Plugins.
## Creating Plugin Wrappers
First, let's start by creating a new plugin wrapper from template.
First, create a new plugin wrapper from the template:
```
// Call this command, and replace PluginName with the name of the plugin you wish to add
// Make sure to capitalize the first letter, or use CamelCase if necessary.
gulp plugin:create -n PluginName
// add -m flag to get a minimal template to start with
gulp plugin:create -m -n PluginName
```bash
# Replace PluginName with the name of the plugin you wish to add.
# Use CamelCase for the name (e.g. BarcodeScanner, NativeAudio).
npm run plugin:create -- -n PluginName
```
Running the command above will create a new directory `src/@ionic-native/plugins/plugin-name/` with a single file in there:`index.ts`. This file is where all the plugin definitions should be.
This creates a new directory `src/@awesome-cordova-plugins/plugins/plugin-name/` with a single `index.ts` file where all plugin definitions go.
Let's take a look at the existing plugin wrapper for Geolocation to see what goes into an Ionic Native plugin (comments have been removed for clarity):
## Plugin Anatomy
```
Let's look at the Geolocation plugin wrapper as an example:
Next, we need to specify some information about this plugin. Ionic Native is written in [TypeScript](http://www.typescriptlang.org/) and makes use of a feature called [decorators](https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Decorators.md). Long story short, decorators allow us to modify or add info to classes and properties using a declarative syntax.
The `@Plugin` decorator provides metadata about the Cordova plugin:
For example, the `@Plugin` decorator adds information about the plugin to our Geolocation class:
The `pluginRef` tells Awesome Cordova Plugins where the Cordova plugin attaches itself. For example, `cordova-plugin-camera` is available at `window.navigator.camera`, so `pluginRef` is `'navigator.camera'`.
}
```
### @Cordova Decorator
Here, `plugin` is the name of the plugin package on npm and used when calling `cordova plugin add`.
Wraps a stub method in a call to the Cordova plugin. By default it returns a Promise that resolves on the success callback and rejects on the error callback. It also checks that Cordova and the plugin are installed, printing diagnostics if not.
`pluginRef` refers to the where on `window` the underlying Cordova plugin is normally exposed. For example, in the case of the Cordova Geolocation plugin, normally you would make calls like `window.navigator.geolocation.getCurrentPosition({}, success, error)`, so the `pluginRef` in this case is `navigator.geolocation`.
It's just a stub. The `return` is only there to keep the TypeScript type-checker from complaining since we indicate that `getCurrentPosition` returns a `Promise<Geoposition>`.
By default, the `@Cordova` decorator wraps the plugin callbacks in a Promise that resolves when the success callback is called and rejects when the error callback is called. It also ensures that Cordova and the underlying plugin are available, and prints helpful diagnostics if they aren't.
The `@Cordova` decorator has a few more options now.
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/ionic-team/ionic-native#promises-and-observables) instead of a Promise.
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
`clearFunction` is used in conjunction with the `observable` option and indicates the function to be called when the Observable is disposed.
### Testing your changes
You need to run `npm run build` in the `ionic-native` project, this will create a `dist` directory. The `dist` directory will contain a sub directory `@ionic-native` with all the packages compiled in there. Copy the package(s) you created/modified to your app's node_modules under the `@ionic-native` directory. (e.g. `cp -r dist/@ionic-native/plugin-name ../my-app/node_modules/@ionic-native/`).
### Cleaning the code
You need to run `npm run lint` to analyze the code and ensure its consistency with the repository style. Fix any errors before submitting a PR.
### 'Wrapping' Up
That's it! The only thing left to do is rigorously document the plugin and its usage. Take a look at some of the other plugins for good documentation styles.
## Commit Message Format
We have very precise rules over how our git commit messages can be formatted. This leads to more readable messages that are easy to follow when looking through the project history. But also, we use the git commit messages to generate the our change log. (Ok you got us, it's basically Angular's commit message format).
`type(scope): subject`
#### Type
Must be one of the following:
- **fix**: A bug fix
- **feat**: A new feature
- **docs**: Documentation only changes
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- **refactor**: A code change that neither fixes a bug nor adds a feature
- **perf**: A code change that improves performance
- **test**: Adding missing tests
- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation
#### Scope
The scope could be anything specifying place of the commit change. For example, the name of the plugin being changed
#### Subject
The subject contains succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- do not capitalize first letter
- do not place a period (.) at the end
- entire length of the commit message must not go over 50 characters
### Ionic Native Decorators
#### Plugin
A decorator to wrap the main plugin class, and any other classes that will use `@Cordova` or `@CordovaProperty` decorators. This decorator accepts the following configuration:
- _pluginName_: Plugin name, this should match the class name
- _plugin_: The plugin's NPM package, or Github URL if NPM is not available.
- _pluginRef_: The plugin object reference. Example: 'cordova.file'.
- _repo_: The plugin's Github Repository URL
- _install_: (optional) Install command. This is used in case a plugin has a custom install command (takes variables).
- _platforms_: An array of strings indicating the supported platforms.
#### Cordova
Checks if the plugin and the method are available before executing. By default, the decorator will wrap the callbacks of the function and return a Promise. This decorator takes the following configuration options:
- **observable**: set to true to return an Observable
- **clearFunction**: an optional name of a method to clear the observable we returned
- **clearWithArgs**: This can be used if clearFunction is set. Set this to true to call the clearFunction with the same arguments used in the initial function.
- **sync**: set to true if the method should return the value as-is without wrapping with Observable/Promise
- **callbackOrder**: set to `reverse` if the success and error callbacks are the first two arguements of the method
- **callbackStyle**: set to `node` if the plugin has one callback with a node style (e.g: `function(err, result){}`), or set to `object` if the callbacks are part of an object
- **successName**: Success function property name. This must be set if callbackStyle is set to object.
- **errorName**: Error function property name. This must be set if callbackStyle is set to object.
- **successIndex**: Set a custom index for the success callback function. This doesn't work if callbackOrder or callbackStyle are set.
- **errorIndex**: Set a custom index for the error callback function. This doesn't work if callbackOrder or callbackStyle are set.
- **eventObservable**: set to true to return an observable that wraps an event listener
- **event**: Event name, this must be set if eventObservable is set to true
- **element**: Element to attach the event listener to, this is optional, defaults to `window`
- **otherPromise**: Set to true if the wrapped method returns a promise
- **platforms**: array of strings indicating supported platforms. Specify this if the supported platforms doesn't match the plugin's supported platforms.
Checks if the plugin and property exist before getting/setting the property's value
Gets/sets a property on the Cordova plugin object after checking the plugin exists:
Example:
```ts
```typescript
@CordovaProperty()
someProperty: string;
```
#### CordovaCheck
### @CordovaCheck
Checks if the plugin exists before performing a custom written method. By default, the method will return a promise that will reject with an error if the plugin is not available. This wrapper accepts two optional configurations:
Checks if the plugin exists before running custom logic. Rejects with an error if the plugin is unavailable:
- **observable**: set to true to return an empty Observable if the plugin isn't available
- **sync**: set to true to return nothing if the plugin isn't available
Example:
```ts
```typescript
@CordovaCheck()
someMethod():Promise<any>{
// anything here will only run if the plugin is available
// Custom logic — only runs if the plugin is available
}
```
#### CordovaFunctionOverride
Options: `observable` (return empty Observable) or `sync` (return nothing) if plugin is missing.
Wrap a stub function in a call to a Cordova plugin, checking if both Cordova and the required plugin are installed.
### @CordovaFunctionOverride
Example:
Wraps a stub function in a Cordova plugin call and returns an Observable:
```ts
```typescript
@CordovaFunctionOverride()
someMethod():Observable<any>{return;}
```
## Testing Your Changes
```bash
# Build all packages
npm run build
# Run tests
npm test
# Lint your code
npm run lint
```
To test in a real app, copy the built package to your app's `node_modules`:
Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](https://ionicframework.com/) mobile app easy.
Awesome Cordova Plugins is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](https://ionicframework.com/) mobile app easy.
Ionic Native wraps plugin callbacks in a Promise or Observable, providing a common interface for all plugins and making it easy to use plugins with Angular change detection.
Awesome Cordova Plugins wraps plugin callbacks in a Promise or Observable, providing a common interface for all plugins and making it easy to use plugins with Angular change detection.
Ionic Native is available in two versions:
1. Ionic Native [Community Edition](https://ionicframework.com/docs/native/community), featuring open source, community-maintained Cordova and Capacitor plugins and APIs.
2. Ionic Native [Enterprise Edition](https://ionicframework.com/docs/enterprise), featuring a library of Premier plugins and solutions that are fully supported and maintained by the Ionic team, with access to Ionic experts and a guaranteed response SLA to mission-critical app development.
To learn more about the reasons why Ionic Native was renamed to Awesome Cordova Plugins, read the official [Ionic blog](https://ionicframework.com/blog/a-new-chapter-for-ionic-native/) post by Max Lyncht.
## Capacitor Support
In addition to Cordova, Ionic Native also works with [Capacitor](https://capacitor.ionicframework.com), Ionic's official native runtime. Basic usage below. For complete details, [see the Capacitor documentation](https://capacitor.ionicframework.com/docs/cordova/using-cordova-plugins).
In addition to Cordova, Awesome Cordova Plugins also works with [Capacitor](https://capacitorjs.com), Ionic's official native runtime. Basic usage below. For complete details, [see the Capacitor documentation](https://capacitorjs.com/docs/v2/cordova/using-cordova-plugins).
## Installation
Run following command to install Ionic Native in your project.
Run following command to install Awesome Cordova Plugins in your project.
```bash
npm install @ionic-native/core --save
npm install @awesome-cordova-plugins/core --save
```
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](https://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
You also need to install the Awesome Cordova Plugins package for each plugin you want to add. Please see the [Awesome Cordova Plugins documentation](https://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
## Documentation
For the full Ionic Native documentation, please visit [https://ionicframework.com/docs/native/](https://ionicframework.com/docs/native/).
For the full Awesome Cordova Plugins documentation, please visit [https://ionicframework.com/docs/native/](https://ionicframework.com/docs/native/).
### Basic Usage
#### Ionic/Angular apps
#### Ionic/Angular apps (Standalone)
To use a plugin, import and add the plugin provider to your `@NgModule`, and then inject it where you wish to use it.
Angular v14+ uses standalone components by default. To use a plugin, register it as a provider in your application bootstrap and inject it using Angular's `inject()` function.
Make sure to import the injectable class from the `/ngx` directory as shown in the following examples:
These modules can work in any ES2015+/TypeScript app (including Angular/Ionic apps). To use any plugin, import the class from the appropriate package, and use it's static methods.
These modules can also be used without Angular by calling static methods directly:
console.log('Error occurred while taking a picture',err);
}
);
.then((data)=>console.log('Took a picture!',data))
.catch((e)=>console.log('Error occurred while taking a picture',e));
});
```
### Mocking and Browser Development (Ionic/Angular apps only)
Ionic Native makes it possible to mock plugins and develop nearly the entirety of your app in the browser or in `ionic serve`.
Awesome Cordova Plugins makes it possible to mock plugins and develop nearly the entirety of your app in the browser or in `ionic serve`.
To do this, you need to provide a mock implementation of the plugins you wish to use. Here's an example of mocking the `Camera` plugin to return a stock image while in development:
First import the `Camera` class in your `src/app/app.module.ts` file:
First create a mock class that extends the `Camera` class:
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Ionic Native lets you know what the issue is and how you can resolve it.
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Awesome Cordova Plugins lets you know what the issue is and how you can resolve it.
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/danielsogl/awesome-cordova-plugins/blob/main/DEVELOPER.md) for more on how to contribute. :heart:
If you discover a security vulnerability in Awesome Cordova Plugins, please report it responsibly.
**Do not open a public GitHub issue for security vulnerabilities.**
Instead, please send an email to the maintainer or use [GitHub's private vulnerability reporting](https://github.com/danielsogl/awesome-cordova-plugins/security/advisories/new).
### What to include
- Description of the vulnerability
- Steps to reproduce
- Affected versions
- Potential impact
### Response
You can expect an initial response within 72 hours. We will work with you to understand the issue and coordinate a fix before any public disclosure.
## Scope
This policy covers the `@awesome-cordova-plugins/*` TypeScript wrapper packages. For vulnerabilities in the underlying Cordova plugins themselves, please report to the respective plugin maintainers.
## Supported Versions
Only the latest major version receives security updates.
Awesome Cordova Plugins provides TypeScript wrappers for Cordova and Ionic
native plugins with Promise and Observable support for Angular, React, and
Capacitor apps.
---
# Awesome Cordova Plugins
Awesome Cordova Plugins is a curated set of TypeScript wrappers for Cordova plugins that make adding native functionality to your [Ionic](https://ionicframework.com/) mobile app easy.
Every Cordova plugin callback is wrapped in a Promise or Observable, providing a common interface and seamless integration with Angular change detection.
## Features
- **TypeScript wrappers** for over 250 Cordova plugins
- **Promise and Observable** support for modern async patterns
- **Angular integration** with automatic change detection via `/ngx` imports
- **Framework-agnostic** — works with Angular, React, or plain TypeScript
- **Capacitor compatible** — use Cordova plugins in Capacitor projects
## Quick Start
Install the core library and any plugin wrapper you need:
```bash
npm install @awesome-cordova-plugins/core
npm install @awesome-cordova-plugins/camera
```
Then install the corresponding Cordova plugin:
```bash
ionic cordova plugin add cordova-plugin-camera
```
See the [Installation](installation.md) guide for detailed framework-specific setup instructions.
## Need Help?
- Browse the [Plugin List](plugins/) to find the wrapper you need
- Check the [FAQ](faq.md) for common issues and solutions
- [Report an issue](https://github.com/danielsogl/awesome-cordova-plugins/issues) or contribute on GitHub
Frequently asked questions about Awesome Cordova Plugins — troubleshooting
builds, resolving plugin conflicts, and recommended upgrade strategies.
---
# FAQ
## Cordova Management Tips
**1) Use the [Ionic CLI](https://ionicframework.com/docs/cli) to add/update/delete plugins.**
Instead of directly editing `config.xml` and `package.json`. Use `ionic` in front of Cordova commands for a better experience and additional functionality (`ionic cordova build ios` instead of `cordova build ios`).
**2) Upgrade plugins by removing, then re-adding them.**
```bash
ionic cordova plugin remove cordova-plugin-camera
ionic cordova plugin add cordova-plugin-camera
```
**3) Install explicit versions.**
To ensure that the same version of a plugin is always installed via `npm install`, specify the version number:
**4) Restore Cordova in an existing Ionic project**
Useful when adding new developers to a project. `ionic cordova prepare` restores platforms and plugins from `package.json` and `config.xml`. The version to be installed is taken from `package.json` or `config.xml`, if found in those files. In case of conflicts, `package.json` is given precedence over `config.xml`.
**5) Troubleshoot Cordova issues with Ionic CLI commands**
*`ionic doctor list`: Detects [common issues](https://ionicframework.com/docs/cli/commands/doctor-list) and suggests steps to fix them
*`ionic repair`: Remove, then [regenerate](https://ionicframework.com/docs/cli/commands/repair) all dependencies
## Understanding Version Numbers
For any given plugin, the Awesome Cordova Plugins (TypeScript code) and Cordova (native code) version numbers will not match. The Awesome Cordova Plugins version number is found in `package.json`:
```json
"@awesome-cordova-plugins/camera":"^6.0.0"
```
The Cordova plugin version number is found in both `package.json` and `config.xml`:
```json
"cordova-plugin-camera":"4.0.3"
```
```xml
<pluginname="cordova-plugin-camera"spec="4.0.3"/>
```
When checking for new native functionality or bug fixes, look for new versions on the Cordova plugin GitHub page itself (here's the [Camera one](https://github.com/apache/cordova-plugin-camera), for example).
To check for new Awesome Cordova Plugins releases (may include exposing methods recently added by the Cordova plugin, etc.), see the [releases page](https://github.com/danielsogl/awesome-cordova-plugins/releases).
## Troubleshooting Failed Builds
Research the build error(s) by checking out these resources:
* Google & [StackOverflow](https://stackoverflow.com/): Many issues are documented online
* Ask the [Ionic Community Forum](https://forum.ionicframework.com/)
* Check the plugin's GitHub issues page
### Cordova Plugin Conflicts
Plugins can conflict with each other when they share the same underlying native dependencies or when more than one plugin tries to access the same native code at once. For example, common libraries like the Google Play Services version (Google Maps is using GPS v24.2 but Firebase wants GPS v27.1). Keeping these plugins updated regularly can help with this.
Another tip is to ensure that your app uses only one plugin per specific feature/functionality (example: Push Notifications).
## Recommended Upgrade Strategy
The most stable apps are routinely updated, especially at the native layer. Keeping native plugins up to date ensures your project has the latest security fixes, new features, and improved performance.
Update your project's plugins one at a time, ideally in separate code branches. This reduces the surface area that issues can arise from — if you update everything in your project at once, it's sometimes hard to tell where the problem stems from.
### When should I update?
* When a new feature/bug fix is released: Run `npm outdated` to see a list of available updates.
* When new major versions are released: Official blogs, such as the [Cordova blog](https://cordova.apache.org/blog/) and [Ionic blog](https://ionicframework.com/blog/), will publish announcements and news.
* Evaluate the nature of the update: is it a shiny new feature or critical security fix?
* Timing: Where does it fit in against your team's project goals?
How to install Awesome Cordova Plugins in Angular, React, and TypeScript
projects using Cordova or Capacitor.
---
# Installation
[Apache Cordova](https://cordova.apache.org/) is an open source native runtime that allows developers to build native mobile apps with HTML, CSS, and JavaScript. Similar to [Capacitor](https://capacitorjs.com/), Ionic's own native runtime, Cordova allows developers to access native device features, such as camera, keyboard, and geolocation, using a system of plugins. A plugin is a small amount of add-on code that provides JavaScript interface to native components. They allow your app to use native device capabilities beyond what is available to pure web apps.
These plugins are submitted and maintained by the community. While community members are generally quick to find and fix issues, certain plugins may not function properly.
## Capacitor Support
In addition to Cordova, Awesome Cordova Plugins also works with [Capacitor](https://capacitorjs.com/), Ionic's official native runtime. Basic usage below. For complete details, [see the Capacitor documentation](https://capacitorjs.com/docs/cordova/using-cordova-plugins).
## Usage
All plugins have two components — the native code (Cordova) and the TypeScript code (Awesome Cordova Plugins). Cordova plugins are also wrapped in a `Promise` or `Observable` in order to provide a common plugin interface and modernized development approach.
Using the [Camera plugin](plugins/camera/README.md) as an example, first install it:
# Install Awesome Cordova Plugins core library (once per project)
npm install @awesome-cordova-plugins/core
```
Next, begin using the plugin, following the various framework usage options below. For FAQ, see [here](faq.md).
## Angular (Standalone)
Angular apps can use either Cordova or Capacitor to build native mobile apps. Register the plugin as a provider in your application bootstrap. For Angular, the import path should end with `/ngx`. Angular's change detection is automatically handled.
ES2015+ and TypeScript apps can use either Cordova or Capacitor to build native mobile apps. To use any plugin, import the class from the appropriate package and use its static methods:
If you can't find a plugin wrapper, [open an issue](https://github.com/danielsogl/awesome-cordova-plugins/issues) or [submit a PR](https://github.com/danielsogl/awesome-cordova-plugins/blob/main/DEVELOPER.md) to add it.
ABBYY Real-Time Recognition plugin for Cordova and Ionic. This plugin allows to use the Text Capture and Data Capture features of ABBYY Real-Time Recognition…
---
# ABBYY Real-Time Recognition
This plugin allows to use the Text Capture and Data Capture features of
ABBYY Real-Time Recognition SDK (RTR SDK) in apps.
Action Sheet plugin for Cordova and Ionic. The ActionSheet plugin shows a native list of options the user can choose from. Requires Cordova plugin:…
---
# Action Sheet
The ActionSheet plugin shows a native list of options the user can choose from.
Requires Cordova plugin: `cordova-plugin-actionsheet`. For more info, please see the [ActionSheet plugin docs](https://github.com/EddyVerbruggen/cordova-plugin-actionsheet).
Adjust plugin for Cordova and Ionic. This is the Ionic Cordova SDK of Adjust™. You can read more about Adjust™ at adjust.com. Requires Cordova plugin:…
---
# Adjust
This is the Ionic Cordova SDK of Adjust™. You can read more about Adjust™ at adjust.com.
Requires Cordova plugin: `com.adjust.sdk`. For more info, please see the [Adjust Cordova SDK](https://github.com/adjust/cordova_sdk)
AdMob Plus plugin for Cordova and Ionic. AdMob Plus is the successor of cordova-plugin-admob-free, which provides a cleaner API and build with modern tools.
---
# AdMob Plus
AdMob Plus is the successor of cordova-plugin-admob-free, which provides a cleaner API and build with modern tools.
AdMob Pro plugin for Cordova and Ionic. Plugin for Google Ads, including AdMob / DFP (DoubleClick for publisher) and mediations to other Ad networks.…
---
# AdMob Pro
Plugin for Google Ads, including AdMob / DFP (DoubleClick for publisher) and mediations to other Ad networks.
IMPORTANT NOTICE: this plugin takes a percentage out of your earnings if you profit more than $1,000. Read more about this on the plugin's repo. For a completely free alternative, see [AdMobPro Free](../admob-free).
AdMob plugin for Cordova and Ionic. Most complete Admob plugin with support for [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads.…
---
# AdMob
Most complete Admob plugin with support for [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads.
Monetize your apps and games with AdMob ads, using latest Google AdMob SDK. With this plugin you can show AdMob ads easily!
AllInOneSDK plugin for Cordova and Ionic. Paytm All-in-One SDK plugin for Cordova/Ionic Applications Paytm All-in-One SDK provides a swift, secure and…
---
# AllInOneSDK
Paytm All-in-One SDK plugin for Cordova/Ionic Applications
Paytm All-in-One SDK provides a swift, secure and seamless payment experience to your users by invoking the Paytm app (if installed on your user’s smartphone) to complete payment for your order.
Paytm All-in-One SDK enables payment acceptance via Paytm wallet, Paytm Payments Bank, saved Debit/Credit cards, Net Banking, BHIM UPI and EMI as available in your customer’s Paytm account. If Paytm app is not installed on a customer's device, the transaction will be processed via web view within the All-in-One SDK.
For more information about Paytm All-in-One SDK, please visit https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/
Android Full Screen plugin for Cordova and Ionic. This plugin enables developers to offer users a true full screen experience in their Cordova and PhoneGap…
---
# Android Full Screen
This plugin enables developers to offer users a true full screen experience in their Cordova and PhoneGap apps for Android.
Using Android 4.0+, you can use true full screen in "lean mode", the way you see in apps like YouTube, expanding the app right to the edges of the screen, hiding the status and navigation bars until the user next interacts. This is ideally suited to video or cut-scene content.
In Android 4.4+, however, you can now enter true full screen, fully interactive immersive mode. In this mode, your app will remain in true full screen until you choose otherwise; users can swipe down from the top of the screen to temporarily display the system UI.
Android Notch plugin for Cordova and Ionic. This plugin enables developers to get the cutout and android devices inset sizes It is based on the cordova plugin…
---
# Android Notch
This plugin enables developers to get the cutout and android devices inset sizes
It is based on the cordova plugin developed by @tobspr: https://github.com/tobspr/cordova-plugin-android-notch
This plugin works on all android versions, but we can only detect notches starting from Android 9.
Android Permissions plugin for Cordova and Ionic. This plugin is designed to support Android new permissions checking mechanism. You can find all permissions…
---
# Android Permissions
This plugin is designed to support Android new permissions checking mechanism.
You can find all permissions here: https://developer.android.com/reference/android/Manifest.permission.html
Anyline plugin for Cordova and Ionic. Anyline provides an easy-to-use SDK for applications to enable Optical Character Recognition (OCR) on mobile devices.
---
# Anyline
Anyline provides an easy-to-use SDK for applications to enable Optical Character Recognition (OCR) on mobile devices.
App Availability plugin for Cordova and Ionic. This plugin allows you to check if an app is installed on the user's device. It requires an URI Scheme (e.g.…
---
# App Availability
This plugin allows you to check if an app is installed on the user's device. It requires an URI Scheme (e.g. twitter://) on iOS or a Package Name (e.g com.twitter.android) on Android.
Requires Cordova plugin: cordova-plugin-appavailability. For more info, please see the [AppAvailability plugin docs](https://github.com/ohh2ahh/AppAvailability).
App Center Analytics plugin for Cordova and Ionic. App Center Analytics helps you understand user behavior and customer engagement to improve your app. The…
---
# App Center Analytics
App Center Analytics helps you understand user behavior and customer engagement to improve your app.
The SDK automatically captures session count and device properties like model, OS version, etc.
You can define your own custom events to measure things that matter to you.
All the information captured is available in the App Center portal for you to analyze the data.
For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/analytics/cordova
App Center Crashes plugin for Cordova and Ionic. App Center Analytics helps you understand user behavior and customer engagement to improve your app. The SDK…
---
# App Center Crashes
App Center Analytics helps you understand user behavior and customer engagement to improve your app.
The SDK automatically captures session count and device properties like model, OS version, etc.
You can define your own custom events to measure things that matter to you.
All the information captured is available in the App Center portal for you to analyze the data.
For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/crashes/cordova
App Rate plugin for Cordova and Ionic. The AppRate plugin makes it easy to prompt the user to rate your app, either now, later, or never. Requires Cordova…
---
# App Rate
The AppRate plugin makes it easy to prompt the user to rate your app, either now, later, or never.
Requires Cordova plugin: cordova-plugin-apprate. For more info, please see the [AppRate plugin docs](https://github.com/pushandplay/cordova-plugin-apprate).
App Version plugin for Cordova and Ionic. Reads the version of your app from the target build settings. Requires Cordova plugin:…
---
# App Version
Reads the version of your app from the target build settings.
Requires Cordova plugin: `cordova-plugin-app-version`. For more info, please see the [Cordova App Version docs](https://github.com/whiteoctober/cordova-plugin-app-version).
HTTP plugin for Cordova and Ionic. Cordova / Phonegap plugin for communicating with HTTP servers. Supports iOS and Android. Advantages over Javascript…
---
# HTTP
Cordova / Phonegap plugin for communicating with HTTP servers. Supports iOS and Android.
Advantages over Javascript requests:
- SSL / TLS Pinning
- CORS restrictions do not apply
- Handling of HTTP code 401 - read more at [Issue CB-2415](https://issues.apache.org/jira/browse/CB-2415)
Note: This plugin extends the pre-existing [cordova-advanced-http-plugin](https://github.com/silkimen/cordova-plugin-advanced-http),
we have only added approov functionality on top of it. All credit goes to the actual plugin developer.
Audio Management plugin for Cordova and Ionic. A Cordova plugin to manage volume of audio streams for: ring, music, notification and system. Possible ringer…
---
# Audio Management
A Cordova plugin to manage volume of audio streams for: ring, music, notification and system. Possible
ringer values for those streams are: silent, vibrate and normal.
iOS Background Fetch is basically an API which wakes up your app about every 15 minutes (during the user's prime-time hours) and provides your app exactly 30s of background running-time. This plugin will execute your provided callbackFn whenever a background-fetch event occurs. There is no way to increase the rate which a fetch-event occurs and this plugin sets the rate to the most frequent possible value of UIApplicationBackgroundFetchIntervalMinimum -- iOS determines the rate automatically based upon device usage and time-of-day (ie: fetch-rate is about ~15min during prime-time hours; less frequently when the user is presumed to be sleeping, at 3am for example).
For more detail, please see https://github.com/transistorsoft/cordova-plugin-background-fetch
Badge plugin for Cordova and Ionic. The essential purpose of badge numbers is to enable an application to inform its users that it has something for them —…
---
# Badge
The essential purpose of badge numbers is to enable an application to inform its users that it has something for them — for example, unread messages — when the application isn’t running in the foreground.
Requires Cordova plugin: cordova-plugin-badge. For more info, please see the [Badge plugin docs](https://github.com/katzer/cordova-plugin-badge).
Android Note: Badges have historically only been a feature implemented by third party launchers and not visible unless one of those launchers was being used (E.G. Samsung or Nova Launcher) and if enabled by the user. As of Android 8 (Oreo), [notification badges](https://developer.android.com/training/notify-user/badges) were introduced officially to reflect unread notifications. This plugin is unlikely to work as expected on devices running Android 8 or newer. Please see the [local notifications plugin docs](https://github.com/katzer/cordova-plugin-local-notifications) for more information on badge use with notifications.
Barcode Scanner plugin for Cordova and Ionic. The Barcode Scanner Plugin opens a camera view and automatically scans a barcode, returning the data back to…
---
# Barcode Scanner
The Barcode Scanner Plugin opens a camera view and automatically scans a barcode, returning the data back to you.
Requires Cordova plugin: `phonegap-plugin-barcodescanner`. For more info, please see the [BarcodeScanner plugin docs](https://github.com/phonegap/phonegap-plugin-barcodescanner).
Barkoder plugin for Cordova and Ionic. The barKoder Barcode Scanner SDK cordova plugin grants an easy to use solution with a great and completely customizable…
---
# Barkoder
The barKoder Barcode Scanner SDK cordova plugin grants an easy to use solution with a great and completely customizable interface that can be instantly integrated in both iOS and Android apps.
Battery Status plugin for Cordova and Ionic. Requires Cordova plugin: cordova-plugin-batterystatus. For more info, please see the [BatteryStatus plugin…
---
# Battery Status
Requires Cordova plugin: cordova-plugin-batterystatus. For more info, please see the [BatteryStatus plugin docs](https://github.com/apache/cordova-plugin-battery-status).
BiometricWrapper plugin for Cordova and Ionic. This plugin capture biometric(Iris and Fingerprint) and validate the user. May be used in Banking domain
---
# BiometricWrapper
This plugin capture biometric(Iris and Fingerprint) and validate the user.
BLE plugin for Cordova and Ionic. This plugin enables communication between a phone and Bluetooth Low Energy (BLE) peripherals. The plugin provides a simple…
---
# BLE
This plugin enables communication between a phone and Bluetooth Low Energy (BLE) peripherals.
The plugin provides a simple JavaScript API for iOS and Android.
- Scan for peripherals
- Connect to a peripheral
- Read the value of a characteristic
- Write new value to a characteristic
- Get notified when characteristic's value changes
Advertising information is returned when scanning for peripherals. Service, characteristic, and property info is returned when connecting to a peripheral. All access is via service and characteristic UUIDs. The plugin manages handles internally.
Simultaneous connections to multiple peripherals are supported.
BlinkId plugin for Cordova and Ionic. Microblink SDK wrapper for barcode and document scanning. See the blinkid-phonegap repository for available recognizers…
---
# BlinkId
Microblink SDK wrapper for barcode and document scanning. See the
blinkid-phonegap repository for available recognizers and other settings
## Installation
```bash
ionic cordova plugin add blinkid-cordova --variable CAMERA_USAGE_DESCRIPTION="Enable your camera so that you can scan your ID to validate your account"
Bluetooth Classic Serial Port plugin for Cordova and Ionic. This plugin is written using the iOS Accessory Framework (MFi) to support Classic Bluetooth on iOS.
---
# Bluetooth Classic Serial Port
This plugin is written using the iOS Accessory Framework (MFi) to support Classic Bluetooth on iOS.
BluetoothLE plugin for Cordova and Ionic. This plugin has the most complete implementation for interacting with Bluetooth LE devices on Android, iOS and…
---
# BluetoothLE
This plugin has the most complete implementation for interacting with Bluetooth LE devices on Android, iOS and partially Windows.
It's a wrap around [randdusing/cordova-plugin-bluetoothle](https://github.com/randdusing/cordova-plugin-bluetoothle/blob/master/readme.md) cordova plugin for Ionic.
It supports peripheral **and** central modes and covers most of the API methods available on Android and iOS.
Bluetooth Serial plugin for Cordova and Ionic. This plugin enables serial communication over Bluetooth. It was written for communicating between Android or…
---
# Bluetooth Serial
This plugin enables serial communication over Bluetooth. It was written for communicating between Android or iOS and an Arduino (not Android to Android or iOS to iOS).
Brightness plugin for Cordova and Ionic. The Brightness plugin let you control the display brightness of your device. Requires Cordova plugin:…
---
# Brightness
The Brightness plugin let you control the display brightness of your device.
Requires Cordova plugin: `cordova-plugin-brightness`. For more info, please see the [Brightness plugin docs](https://github.com/mgcrea/cordova-plugin-brightness).
Browser Tab plugin for Cordova and Ionic. This plugin provides an interface to in-app browser tabs that exist on some mobile platforms, specifically [Custom…
---
# Browser Tab
This plugin provides an interface to in-app browser tabs that exist on some mobile platforms, specifically [Custom Tabs](http://developer.android.com/tools/support-library/features.html#custom-tabs) on Android (including the [Chrome Custom Tabs](https://developer.chrome.com/multidevice/android/customtabs) implementation), and [SFSafariViewController](https://developer.apple.com/library/ios/documentation/SafariServices/Reference/SFSafariViewController_Ref/) on iOS.
Calendar plugin for Cordova and Ionic. This plugin allows you to add events to the Calendar of the mobile device. Requires Cordova plugin:…
---
# Calendar
This plugin allows you to add events to the Calendar of the mobile device.
Requires Cordova plugin: `cordova-plugin-calendar`. For more info, please see the [Calendar plugin docs](https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin).
Call Directory plugin for Cordova and Ionic. This plugin can add phone numbers to an Callkit call directory extension. Call `reloadExtension` after using…
---
# Call Directory
This plugin can add phone numbers to an Callkit call directory extension. Call `reloadExtension` after using `addIdentification` and `removeIdentification`
to process the changes in the call directory extension.
Call Number plugin for Cordova and Ionic. Call a number directly from your Cordova/Ionic application. NOTE**: The iOS Simulator (and maybe Android Simulators)…
---
# Call Number
Call a number directly from your Cordova/Ionic application.
NOTE**: The iOS Simulator (and maybe Android Simulators) do not provide access to the phone subsystem.
Camera Preview plugin for Cordova and Ionic. Showing camera preview in HTML Requires Cordova plugin:…
---
# Camera Preview
Showing camera preview in HTML
Requires Cordova plugin: `https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview.git`. For more info, please see the [Cordova Camera Preview docs](https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview).
Camera plugin for Cordova and Ionic. Take a photo or capture video. Requires the Cordova plugin: `cordova-plugin-camera`. For more info, please see the…
---
# Camera
Take a photo or capture video.
Requires the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).
[Warning] Since IOS 10 the camera requires permissions to be placed in your config.xml add
Chooser plugin for Cordova and Ionic. File chooser plugin for Cordova. The following must be added to config.xml to prevent crashing when selecting large…
---
# Chooser
File chooser plugin for Cordova.
The following must be added to config.xml to prevent crashing when selecting large files on Android:
Chooser plugin for Cordova and Ionic. File chooser plugin for Cordova. The following must be added to config.xml to prevent crashing when selecting large…
---
# Chooser
File chooser plugin for Cordova.
The following must be added to config.xml to prevent crashing when selecting large files on Android:
Cloud Settings plugin for Cordova and Ionic. Stores app settings in cloud storage so if the user re-installs the app or installs it on a different device, the…
---
# Cloud Settings
Stores app settings in cloud storage so if the user re-installs the app or installs it on a different device, the settings will be restored and available in the new installation.
Awesome Cordova Plugins is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](https://ionicframework.com/) mobile app easy.
Awesome Cordova Plugins wraps plugin callbacks in a Promise or Observable, providing a common interface for all plugins and making it easy to use plugins with Angular change detection.
To learn more about the reasons why Ionic Native was renamed to Awesome Cordova Plugins, read the official [Ionic blog](https://ionicframework.com/blog/a-new-chapter-for-ionic-native/) post by Max Lyncht.
## Capacitor Support
In addition to Cordova, Awesome Cordova Plugins also works with [Capacitor](https://capacitorjs.com), Ionic's official native runtime. Basic usage below. For complete details, [see the Capacitor documentation](https://capacitorjs.com/docs/v2/cordova/using-cordova-plugins).
## Installation
Run following command to install Awesome Cordova Plugins in your project.
```bash
npm install @awesome-cordova-plugins/core --save
```
You also need to install the Awesome Cordova Plugins package for each plugin you want to add. Please see the [Awesome Cordova Plugins documentation](https://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
## Documentation
For the full Awesome Cordova Plugins documentation, please visit [https://ionicframework.com/docs/native/](https://ionicframework.com/docs/native/).
### Basic Usage
#### Ionic/Angular apps (Standalone)
Angular v14+ uses standalone components by default. To use a plugin, register it as a provider in your application bootstrap and inject it using Angular's `inject()` function.
Make sure to import the injectable class from the `/ngx` directory as shown in the following examples:
.then((data)=>console.log('Took a picture!',data))
.catch((e)=>console.log('Error occurred while taking a picture',e));
});
```
### Mocking and Browser Development (Ionic/Angular apps only)
Awesome Cordova Plugins makes it possible to mock plugins and develop nearly the entirety of your app in the browser or in `ionic serve`.
To do this, you need to provide a mock implementation of the plugins you wish to use. Here's an example of mocking the `Camera` plugin to return a stock image while in development:
First create a mock class that extends the `Camera` class:
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Awesome Cordova Plugins lets you know what the issue is and how you can resolve it.
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/danielsogl/awesome-cordova-plugins/blob/main/DEVELOPER.md) for more on how to contribute. :heart:
Deeplinks plugin for Cordova and Ionic. This plugin handles deeplinks on iOS and Android for both custom URL scheme links and Universal App Links. Please…
---
# Deeplinks
This plugin handles deeplinks on iOS and Android for both custom URL scheme links
and Universal App Links.
Please read the [ionic plugin deeplinks docs](https://github.com/ionic-team/ionic-plugin-deeplinks) for iOS and Android integration.
You must add `universal-links` to your `config.xml` and set up Apple App Site Association (AASA) for iOS and Asset Links for Android.
Device Motion plugin for Cordova and Ionic. Requires Cordova plugin: `cordova-plugin-device-motion`. For more info, please see the [Device Motion…
---
# Device Motion
Requires Cordova plugin: `cordova-plugin-device-motion`. For more info, please see the [Device Motion docs](https://github.com/apache/cordova-plugin-device-motion).
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.