* 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.
#### 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
- **methodName**: an optional name of the cordova plugins method name (if different from wrappers method name)
- **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`:
@@ -10,7 +10,7 @@ To learn more about the reasons why Ionic Native was renamed to Awesome Cordova
## Capacitor Support
In addition to Cordova, Awesome Cordova Plugins 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
@@ -28,58 +28,53 @@ For the full Awesome Cordova Plugins documentation, please visit [https://ionicf
### 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);
}
);
});
```
### 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 import the `Camera` class in your `src/app/app.module.ts` file:
First create a mock class that extends the `Camera` class:
@@ -256,13 +182,13 @@ Spent way too long diagnosing an issue only to realize a plugin wasn't firing or
## Plugin Missing?
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/danielsogl/awesome-cordova-plugins/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
**1\) Use the** [**Ionic CLI**](https://ionicframework.com/docs/cli) **to add/update/delete plugins.**
**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`\).
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.**
**2) Upgrade plugins by removing, then re-adding them.**
**4\) Restore Cordova in an existing Ionic project**
**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**
**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](https://ionicframework.com/docs/native/community#understanding-version-numbers) <a id="understanding-version-numbers"></a>
##Understanding Version Numbers
For any given Ionic Native plugin, the Ionic Native \(TypeScript code\) and Cordova \(native code\) version numbers will not match. The Ionic Native version number is found in `package.json`:
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`:
```text
"@ionic-native/camera": "^5.3.0",
```json
"@awesome-cordova-plugins/camera":"^6.0.0"
```
CopyCopied
The Cordova plugin version number is found in both `package.json` and `config.xml`:
```text
"cordova-plugin-camera": "4.0.3",
```json
"cordova-plugin-camera":"4.0.3"
```
CopyCopied
```text
```xml
<pluginname="cordova-plugin-camera"spec="4.0.3"/>
```
CopyCopied
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).
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).
To check for new Ionic Native releases \(may include exposing methods recently added by the Cordova plugin, etc.\), see [here](https://github.com/ionic-team/ionic-native/releases).
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.
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\).
Another tip is to ensure that your app uses only one plugin per specific feature/functionality (example: Push Notifications).
The most Ionic 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.
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.
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?](https://ionicframework.com/docs/native/community#when-should-i-update-) <a id="when-should-i-update-"></a>
###When should I update?
* When a new feature/bug 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.
* 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.
[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.
For developers using Ionic with Cordova, our team has developed a collection of TypeScript wrappers for open source Cordova plugins that make it easy to add native functionality to any Ionic app. See [Ionic Native](https://github.com/ionic-team/ionic-native).
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.
These plugins are submitted and maintained by the Ionic community. While community members are generally quick to find and fix issues, certain plugins may not function properly.
## Capacitor Support
For professional developers and teams that require dedicated native plugin support & SLAs, ongoing maintenance, and security patches, please explore our [premium options](https://ionicframework.com/native), including plugin support and pre-built solutions for common native use cases.
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).
> These docs are for apps built with Ionic Framework 4.0.0 and greater. For older Ionic v3 projects, please [see here](https://ionicframework.com/docs/v3/native).
All plugins have two components — the nativecode (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.
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).
Using the [Camera plugin](plugins/camera/README.md) as an example, first install it:
All plugins have two components - the native code \(Cordova\) and the TypeScript code \(Ionic Native\). Cordova plugins are also wrapped in a `Promise` or `Observable` in order to provide a common plugin interface and modernized development approach.
Angular apps can use either Cordova or Capacitor to build native mobile apps. Import the plugin in a `@NgModule` and add it to the list of Providers. For Angular, the import path should end with `/ngx`. Angular's change detection is automatically handled.
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.
```text
// app.module.ts
import { Camera } from '@ionic-native/camera/ngx';
React apps must use Capacitor to build native mobile apps. However, Awesome Cordova Plugins (and therefore, Cordova plugins) can still be used.
React apps must use Capacitor to build native mobile apps. However, Ionic Native \(and therefore, Cordova plugins\) can still be used.// Install Core library \(once per project\)npm install @ionic-native/core
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:
Vanilla JavaScript apps, targeting ES2015+ and/or TypeScript, 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…
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).
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:…
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.
---
```
$ ionic cordova plugin add cordova-admob-plus
$ npm install @awesome-cordova-plugins/admob-plus
# AdMob Plus
AdMob Plus is the successor of cordova-plugin-admob-free, which provides a cleaner API and build with modern tools.
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](https://github.com/danielsogl/awesome-cordova-plugins/tree/8516b357edaca8fc543713ba99c42cfde0225f86/docs/plugins/admob-free/README.md).
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).
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!
AdMob plugin for Cordova and Ionic. Most complete Admob plugin with support for [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads.…
This cordova ionic plugin allows you to perform AES 256 encryption and decryption on the plain text. It's a cross-platform plugin which supports both Android and iOS. The encryption and decryption are performed on the device native layer so that the performance is much faster.
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/](https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/)
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/
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 Full Screen plugin for Cordova and Ionic. This plugin enables developers to offer users a true full screen experience in their Cordova and PhoneGap…
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.
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](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 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…
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](https://developer.android.com/reference/android/Manifest.permission.html)
Android Permissions plugin for Cordova and Ionic. This plugin is designed to support Android new permissions checking mechanism. You can find all permissions…
Anyline plugin for Cordova and Ionic. Anyline provides an easy-to-use SDK for applications to enable Optical Character Recognition (OCR) on mobile devices.
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 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.…
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 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](https://docs.microsoft.com/en-us/appcenter/sdk/analytics/cordova)
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 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](https://docs.microsoft.com/en-us/appcenter/sdk/crashes/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…
Generates a low memory warning. For more info, please see: [https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory](https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory)
For more info, please see [https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova](https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova)
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 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…
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).
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).
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).
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.
HTTP plugin for Cordova and Ionic. Cordova / Phonegap plugin for communicating with HTTP servers. Supports iOS and Android. Advantages over Javascript…
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 Implementation. See: [https://developer.apple.com/reference/uikit/uiapplication\#1657399](https://developer.apple.com/reference/uikit/uiapplication#1657399) 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](https://github.com/transistorsoft/cordova-plugin-background-fetch)
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
This plugin provides foreground and background geolocation with battery-saving "circular region monitoring" and "stop detection". For more detail, please see [https://github.com/mauron85/cordova-plugin-background-geolocation](https://github.com/mauron85/cordova-plugin-background-geolocation)
Cordova plugin to prevent the app from going to sleep while in background. Requires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, visit: [https://github.com/katzer/cordova-plugin-background-mode](https://github.com/katzer/cordova-plugin-background-mode)
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.
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 —…
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.
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).
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…
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).
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.