# ionic-native

> Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support

Latest version **2.9.0** (published 2017-03-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install ionic-native
pnpm add ionic-native
yarn add ionic-native
bun add ionic-native
```

## Health

**Score 45/100 (D)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 2.9.0 |
| Published | 2017-03-18 |
| First published | 2015-11-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2452 |
| Maintainers | ihadeed, ionicjs, maxlynch, tlancina |

## Links

- npm: https://www.npmjs.com/package/ionic-native
- Repository: https://github.com/driftyco/ionic-native
- Issues: https://github.com/driftyco/ionic-native/issues
- npm.io page: https://npm.io/package/ionic-native

## Dependencies (1)

- [rxjs](https://npm.io/package/rxjs.md) 5.0.1

## Recent versions

- 2.9.0 (latest) — 2017-03-18
- 2.2.8 (test) — 2016-12-01
- 2.8.1 — 2017-03-10
- 2.8.0 — 2017-03-04
- 2.7.0 — 2017-03-02
- 2.6.0 — 2017-03-02
- 2.5.1 — 2017-02-07
- 2.5.0 — 2017-02-07
- 2.4.1 — 2017-01-24
- 2.4.0 — 2017-01-24
- 2.3.2 — 2017-01-24
- 2.3.1 — 2017-01-22
- 2.3.0 — 2017-01-20
- 2.2.17 — 2017-01-20
- 2.2.16 — 2017-01-11
- … 68 more at https://npm.io/package/ionic-native/versions

## README

[![Circle CI](https://circleci.com/gh/driftyco/ionic-native.svg?style=shield)](https://circleci.com/gh/driftyco/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![npm](https://img.shields.io/npm/l/express.svg)](https://www.npmjs.com/package/ionic-native)

[![NPM](https://nodei.co/npm/ionic-native.png?stars&downloads)](https://nodei.co/npm/ionic-native/)
[![NPM](https://nodei.co/npm-dl/ionic-native.png?months=6&height=2)](https://nodei.co/npm/ionic-native/)

# Ionic Native

Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](http://ionicframework.com/), Cordova, or Web View mobile app easy.

### Documentation

For the full Ionic Native documentation, please visit [http://ionicframework.com/docs/v2/native/](http://ionicframework.com/docs/v2/native/).

### Promises and Observables

Ionic Native wraps plugin callbacks in a Promise or [Observable](https://gist.github.com/staltz/868e7e9bc2a7b8c1f754), providing a common interface for all plugins and ensuring that native events trigger change detection in Angular 2.

```
import { Geolocation } from 'ionic-native';

Geolocation.getCurrentPosition().then(pos => {
  console.log('lat: ' + pos.coords.latitude + ', lon: ' + pos.coords.longitude);
});

let watch = Geolocation.watchPosition().subscribe(pos => {
  console.log('lat: ' + pos.coords.latitude + ', lon: ' + pos.coords.longitude);
});

// to stop watching
watch.unsubscribe();
```

### Angular 1

Ionic Native works as a stand-in for [ngCordova](http://ngcordova.com/). In many cases, the usage is identical, but we import `ionic.native` instead of `ngCordova` as our module.

As a rule of thumb: take the ES6 class name of the plugin and add `$cordova` to get the service name. For example, `Geolocation` would be `$cordovaGeolocation`, and `Camera` will be `$cordovaCamera`:

```javascript
angular.module('myApp', ['ionic', 'ionic.native'])

.controller('MyCtrl', function($scope, $cordovaCamera) {
  $scope.takePicture = function() {
    $cordovaCamera.getPicture(opts).then(function(p) {
    }, function(err) {
    });
  };
});
```

For services that return observables, the Angular 1 digest cycle must be done manually (currently):

```javascript
angular.module('myApp', ['ionic', 'ionic.native'])

.controller('MyCtrl', function($scope, $cordovaGeolocation) {
  $scope.takePicture = function() {
    $cordovaGeolocation.watchPosition(opts).subscribe(function(p) {
      $scope.$apply(function() {
        $scope.position = p.coords;
      });
    }, function(err) {
    });
  };
});
```

### Runtime Diagnostics

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.

![img](http://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)

## Installation

Run following commmand to install ionic-native in your project.
```
npm install ionic-native --save
```


## Plugin Missing?
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:


# Credits

Ibby Hadeed - [@ihadeed](http://github.com/ihadeed)

Tim Lancina - [@timlancina](http://twitter.com/timlancina)

Max Lynch - [@maxlynch](http://twitter.com/maxlynch)

Rob Wormald - [@robwormald](https://twitter.com/robwormald)

---
_Source: https://npm.io/package/ionic-native · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
