Go to file
Kevin Boosten 4e87ac72ea fix(): add the reject function at the expected errorIndex position in the args array (#436)
We don't want that the reject cb takes the position of an optional
argument that has not been defined
For example the Dialogs.alert method takes an optional 'buttonLabel'
string. In case we do not set this value, and thus want to use the
default value, the 'reject'
callback get spliced into this position due the fact that the splice
start index is bigger than the array length.
Dialogs.alert("title", "message", "My button text") --> args =
["title",  resolve, "message", "My button text", reject]
Dialogs.alert("title", "message") -->  args = ["title", resolve,
"message", reject] --> reject is on the position of the buttontitle!

The cordova-plugin-dialogs alert function receives the wrong arguments
—> alert: function(message, completeCallback, title, buttonLabel)
The buttonLabel will receive the "reject" callback instead of a
undefined value.
2016-08-17 07:34:11 -04:00
scripts Removed unnecessary ionic.native.min.js 2016-08-02 23:20:00 -04:00
src fix(): add the reject function at the expected errorIndex position in the args array (#436) 2016-08-17 07:34:11 -04:00
typings/es6-shim chore(): update rxjs 2016-02-05 15:05:46 -06:00
.editorconfig chore(): add .editorconfig (#238) 2016-06-22 18:25:06 -04:00
.gitignore docs(DEVELOPER.MD): Adds steps for adding new plugins to index.ts (#444) 2016-08-17 03:11:52 -04:00
CHANGELOG.md chore(): update changelog 2016-08-15 13:39:43 -04:00
circle.yml chore(): fix circleci test commands 2016-06-26 13:02:20 -04:00
CONTRIBUTING.md Update CONTRIBUTING.md 2016-07-14 09:45:55 -05:00
DEVELOPER.md docs(DEVELOPER.MD): Adds steps for adding new plugins to index.ts (#444) 2016-08-17 03:11:52 -04:00
gulpfile.js chore(): add plugin template and generator (#429) 2016-08-15 04:46:54 -04:00
package.json 1.3.16 2016-08-15 13:37:56 -04:00
README.md note about ng1 observables 2016-08-01 14:25:55 -05:00
TEMPLATE chore(): add plugin template and generator (#429) 2016-08-15 04:46:54 -04:00
tsconfig.json fix(build): disable emitDecoratorMetadata option in tsconfig 2016-06-27 08:41:10 -04:00
tslint.json chore(tslint-rules): Use ionic-tslint-rules (#276) 2016-07-18 00:09:38 -04:00

Circle CI Commitizen friendly npm

NPM

Ionic Native

Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your Ionic, Cordova, or Web View mobile app easy.

Documentation

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

Promises and Observables

Ionic Native wraps plugin callbacks in a Promise or Observable, 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. 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:

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):

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

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 for more on how to contribute. ❤️

Credits

Ibrahim Hadeed - @ihadeed

Tim Lancina - @timlancina

Max Lynch - @maxlynch

Rob Wormald - @robwormald