Merge branch 'master' into improved-plugin-docs

This commit is contained in:
Ibby Hadeed 2017-05-17 06:48:46 -04:00 committed by GitHub
commit f223481307
147 changed files with 3929 additions and 1223 deletions

28
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,28 @@
**I'm submitting a ...** (check one with "x")
[ ] bug report
[ ] feature request
[ ] 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. -->
**package.json info:**
```json
insert the content here
```

View File

@ -1,3 +1,86 @@
<a name="3.8.1"></a>
## [3.8.1](https://github.com/driftyco/ionic-native/compare/v3.8.0...v3.8.1) (2017-05-16)
### Bug Fixes
* **document-viewer:** fix params and docs for canViewDocument (#1568) ([b35417a](https://github.com/driftyco/ionic-native/commit/b35417a)), closes [#1568](https://github.com/driftyco/ionic-native/issues/1568)
* **file:** add toInternalURL (#1561) ([7c79712](https://github.com/driftyco/ionic-native/commit/7c79712)), closes [#1560](https://github.com/driftyco/ionic-native/issues/1560)
* **file:** fix repo link (#1566) ([adf9c5a](https://github.com/driftyco/ionic-native/commit/adf9c5a)), closes [#1566](https://github.com/driftyco/ionic-native/issues/1566)
* **file:** various fixes ([d0dec7a](https://github.com/driftyco/ionic-native/commit/d0dec7a)), closes [#1564](https://github.com/driftyco/ionic-native/issues/1564)
* **sqlite:** fix implementation and improve typings ([fec19b7](https://github.com/driftyco/ionic-native/commit/fec19b7))
### Features
* **mix-panel:** add timeEvent (#1536) ([965a90c](https://github.com/driftyco/ionic-native/commit/965a90c))
<a name="3.8.0"></a>
# [3.8.0](https://github.com/driftyco/ionic-native/compare/v3.7.0...v3.8.0) (2017-05-14)
### Bug Fixes
* **app-minimize:** fix pluginRef ([10d61c2](https://github.com/driftyco/ionic-native/commit/10d61c2))
* **diagnostic:** fix Cordova decorator in camera API (#1527) ([45108c4](https://github.com/driftyco/ionic-native/commit/45108c4)), closes [#1527](https://github.com/driftyco/ionic-native/issues/1527)
* **fcm:** fix method name (#1531) ([ad514bb](https://github.com/driftyco/ionic-native/commit/ad514bb)), closes [#1531](https://github.com/driftyco/ionic-native/issues/1531)
* **file:** fix file reader (#1537) ([efae1be](https://github.com/driftyco/ionic-native/commit/efae1be)), closes [#1537](https://github.com/driftyco/ionic-native/issues/1537) [#1530](https://github.com/driftyco/ionic-native/issues/1530)
* **file:** various fixes (#1553) ([f98f90a](https://github.com/driftyco/ionic-native/commit/f98f90a)), closes [#1553](https://github.com/driftyco/ionic-native/issues/1553)
### Features
* **video-capture-plus:** add Video Capture Plus plugin (#1538) ([385da01](https://github.com/driftyco/ionic-native/commit/385da01)), closes [#709](https://github.com/driftyco/ionic-native/issues/709)
<a name="3.7.0"></a>
# [3.7.0](https://github.com/driftyco/ionic-native/compare/v3.6.1...v3.7.0) (2017-05-09)
### Bug Fixes
* **app-preferences:** value can be any type (#1498) ([c7111a3](https://github.com/driftyco/ionic-native/commit/c7111a3)), closes [#1334](https://github.com/driftyco/ionic-native/issues/1334)
* **background-mode:** add missing method (#1486) ([e6a647b](https://github.com/driftyco/ionic-native/commit/e6a647b)), closes [#1393](https://github.com/driftyco/ionic-native/issues/1393)
* **build:** fix build errors (#1472) ([8a445e9](https://github.com/driftyco/ionic-native/commit/8a445e9)), closes [#1472](https://github.com/driftyco/ionic-native/issues/1472)
* **document-viewer:** fix params ([1379f63](https://github.com/driftyco/ionic-native/commit/1379f63))
* **flurry-analytics:** fix plugin wrapper ([14959c1](https://github.com/driftyco/ionic-native/commit/14959c1))
* **flurry-analytics:** fix pluginRef (#1485) ([ce72be7](https://github.com/driftyco/ionic-native/commit/ce72be7)), closes [#1485](https://github.com/driftyco/ionic-native/issues/1485) [#1399](https://github.com/driftyco/ionic-native/issues/1399)
* **globalization:** getDatePattern return types (#1451) ([6e2fdf9](https://github.com/driftyco/ionic-native/commit/6e2fdf9))
* **google-maps:** add args to panBy (#1507) ([ec85792](https://github.com/driftyco/ionic-native/commit/ec85792))
* **google-maps:** fix fromPointToLatLng params (#1514) ([9583802](https://github.com/driftyco/ionic-native/commit/9583802)), closes [#1514](https://github.com/driftyco/ionic-native/issues/1514)
* **native-storage:** add missing keys method (#1495) ([8311aaf](https://github.com/driftyco/ionic-native/commit/8311aaf)), closes [#1415](https://github.com/driftyco/ionic-native/issues/1415)
* **web-intent:** updated source (#1519) ([252c3e4](https://github.com/driftyco/ionic-native/commit/252c3e4)), closes [#1517](https://github.com/driftyco/ionic-native/issues/1517)
### Features
* **android-fingerprint-auth:** add ERRORS constant (#1470) ([ed6044d](https://github.com/driftyco/ionic-native/commit/ed6044d))
* **android-premissions:** add Android Permissions plugin (#1508) ([5ee79b4](https://github.com/driftyco/ionic-native/commit/5ee79b4)), closes [#929](https://github.com/driftyco/ionic-native/issues/929)
* **app-minimize:** add AppMinimize plugin (#1501) ([d25b2f1](https://github.com/driftyco/ionic-native/commit/d25b2f1))
* **camera-preview:** add new focus methods & getFlashMode() (#1442) ([748c6bd](https://github.com/driftyco/ionic-native/commit/748c6bd))
* **camera-preview:** add tapToFocus method (#1494) ([8330c92](https://github.com/driftyco/ionic-native/commit/8330c92))
* **diagnostic:** update to support latest signatures (#1458) ([a4151ab](https://github.com/driftyco/ionic-native/commit/a4151ab))
* **facebook:** add EVENTS constant (#1510) ([aa9826f](https://github.com/driftyco/ionic-native/commit/aa9826f))
* **fcm:** support Firebase Cloud Messaging plugin (#1449) ([6cc6393](https://github.com/driftyco/ionic-native/commit/6cc6393))
* **firebase:** add support for firebase ErrorLog (#1440) ([11dbe42](https://github.com/driftyco/ionic-native/commit/11dbe42))
* **health-kit:** add HealthKit plugin (#1499) ([14f38a0](https://github.com/driftyco/ionic-native/commit/14f38a0))
* **intercom:** add Intercom plugin (#1504) ([ce2cc1b](https://github.com/driftyco/ionic-native/commit/ce2cc1b))
* **mobile-accessibility:** add Mobile Accessibility plugin (#1505) ([4e9b2d9](https://github.com/driftyco/ionic-native/commit/4e9b2d9)), closes [#1304](https://github.com/driftyco/ionic-native/issues/1304)
* **native-page-transitions:** add pendingTransition methods (#1344) ([f699c6d](https://github.com/driftyco/ionic-native/commit/f699c6d))
* **native-ringtones:** add Native Ringtones plugin (#1488) ([21c9cd2](https://github.com/driftyco/ionic-native/commit/21c9cd2))
* **phonegap-local-notifications:** add Phonegap local notifications plugin (#1474) ([3d747d3](https://github.com/driftyco/ionic-native/commit/3d747d3))
* **plugin:** add Document Viewer plugin (#1520) ([6855fe8](https://github.com/driftyco/ionic-native/commit/6855fe8))
* **plugin:** add File encryption plugin (#1509) ([46b4e25](https://github.com/driftyco/ionic-native/commit/46b4e25)), closes [#618](https://github.com/driftyco/ionic-native/issues/618)
* **safari-view-controller:** add missing options (#1490) ([a5b2e98](https://github.com/driftyco/ionic-native/commit/a5b2e98)), closes [#1489](https://github.com/driftyco/ionic-native/issues/1489)
* **social-sharing:** add setIPadPopupCoordinates method (#1497) ([65a8095](https://github.com/driftyco/ionic-native/commit/65a8095)), closes [#1288](https://github.com/driftyco/ionic-native/issues/1288)
* **touch-id:** add didFingerprintDatabaseChange (#1475) ([d9cc959](https://github.com/driftyco/ionic-native/commit/d9cc959)), closes [#1466](https://github.com/driftyco/ionic-native/issues/1466)
* **wheel-selector:** add Native wheel Selector plugin (#1522) ([8fe4eec](https://github.com/driftyco/ionic-native/commit/8fe4eec))
<a name="3.6.1"></a> <a name="3.6.1"></a>
## [3.6.1](https://github.com/driftyco/ionic-native/compare/v3.6.0...v3.6.1) (2017-04-27) ## [3.6.1](https://github.com/driftyco/ionic-native/compare/v3.6.0...v3.6.1) (2017-04-27)

View File

@ -3,22 +3,22 @@
# 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 2](http://ionicframework.com/) mobile app easy. 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.
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. 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.
## Installation ## Installation
Run following command to install Ionic Native in your project. Run following command to install Ionic Native in your project.
``` ```bash
npm install @ionic-native/core --save npm install @ionic-native/core --save
``` ```
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](http://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins. 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.
## Documentation ## Documentation
For the full Ionic Native documentation, please visit [http://ionicframework.com/docs/native/](http://ionicframework.com/docs/native/). For the full Ionic Native documentation, please visit [https://ionicframework.com/docs/native/](https://ionicframework.com/docs/native/).
### Basic Usage ### Basic Usage
@ -95,13 +95,13 @@ To do this, you need to provide a mock implementation of the plugins you wish to
First import the `Camera` class in your `src/app/app.module.ts` file: First import the `Camera` class in your `src/app/app.module.ts` file:
```ts ```typescript
import { Camera } from '@ionic-native/camera'; import { Camera } from '@ionic-native/camera';
``` ```
Then create a new class that extends the `Camera` class with a mock implementation: Then create a new class that extends the `Camera` class with a mock implementation:
```ts ```typescript
class CameraMock extends Camera { class CameraMock extends Camera {
getPicture(options) { getPicture(options) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -113,7 +113,7 @@ class CameraMock extends Camera {
Finally, override the previous `Camera` class in your `providers` for this module: Finally, override the previous `Camera` class in your `providers` for this module:
```ts ```typescript
providers: [ providers: [
{ provide: Camera, useClass: CameraMock } { provide: Camera, useClass: CameraMock }
] ]
@ -121,8 +121,9 @@ providers: [
Here's the full example: Here's the full example:
```ts ```typescript
import { NgModule, ErrorHandler } from '@angular/core'; import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component'; import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home'; import { HomePage } from '../pages/home/home';
@ -143,6 +144,7 @@ class CameraMock extends Camera {
HomePage HomePage
], ],
imports: [ imports: [
BrowserModule,
IonicModule.forRoot(MyApp) IonicModule.forRoot(MyApp)
], ],
bootstrap: [IonicApp], bootstrap: [IonicApp],
@ -163,24 +165,24 @@ export class AppModule {}
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? 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) ![img](https://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)
## Plugin Missing? ## 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: 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:
## Ionic 1/Angular 1 support ## Ionic V1/Angular 1 support
Ionic Native 3.x supports Ionic 2.x and above. For Ionic/Angular 1 support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/driftyco/ionic-native/blob/8cd648db5cddd7bdbe2bd78839b19c620cc8c04c/README.md) for usage information. For Ionic V1/Angular 1 support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/driftyco/ionic-native/blob/8cd648db5cddd7bdbe2bd78839b19c620cc8c04c/README.md) for usage information.
# Credits # Credits
Ibby Hadeed - [@ihadeed](http://github.com/ihadeed) Ibby Hadeed - [@ihadeed](https://github.com/ihadeed)
Tim Lancina - [@timlancina](http://twitter.com/timlancina) Tim Lancina - [@timlancina](https://twitter.com/timlancina)
Mike Hartington - [@mhartington](https://twitter.com/mhartington) Mike Hartington - [@mhartington](https://twitter.com/mhartington)
Max Lynch - [@maxlynch](http://twitter.com/maxlynch) Max Lynch - [@maxlynch](https://twitter.com/maxlynch)
Rob Wormald - [@robwormald](https://twitter.com/robwormald) Rob Wormald - [@robwormald](https://twitter.com/robwormald)

View File

@ -7,12 +7,15 @@ jobs:
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
key: ionic-site key: ionic-site-{{ .Branch }}
- run: - run:
name: Prepare ionic-site repo name: Prepare ionic-site repo
command: ./scripts/docs/prepare.sh command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
./scripts/docs/prepare.sh
fi
- save_cache: - save_cache:
key: ionic-site key: ionic-site-{{ .Branch }}
paths: paths:
- ~/ionic-site/ - ~/ionic-site/
- restore_cache: - restore_cache:
@ -27,6 +30,12 @@ jobs:
- run: - run:
name: Run tslint name: Run tslint
command: npm run lint command: npm run lint
- run:
name: Build changed plugins
command: node scripts/ci-tests.js
- run:
name: Run tests
command: npm test
- add_ssh_keys - add_ssh_keys
- deploy: - deploy:
name: Update docs name: Update docs

View File

@ -34,14 +34,16 @@ gulp.task('plugin:create', () => {
const src = flags.m ? './scripts/templates/wrap-min.tmpl':'./scripts/templates/wrap.tmpl', const src = flags.m ? './scripts/templates/wrap-min.tmpl':'./scripts/templates/wrap.tmpl',
pluginName = flags.n, pluginName = flags.n,
pluginNameSpaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1'); spaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1'),
kebabCase = _.kebabCase(pluginName);
return gulp.src(src) return gulp.src(src)
.pipe(replace('$PluginName', pluginName)) .pipe(replace('{{ PluginName }}', pluginName))
.pipe(replace('$Plugin_Name', pluginNameSpaced)) .pipe(replace('{{ Plugin_Name }}', spaced))
.pipe(replace('$pluginName', _.lowerFirst(pluginName))) .pipe(replace('{{ pluginName }}', _.lowerFirst(pluginName)))
.pipe(replace('{{ plugin-name }}', kebabCase))
.pipe(rename('index.ts')) .pipe(rename('index.ts'))
.pipe(gulp.dest('./src/@ionic-native/plugins/' + _.kebabCase(pluginName))); .pipe(gulp.dest('./src/@ionic-native/plugins/' + kebabCase));
} else { } else {
console.log("Usage is: gulp plugin:create -n PluginName"); console.log("Usage is: gulp plugin:create -n PluginName");

55
karma.conf.js Normal file
View File

@ -0,0 +1,55 @@
"use strict";
module.exports = config => {
const conf = {
frameworks: [
'jasmine',
'karma-typescript'
],
plugins: [
'karma-typescript',
'karma-jasmine',
'karma-phantomjs-launcher'
],
preprocessors: {
'src/**/*.ts': ['karma-typescript']
},
karmaTypescriptConfig: {
bundlerOptions: {
entrypoints: /\.spec\.ts$/,
transforms: [
require("karma-typescript-es6-transform")()
]
},
compilerOptions: {
lib: ['es2015', 'dom'],
paths: {
"@ionic-native/core": ["./src/@ionic-native/core"]
},
baseUrl: '.'
}
},
files: [
{ pattern: 'src/**/*.ts', included: true, watched: true }
],
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.INFO,
autoWatch: true,
browsers: [
'PhantomJS'
],
singleRun: false
};
config.set(conf);
};

View File

@ -1,12 +1,15 @@
{ {
"name": "ionic-native", "name": "ionic-native",
"version": "3.6.1", "version": "3.8.1",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support", "description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@angular/compiler": "4.0.0", "@angular/compiler": "4.1.2",
"@angular/compiler-cli": "4.0.0", "@angular/compiler-cli": "4.1.2",
"@angular/core": "4.0.0", "@angular/core": "4.1.2",
"@types/cordova": "0.0.34",
"@types/jasmine": "^2.5.47",
"@types/node": "^7.0.18",
"canonical-path": "0.0.2", "canonical-path": "0.0.2",
"child-process-promise": "2.2.0", "child-process-promise": "2.2.0",
"conventional-changelog-cli": "1.2.0", "conventional-changelog-cli": "1.2.0",
@ -21,6 +24,13 @@
"gulp-rename": "1.2.2", "gulp-rename": "1.2.2",
"gulp-replace": "0.5.4", "gulp-replace": "0.5.4",
"gulp-tslint": "6.1.2", "gulp-tslint": "6.1.2",
"jasmine-core": "^2.6.1",
"karma": "^1.7.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.1.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-typescript": "^3.0.1",
"karma-typescript-es6-transform": "^1.0.0",
"lodash": "4.17.4", "lodash": "4.17.4",
"minimist": "1.1.3", "minimist": "1.1.3",
"node-html-encoder": "0.0.2", "node-html-encoder": "0.0.2",
@ -30,9 +40,9 @@
"rxjs": "5.1.1", "rxjs": "5.1.1",
"semver": "5.3.0", "semver": "5.3.0",
"tslint": "3.15.1", "tslint": "3.15.1",
"tslint-ionic-rules": "0.0.7", "tslint-ionic-rules": "0.0.8",
"typescript": "2.2.1", "typescript": "2.3.2",
"zone.js": "^0.8.4" "zone.js": "^0.8.10"
}, },
"scripts": { "scripts": {
"start": "npm run test:watch", "start": "npm run test:watch",
@ -44,7 +54,9 @@
"shipit": "npm run build && gulp readmes && npm run npmpub", "shipit": "npm run build && gulp readmes && npm run npmpub",
"npmpub": "node scripts/build/publish.js", "npmpub": "node scripts/build/publish.js",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"postchangelog": "git commit -am \"chore(): update changelog\"" "postchangelog": "git commit -am \"chore(): update changelog\"",
"test": "karma start karma.conf.js --single-run",
"test:watch": "karma start karma.conf.js"
}, },
"config": { "config": {
"commitizen": { "commitizen": {

View File

@ -52,6 +52,16 @@ const PLUGINS = fs.readdirSync(PLUGINS_PATH);
// Build specific list of plugins to build from arguments, if any // Build specific list of plugins to build from arguments, if any
let pluginsToBuild = process.argv.slice(2); let pluginsToBuild = process.argv.slice(2);
let ignoreErrors = false;
let errors = [];
const index = pluginsToBuild.indexOf('ignore-errors');
if (index > -1) {
ignoreErrors = true;
pluginsToBuild.splice(index, 1);
console.log('Build will continue even if errors were thrown. Errors will be printed when build finishes.');
}
if (!pluginsToBuild.length) { if (!pluginsToBuild.length) {
pluginsToBuild = PLUGINS; pluginsToBuild = PLUGINS;
} }
@ -102,10 +112,16 @@ const addPluginToQueue = pluginName => {
exec(`${ROOT}/node_modules/.bin/ngc -p ${tsConfigPath}`, (err, stdout, stderr) => { exec(`${ROOT}/node_modules/.bin/ngc -p ${tsConfigPath}`, (err, stdout, stderr) => {
if (err) { if (err) {
if (!ignoreErrors) {
// oops! something went wrong. // oops! something went wrong.
callback(`\n\nBuilding ${pluginName} failed.`);
console.log(err); console.log(err);
callback(`\n\nBuilding ${pluginName} failed.`);
return; return;
} else {
errors.push(err);
}
} }
// we're done with this plugin! // we're done with this plugin!
@ -125,7 +141,17 @@ pluginsToBuild.forEach(addPluginToQueue);
QUEUE.start((err) => { QUEUE.start((err) => {
if (err) { if (err) {
console.log('Error building plugins. ', err); console.log('Error building plugins.');
console.log(err);
process.stderr.write(err);
process.exit(1);
} else if (errors.length) {
errors.forEach(e => {
console.log(e.message) && console.log('\n');
process.stderr.write(err);
});
console.log('Build complete with errors');
process.exit(1);
} else { } else {
console.log('Done processing plugins!'); console.log('Done processing plugins!');
} }

View File

@ -13,7 +13,8 @@
"skipLibCheck": true, "skipLibCheck": true,
"lib": ["es2015", "dom"], "lib": ["es2015", "dom"],
"sourceMap": true, "sourceMap": true,
"inlineSources": true "inlineSources": true,
"noImplicitAny": true
}, },
"files": [ "files": [
"../../src/@ionic-native/core/index.ts" "../../src/@ionic-native/core/index.ts"

View File

@ -16,7 +16,8 @@
"skipLibCheck": true, "skipLibCheck": true,
"lib": ["es2015", "dom"], "lib": ["es2015", "dom"],
"sourceMap": true, "sourceMap": true,
"inlineSources": true "inlineSources": true,
"noImplicitAny": true
}, },
"files": [] "files": []
} }

65
scripts/ci-tests.js Normal file
View File

@ -0,0 +1,65 @@
const exec = require('child-process-promise').exec;
let diff;
exec(`git branch | grep \\* | cut -d ' ' -f2`)
.then(output => {
if (output.stderr) {
return Promise.reject(output.stderr);
}
const branch = output.stdout.trim();
if (branch !== 'master') {
console.log('Merging master branch in ...');
// not on master branch
// let's test the changes that were made
return exec(`git merge origin master`);
}
})
.then((output) => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
console.log('Checking for differences ...');
return exec(`git diff --name-status origin master`)
})
.then((output) => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
diff = output.stdout;
diff = diff.replace(/A\s+/g, '');
diff = diff.match(/src\/@ionic-native\/plugins\/([a-zA-Z0-9\-]+)\/index\.ts/g);
if (!diff) process.exit();
console.log(`${ diff.length } plugins were modified. We will now build them to verify they still work.`);
return exec('npm run build:core --silent');
})
.then((output) => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
console.log('Built core library successfully ...');
console.log('Building plugins ...');
diff = diff.map(text => text.replace('src/@ionic-native/plugins/', '').replace('/index.ts', ''));
return exec(`npm run build:modules ${diff.join(' ')} --silent`);
})
.then((output) => {
if (output && output.stderr) {
console.log(output.stderr);
process.exit(1);
}
console.log(output.stdout);
process.exit();
})
.catch(e => {
console.log(e.message || e);
process.exit(1);
});

View File

@ -16,7 +16,7 @@
<@ for prop in doc.decorators[0].argumentInfo @> <@ for prop in doc.decorators[0].argumentInfo @>
``` ```
$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plugin $><@ endif @> $ <@ if prop.install @><$ prop.install $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $> $ npm install --save @ionic-native/<$ doc.npmId $>
``` ```

View File

@ -2,15 +2,15 @@ import { Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
/** /**
* @name $Plugin_Name * @name {{ Plugin_Name }}
* @description * @description
* *
* @usage * @usage
* ``` * ```
* import { $PluginName } from 'ionic-native'; * import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
* *
* *
* constructor(private $pluginName: $PluginName) { } * constructor(private {{ pluginName }}: {{ PluginName }}) { }
* *
* ... * ...
* *
@ -18,13 +18,13 @@ import { Injectable } from '@angular/core';
* ``` * ```
*/ */
@Plugin({ @Plugin({
pluginName: '$PluginName', pluginName: '{{ PluginName }}',
plugin: '', plugin: '',
pluginRef: '', pluginRef: '',
repo: '', repo: '',
platforms: [] platforms: []
}) })
@Injectable() @Injectable()
export class $PluginName extends IonicNativePlugin { export class {{ PluginName }} extends IonicNativePlugin {
} }

View File

@ -10,33 +10,33 @@
* - Remove this note * - Remove this note
* *
*/ */
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
/** /**
* @name $Plugin_Name * @name {{ Plugin_Name }}
* @description * @description
* This plugin does something * This plugin does something
* *
* @usage * @usage
* ``` * ```
* import { $PluginName } from 'ionic-native'; * import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
* *
* *
* constructor(private $pluginName: $PluginName) { } * constructor(private {{ pluginName }}: {{ PluginName }}) { }
* *
* ... * ...
* *
* *
* this.$pluginName.functionName('Hello', 123) * this.{{ pluginName }}.functionName('Hello', 123)
* .then((res: any) => console.log(res)) * .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error)); * .catch((error: any) => console.error(error));
* *
* ``` * ```
*/ */
@Plugin({ @Plugin({
pluginName: '$PluginName', pluginName: '{{ PluginName }}',
plugin: '', // npm package name, example: cordova-plugin-camera plugin: '', // npm package name, example: cordova-plugin-camera
pluginRef: '', // the variable reference to call the plugin, example: navigator.geolocation pluginRef: '', // the variable reference to call the plugin, example: navigator.geolocation
repo: '', // the github repository URL for the plugin repo: '', // the github repository URL for the plugin
@ -44,7 +44,7 @@ import { Observable } from 'rxjs/Observable';
install: '', // OPTIONAL install command, in case the plugin requires variables install: '', // OPTIONAL install command, in case the plugin requires variables
}) })
@Injectable() @Injectable()
export class $PluginName extends IonicNativePlugin { export class {{ PluginName }} extends IonicNativePlugin {
/** /**
* This function does something * This function does something

View File

@ -1,5 +1,3 @@
declare var window;
export function checkReady() { export function checkReady() {
const DEVICE_READY_TIMEOUT = 5000; const DEVICE_READY_TIMEOUT = 5000;
@ -16,7 +14,7 @@ export function checkReady() {
}); });
setTimeout(() => { setTimeout(() => {
if (!didFireReady && window.cordova) { if (!didFireReady && !!window.cordova) {
console.warn(`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`); console.warn(`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`);
} }
}, DEVICE_READY_TIMEOUT); }, DEVICE_READY_TIMEOUT);

View File

@ -0,0 +1,234 @@
import 'core-js';
import { Plugin, Cordova, CordovaProperty, CordovaCheck, CordovaInstance, InstanceProperty } from './decorators';
import { IonicNativePlugin } from './ionic-native-plugin';
import { ERR_CORDOVA_NOT_AVAILABLE, ERR_PLUGIN_NOT_INSTALLED } from './plugin';
declare const window: any;
class TestObject {
constructor(public _objectInstance: any) {}
@InstanceProperty
name: string;
@CordovaInstance({ sync: true })
pingSync(): string { return; }
@CordovaInstance()
ping(): Promise<any> { return; }
}
@Plugin({
pluginName: 'TestPlugin',
pluginRef: 'testPlugin',
repo: '',
plugin: 'cordova-plugin-my-plugin'
})
class TestPlugin extends IonicNativePlugin {
@CordovaProperty
name: string;
@Cordova({ sync: true })
pingSync(): string { return; }
@Cordova()
ping(): Promise<string> { return; }
@CordovaCheck()
customPing(): Promise<string> {
return Promise.resolve('pong');
}
create(): TestObject {
return new TestObject(TestPlugin.getPlugin().create());
}
}
function definePlugin() {
(window as any).testPlugin = {
name: 'John Smith',
ping: (success: Function, error: Function) => success('pong'),
pingSync: () => 'pong',
create: function TestObject() {
this.pingSync = () => 'pong';
this.ping = (success: Function, error: Function) => success('pong');
this.name = 'John Smith';
return this;
}
};
}
describe('Regular Decorators', () => {
let plugin: TestPlugin;
beforeEach(() => {
plugin = new TestPlugin();
definePlugin();
});
describe('Plugin', () => {
it('should set pluginName', () => {
expect(TestPlugin.getPluginName()).toEqual('TestPlugin');
});
it('should set pluginRef', () => {
expect(TestPlugin.getPluginRef()).toEqual('testPlugin');
});
it('should return original plugin object', () => {
expect(TestPlugin.getPlugin()).toEqual(window.testPlugin);
});
});
describe('Cordova', () => {
it('should do a sync function', () => {
expect(plugin.pingSync()).toEqual('pong');
});
it('should do an async function', (done: Function) => {
plugin.ping()
.then(res => {
expect(res).toEqual('pong');
done();
})
.catch(e => {
expect(e).toBeUndefined();
done('Method should have resolved');
});
});
it('should throw plugin_not_installed error', (done: Function) => {
delete window.testPlugin;
window.cordova = true;
expect(<any>plugin.pingSync()).toEqual(ERR_PLUGIN_NOT_INSTALLED);
plugin.ping()
.catch(e => {
expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
delete window.cordova;
done();
});
});
it('should throw cordova_not_available error', (done: Function) => {
delete window.testPlugin;
expect(<any>plugin.pingSync()).toEqual(ERR_CORDOVA_NOT_AVAILABLE);
plugin.ping()
.catch(e => {
expect(e).toEqual(ERR_CORDOVA_NOT_AVAILABLE.error);
done();
});
});
});
describe('CordovaProperty', () => {
it('should return property value', () => {
expect(plugin.name).toEqual('John Smith');
});
it('should set property value', () => {
plugin.name = 'value2';
expect(plugin.name).toEqual('value2');
});
});
describe('CordovaCheck', () => {
it('should run the method when plugin exists', (done) => {
plugin.customPing()
.then(res => {
expect(res).toEqual('pong');
done();
});
});
it('shouldnt run the method when plugin doesnt exist', (done) => {
delete window.testPlugin;
window.cordova = true;
plugin.customPing()
.catch(e => {
expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
done();
});
});
});
});
describe('Instance Decorators', () => {
let instance: TestObject,
plugin: TestPlugin;
beforeEach(() => {
definePlugin();
plugin = new TestPlugin();
instance = plugin.create();
});
describe('Instance plugin', () => {
});
describe('CordovaInstance', () => {
it('should call instance async method', (done) => {
instance.ping()
.then(r => {
expect(r).toEqual('pong');
done();
});
});
it('should call instance sync method', () => {
expect(instance.pingSync()).toEqual('pong');
});
it('shouldnt call instance method when _objectInstance is undefined', () => {
delete instance._objectInstance;
instance.ping()
.then(r => {
expect(r).toBeUndefined();
})
.catch(e => {
expect(e).toBeUndefined();
});
});
});
describe('InstanceProperty', () => {
it('should return property value', () => {
expect(instance.name).toEqual('John Smith');
});
it('should set property value', () => {
instance.name = 'John Cena';
expect(instance.name).toEqual('John Cena');
});
});
});

View File

@ -32,6 +32,8 @@ export interface PluginConfig {
* Supported platforms * Supported platforms
*/ */
platforms?: string[]; platforms?: string[];
[key: string]: any;
} }
export interface CordovaOptions { export interface CordovaOptions {
@ -127,10 +129,10 @@ export function InstanceCheck(opts: CordovaCheckOptions = {}) {
if (opts.sync) { if (opts.sync) {
return; return;
} else if (opts.observable) { } else if (opts.observable) {
return new Observable<any>(() => {}); return new Observable<any>(() => { });
} }
return getPromise(() => {}); return getPromise(() => { });
} }
} }
@ -182,12 +184,12 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
* } * }
* ``` * ```
*/ */
export function Plugin(config: PluginConfig) { export function Plugin(config: PluginConfig): ClassDecorator {
return function(cls) { return function(cls: any) {
// Add these fields to the class // Add these fields to the class
for (let k in config) { for (let prop in config) {
cls[k] = config[k]; cls[prop] = config[prop];
} }
cls['installed'] = function(printWarning?: boolean) { cls['installed'] = function(printWarning?: boolean) {
@ -290,10 +292,10 @@ export function CordovaProperty(target: any, key: string) {
export function InstanceProperty(target: any, key: string) { export function InstanceProperty(target: any, key: string) {
Object.defineProperty(target, key, { Object.defineProperty(target, key, {
enumerable: true, enumerable: true,
get: function(){ get: function() {
return this._objectInstance[key]; return this._objectInstance[key];
}, },
set: function(value){ set: function(value) {
this._objectInstance[key] = value; this._objectInstance[key] = value;
} }
}); });

View File

@ -21,7 +21,7 @@ export class IonicNativePlugin {
/** /**
* Returns the original plugin object * Returns the original plugin object
*/ */
static getPlugin(): any {} static getPlugin(): any { }
/** /**
* Returns the plugin's name * Returns the plugin's name

View File

@ -7,8 +7,11 @@ import 'rxjs/add/observable/fromEvent';
checkReady(); checkReady();
declare var window; // declare const window;
declare var Promise; // declare var Promise;
export const ERR_CORDOVA_NOT_AVAILABLE = { error: 'cordova_not_available' };
export const ERR_PLUGIN_NOT_INSTALLED = { error: 'plugin_not_installed' };
/** /**
@ -16,8 +19,8 @@ declare var Promise;
* @return {boolean | { error: string } } * @return {boolean | { error: string } }
* @private * @private
*/ */
export function checkAvailability(pluginRef: string, methodName?: string, pluginName?: string); export function checkAvailability(pluginRef: string, methodName?: string, pluginName?: string): boolean | { error: string };
export function checkAvailability(pluginObj: any, methodName?: string, pluginName?: string); export function checkAvailability(pluginObj: any, methodName?: string, pluginName?: string): boolean | { error: string };
export function checkAvailability(plugin: any, methodName?: string, pluginName?: string): boolean | { error: string } { export function checkAvailability(plugin: any, methodName?: string, pluginName?: string): boolean | { error: string } {
let pluginRef, pluginInstance, pluginPackage; let pluginRef, pluginInstance, pluginPackage;
@ -35,15 +38,11 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) { if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {
if (!window.cordova) { if (!window.cordova) {
cordovaWarn(pluginName, methodName); cordovaWarn(pluginName, methodName);
return { return ERR_CORDOVA_NOT_AVAILABLE;
error: 'cordova_not_available'
};
} }
pluginWarn(pluginName, pluginPackage, methodName); pluginWarn(pluginName, pluginPackage, methodName);
return { return ERR_PLUGIN_NOT_INSTALLED;
error: 'plugin_not_installed'
};
} }
return true; return true;
@ -69,7 +68,7 @@ function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Func
args.unshift(reject); args.unshift(reject);
args.unshift(resolve); args.unshift(resolve);
} else if (opts.callbackStyle === 'node') { } else if (opts.callbackStyle === 'node') {
args.push((err, result) => { args.push((err: any, result: any) => {
if (err) { if (err) {
reject(err); reject(err);
} else { } else {
@ -135,8 +134,8 @@ function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts
} }
function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) { function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
let pluginResult, rej; let pluginResult: any, rej: Function;
const p = getPromise((resolve, reject) => { const p = getPromise((resolve: Function, reject: Function) => {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject); pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
rej = reject; rej = reject;
}); });
@ -145,13 +144,13 @@ function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any
// to error // to error
if (pluginResult && pluginResult.error) { if (pluginResult && pluginResult.error) {
p.catch(() => { }); p.catch(() => { });
rej(pluginResult.error); typeof rej === 'function' && rej(pluginResult.error);
} }
return p; return p;
} }
function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any= {}) { function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
return getPromise((resolve, reject) => { return getPromise((resolve: Function, reject: Function) => {
const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts); const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
if (pluginResult) { if (pluginResult) {
if (pluginResult.error) { if (pluginResult.error) {
@ -225,7 +224,7 @@ export function overrideFunction(pluginObj: any, methodName: string, args: any[]
if (availabilityCheck === true) { if (availabilityCheck === true) {
const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef()); const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());
pluginInstance[methodName] = observer.next.bind(observer); pluginInstance[methodName] = observer.next.bind(observer);
return () => pluginInstance[methodName] = () => {}; return () => pluginInstance[methodName] = () => { };
} else { } else {
observer.error(availabilityCheck); observer.error(availabilityCheck);
observer.complete(); observer.complete();
@ -239,7 +238,7 @@ export function overrideFunction(pluginObj: any, methodName: string, args: any[]
* @private * @private
*/ */
export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOptions = {}) { export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOptions = {}) {
return (...args) => { return (...args: any[]) => {
if (opts.sync) { if (opts.sync) {
// Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is // Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is
return callCordovaPlugin(pluginObj, methodName, args, opts); return callCordovaPlugin(pluginObj, methodName, args, opts);
@ -259,7 +258,7 @@ export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOp
* @private * @private
*/ */
export function wrapInstance(pluginObj: any, methodName: string, opts: any = {}) { export function wrapInstance(pluginObj: any, methodName: string, opts: any = {}) {
return (...args) => { return (...args: any[]) => {
if (opts.sync) { if (opts.sync) {
return callInstance(pluginObj, methodName, args, opts); return callInstance(pluginObj, methodName, args, opts);
@ -289,7 +288,7 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
} else if (opts.otherPromise) { } else if (opts.otherPromise) {
return getPromise((resolve, reject) => { return getPromise((resolve: Function, reject: Function) => {
let result = callInstance(pluginObj, methodName, args, opts, resolve, reject); let result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
if (result && !result.error) { if (result && !result.error) {
result.then(resolve, reject); result.then(resolve, reject);
@ -298,14 +297,14 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
} else { } else {
let pluginResult, rej; let pluginResult: any, rej: Function;
const p = getPromise((resolve, reject) => { const p = getPromise((resolve: Function, reject: Function) => {
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject); pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
rej = reject; rej = reject;
}); });
if (pluginResult && pluginResult.error) { if (pluginResult && pluginResult.error) {
p.catch(() => { }); p.catch(() => { });
rej(pluginResult.error); typeof rej === 'function' && rej(pluginResult.error);
} }
return p; return p;

View File

@ -1,27 +1,28 @@
declare var window: any; declare const window: any;
/** /**
* @private * @private
*/ */
export function get(obj, path) { export const get = (element: Element | Window, path: string): any => {
path = path.split('.'); const paths: string[] = path.split('.');
for (let i = 0; i < path.length; i++) { let obj: any = element;
for (let i: number = 0; i < paths.length; i++) {
if (!obj) { return null; } if (!obj) { return null; }
obj = obj[path[i]]; obj = obj[paths[i]];
} }
return obj; return obj;
} };
/** /**
* @private * @private
*/ */
export function getPromise(cb) { export const getPromise = (callback: Function): Promise<any> => {
const tryNativePromise = () => { const tryNativePromise = () => {
if (window.Promise) { if (window.Promise) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
cb(resolve, reject); callback(resolve, reject);
}); });
} else { } else {
console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular 2 or on a recent browser.'); console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular 2 or on a recent browser.');
@ -29,21 +30,21 @@ export function getPromise(cb) {
}; };
return tryNativePromise(); return tryNativePromise();
} };
/** /**
* @private * @private
* @param pluginRef * @param pluginRef
* @returns {null|*} * @returns {null|*}
*/ */
export function getPlugin(pluginRef: string): any { export const getPlugin = (pluginRef: string): any => {
return get(window, pluginRef); return get(window, pluginRef);
}; };
/** /**
* @private * @private
*/ */
export const pluginWarn = function(pluginName: string, plugin?: string, method?: string) { export const pluginWarn = (pluginName: string, plugin?: string, method?: string): void => {
if (method) { if (method) {
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.'); console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.');
} else { } else {
@ -59,7 +60,7 @@ export const pluginWarn = function(pluginName: string, plugin?: string, method?:
* @param pluginName * @param pluginName
* @param method * @param method
*/ */
export const cordovaWarn = function(pluginName: string, method?: string) { export const cordovaWarn = (pluginName: string, method?: string): void => {
if (method) { if (method) {
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'); console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
} else { } else {

View File

@ -69,7 +69,7 @@ export interface AdMobFreeRewardVideoConfig {
* @description * @description
* *
* @usage * @usage
* ``` * ```typescript
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free'; * import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
* *
* *

View File

@ -95,9 +95,10 @@ export interface AdExtras {
* Plugin for Google Ads, including AdMob / DFP (doubleclick for publisher) and mediations to other Ad networks. * Plugin for Google Ads, including AdMob / DFP (doubleclick for publisher) and mediations to other Ad networks.
* @usage * @usage
* ```typescript * ```typescript
* import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/admob'; * import { AdMob } from '@ionic-native/admob';
* import { Platform } from 'ionic-angular';
* *
* constructor(private admob: AdMob){} * constructor(private admob: AdMob, private platform: Platform ) { }
* *
* ionViewDidLoad() { * ionViewDidLoad() {
* this.admob.onAdDismiss() * this.admob.onAdDismiss()
@ -105,7 +106,13 @@ export interface AdExtras {
* } * }
* *
* onClick() { * onClick() {
* this.admob.prepareInterstitial('YOUR_ADID') * let adId;
* if(this.platform.is('android')) {
* adId = 'YOUR_ADID_ANDROID';
* } else if (this.platform.is('ios')) {
* adId = 'YOUR_ADID_IOS';
* }
* this.admob.prepareInterstitial({adId: adId})
* .then(() => { this.admob.showInterstitial(); }); * .then(() => { this.admob.showInterstitial(); });
* } * }
* *

View File

@ -1,6 +1,8 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
export interface AlipayOrder { export interface AlipayOrder {
/** /**
* appId assigned by Alipay * appId assigned by Alipay
@ -67,7 +69,7 @@ export interface AlipayOrder {
* Requires Cordova plugin: `cordova-alipay-base`. For more info, please see the [Alipay plugin docs](https://github.com/xueron/cordova-alipay-base). * Requires Cordova plugin: `cordova-alipay-base`. For more info, please see the [Alipay plugin docs](https://github.com/xueron/cordova-alipay-base).
* *
* @usage * @usage
* ``` * ```typescript
* import { Alipay, AlipayOrder } from '@ionic-native/alipay'; * import { Alipay, AlipayOrder } from '@ionic-native/alipay';
* *
* constructor(private alipay: Alipay) { * constructor(private alipay: Alipay) {
@ -112,4 +114,3 @@ export class Alipay extends IonicNativePlugin {
@Cordova() @Cordova()
pay(order: AlipayOrder): Promise<any> { return; } pay(order: AlipayOrder): Promise<any> { return; }
} }

View File

@ -102,7 +102,7 @@ export interface AFAEncryptResponse {
* This plugin will open a native dialog fragment prompting the user to authenticate using their fingerprint. If the device has a secure lockscreen (pattern, PIN, or password), the user may opt to authenticate using that method as a backup. * This plugin will open a native dialog fragment prompting the user to authenticate using their fingerprint. If the device has a secure lockscreen (pattern, PIN, or password), the user may opt to authenticate using that method as a backup.
* @usage * @usage
* ```typescript * ```typescript
* import { AndroidFingerprintAuth, AFAAuthOptions } from '@ionic-native/android-fingerprint-auth'; * import { AndroidFingerprintAuth } from '@ionic-native/android-fingerprint-auth';
* *
* constructor(private androidFingerprintAuth: AndroidFingerprintAuth) { } * constructor(private androidFingerprintAuth: AndroidFingerprintAuth) { }
* *
@ -114,18 +114,18 @@ export interface AFAEncryptResponse {
* if(result.isAvailable){ * if(result.isAvailable){
* // it is available * // it is available
* *
* this.androidFingerprintAuth.encrypt({ clientId: "myAppName", username: "myUsername", password: "myPassword" }) * this.androidFingerprintAuth.encrypt({ clientId: 'myAppName', username: 'myUsername', password: 'myPassword' })
* .then(result => { * .then(result => {
* if (result.withFingerprint) { * if (result.withFingerprint) {
* console.log("Successfully encrypted credentials."); * console.log('Successfully encrypted credentials.');
* console.log("Encrypted credentials: " + result.token); * console.log('Encrypted credentials: ' + result.token);
* } else if (result.withBackup) { * } else if (result.withBackup) {
* console.log('Successfully authenticated with backup password!'); * console.log('Successfully authenticated with backup password!');
* } else console.log('Didn\'t authenticate!'); * } else console.log('Didn\'t authenticate!');
* }) * })
* .catch(error => { * .catch(error => {
* if (error === "Cancelled") { * if (error === this.androidFingerprintAuth.ERRORS.FINGERPRINT_CANCELLED) {
* console.log("Fingerprint authentication cancelled"); * console.log('Fingerprint authentication cancelled');
* } else console.error(error) * } else console.error(error)
* }); * });
* *
@ -150,13 +150,26 @@ export interface AFAEncryptResponse {
@Injectable() @Injectable()
export class AndroidFingerprintAuth extends IonicNativePlugin { export class AndroidFingerprintAuth extends IonicNativePlugin {
/** ERRORS: {
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device. BAD_PADDING_EXCEPTION: 'BAD_PADDING_EXCEPTION',
* @param options {AFAAuthOptions} Options CERTIFICATE_EXCEPTION: 'CERTIFICATE_EXCEPTION',
* @returns {Promise<any>} FINGERPRINT_CANCELLED: 'FINGERPRINT_CANCELLED',
*/ FINGERPRINT_DATA_NOT_DELETED: 'FINGERPRINT_DATA_NOT_DELETED',
@Cordova() FINGERPRINT_ERROR: 'FINGERPRINT_ERROR',
encrypt(options: AFAAuthOptions): Promise<AFAEncryptResponse> {return; } FINGERPRINT_NOT_AVAILABLE: 'FINGERPRINT_NOT_AVAILABLE',
FINGERPRINT_PERMISSION_DENIED: 'FINGERPRINT_PERMISSION_DENIED',
FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST: 'FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST',
ILLEGAL_BLOCK_SIZE_EXCEPTION: 'ILLEGAL_BLOCK_SIZE_EXCEPTION',
INIT_CIPHER_FAILED: 'INIT_CIPHER_FAILED',
INVALID_ALGORITHM_PARAMETER_EXCEPTION: 'INVALID_ALGORITHM_PARAMETER_EXCEPTION',
IO_EXCEPTION: 'IO_EXCEPTION',
JSON_EXCEPTION: 'JSON_EXCEPTION',
MINIMUM_SDK: 'MINIMUM_SDK',
MISSING_ACTION_PARAMETERS: 'MISSING_ACTION_PARAMETERS',
MISSING_PARAMETERS: 'MISSING_PARAMETERS',
NO_SUCH_ALGORITHM_EXCEPTION: 'NO_SUCH_ALGORITHM_EXCEPTION',
SECURITY_EXCEPTION: 'SECURITY_EXCEPTION'
};
/** /**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device. * Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
@ -164,19 +177,27 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova() @Cordova()
decrypt(options: AFAAuthOptions): Promise<AFADecryptOptions> {return; } encrypt(options: AFAAuthOptions): Promise<AFAEncryptResponse> { return; }
/**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
* @param options {AFAAuthOptions} Options
* @returns {Promise<any>}
*/
@Cordova()
decrypt(options: AFAAuthOptions): Promise<AFADecryptOptions> { return; }
/** /**
* Check if service is available * Check if service is available
* @returns {Promise<any>} Returns a Promise that resolves if fingerprint auth is available on the device * @returns {Promise<any>} Returns a Promise that resolves if fingerprint auth is available on the device
*/ */
@Cordova() @Cordova()
isAvailable(): Promise<{isAvailable: boolean}> { return; } isAvailable(): Promise<{ isAvailable: boolean }> { return; }
/** /**
* Delete the cipher used for encryption and decryption by username * Delete the cipher used for encryption and decryption by username
* @returns {Promise<any>} Returns a Promise that resolves if the cipher was successfully deleted * @returns {Promise<any>} Returns a Promise that resolves if the cipher was successfully deleted
*/ */
@Cordova() @Cordova()
delete(options: {clientId: string; username: string; }): Promise<{deleted: boolean}> { return; } delete(options: { clientId: string; username: string; }): Promise<{ deleted: boolean }> { return; }
} }

View File

@ -0,0 +1,226 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Android Permissions
* @description
* 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
*
* @usage
* ```
* import { AndroidPermissions } from '@ionic-native/android-permissions';
*
*
* constructor(private androidPermissions: AndroidPermissions) { }
*
* ...
*
* this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
* success => console.log('Permission granted'),
* err => this.androidPermissions.requestPermissions(this.androidPermissions.PERMISSION.CAMERA)
* );
*
* this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.CAMERA, this.androidPermissions.PERMISSION.GET_ACCOUNTS]);
*
* ```
*/
@Plugin({
pluginName: 'AndroidPermissions',
plugin: 'cordova-plugin-android-permissions',
pluginRef: 'cordova.plugins.permissions',
repo: 'https://github.com/NeoLSN/cordova-plugin-android-permissions',
platforms: ['Android']
})
@Injectable()
export class AndroidPermissions extends IonicNativePlugin {
PERMISSION: any = {
ACCESS_CHECKIN_PROPERTIES: 'android.permission.ACCESS_CHECKIN_PROPERTIES',
ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',
ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',
ACCESS_LOCATION_EXTRA_COMMANDS: 'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS',
ACCESS_MOCK_LOCATION: 'android.permission.ACCESS_MOCK_LOCATION',
ACCESS_NETWORK_STATE: 'android.permission.ACCESS_NETWORK_STATE',
ACCESS_SURFACE_FLINGER: 'android.permission.ACCESS_SURFACE_FLINGER',
ACCESS_WIFI_STATE: 'android.permission.ACCESS_WIFI_STATE',
ACCOUNT_MANAGER: 'android.permission.ACCOUNT_MANAGER',
ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',
AUTHENTICATE_ACCOUNTS: 'android.permission.AUTHENTICATE_ACCOUNTS',
BATTERY_STATS: 'android.permission.BATTERY_STATS',
BIND_ACCESSIBILITY_SERVICE: 'android.permission.BIND_ACCESSIBILITY_SERVICE',
BIND_APPWIDGET: 'android.permission.BIND_APPWIDGET',
BIND_CARRIER_MESSAGING_SERVICE: 'android.permission.BIND_CARRIER_MESSAGING_SERVICE',
BIND_DEVICE_ADMIN: 'android.permission.BIND_DEVICE_ADMIN',
BIND_DREAM_SERVICE: 'android.permission.BIND_DREAM_SERVICE',
BIND_INPUT_METHOD: 'android.permission.BIND_INPUT_METHOD',
BIND_NFC_SERVICE: 'android.permission.BIND_NFC_SERVICE',
BIND_NOTIFICATION_LISTENER_SERVICE: 'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE',
BIND_PRINT_SERVICE: 'android.permission.BIND_PRINT_SERVICE',
BIND_REMOTEVIEWS: 'android.permission.BIND_REMOTEVIEWS',
BIND_TEXT_SERVICE: 'android.permission.BIND_TEXT_SERVICE',
BIND_TV_INPUT: 'android.permission.BIND_TV_INPUT',
BIND_VOICE_INTERACTION: 'android.permission.BIND_VOICE_INTERACTION',
BIND_VPN_SERVICE: 'android.permission.BIND_VPN_SERVICE',
BIND_WALLPAPER: 'android.permission.BIND_WALLPAPER',
BLUETOOTH: 'android.permission.BLUETOOTH',
BLUETOOTH_ADMIN: 'android.permission.BLUETOOTH_ADMIN',
BLUETOOTH_PRIVILEGED: 'android.permission.BLUETOOTH_PRIVILEGED',
BODY_SENSORS: 'android.permission.BODY_SENSORS',
BRICK: 'android.permission.BRICK',
BROADCAST_PACKAGE_REMOVED: 'android.permission.BROADCAST_PACKAGE_REMOVED',
BROADCAST_SMS: 'android.permission.BROADCAST_SMS',
BROADCAST_STICKY: 'android.permission.BROADCAST_STICKY',
BROADCAST_WAP_PUSH: 'android.permission.BROADCAST_WAP_PUSH',
CALL_PHONE: 'android.permission.CALL_PHONE',
CALL_PRIVILEGED: 'android.permission.CALL_PRIVILEGED',
CAMERA: 'android.permission.CAMERA',
CAPTURE_AUDIO_OUTPUT: 'android.permission.CAPTURE_AUDIO_OUTPUT',
CAPTURE_SECURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT',
CAPTURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_VIDEO_OUTPUT',
CHANGE_COMPONENT_ENABLED_STATE: 'android.permission.CHANGE_COMPONENT_ENABLED_STATE',
CHANGE_CONFIGURATION: 'android.permission.CHANGE_CONFIGURATION',
CHANGE_NETWORK_STATE: 'android.permission.CHANGE_NETWORK_STATE',
CHANGE_WIFI_MULTICAST_STATE: 'android.permission.CHANGE_WIFI_MULTICAST_STATE',
CHANGE_WIFI_STATE: 'android.permission.CHANGE_WIFI_STATE',
CLEAR_APP_CACHE: 'android.permission.CLEAR_APP_CACHE',
CLEAR_APP_USER_DATA: 'android.permission.CLEAR_APP_USER_DATA',
CONTROL_LOCATION_UPDATES: 'android.permission.CONTROL_LOCATION_UPDATES',
DELETE_CACHE_FILES: 'android.permission.DELETE_CACHE_FILES',
DELETE_PACKAGES: 'android.permission.DELETE_PACKAGES',
DEVICE_POWER: 'android.permission.DEVICE_POWER',
DIAGNOSTIC: 'android.permission.DIAGNOSTIC',
DISABLE_KEYGUARD: 'android.permission.DISABLE_KEYGUARD',
DUMP: 'android.permission.DUMP',
EXPAND_STATUS_BAR: 'android.permission.EXPAND_STATUS_BAR',
FACTORY_TEST: 'android.permission.FACTORY_TEST',
FLASHLIGHT: 'android.permission.FLASHLIGHT',
FORCE_BACK: 'android.permission.FORCE_BACK',
GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',
GET_PACKAGE_SIZE: 'android.permission.GET_PACKAGE_SIZE',
GET_TASKS: 'android.permission.GET_TASKS',
GET_TOP_ACTIVITY_INFO: 'android.permission.GET_TOP_ACTIVITY_INFO',
GLOBAL_SEARCH: 'android.permission.GLOBAL_SEARCH',
HARDWARE_TEST: 'android.permission.HARDWARE_TEST',
INJECT_EVENTS: 'android.permission.INJECT_EVENTS',
INSTALL_LOCATION_PROVIDER: 'android.permission.INSTALL_LOCATION_PROVIDER',
INSTALL_PACKAGES: 'android.permission.INSTALL_PACKAGES',
INSTALL_SHORTCUT: 'com.android.launcher.permission.INSTALL_SHORTCUT',
INTERNAL_SYSTEM_WINDOW: 'android.permission.INTERNAL_SYSTEM_WINDOW',
INTERNET: 'android.permission.INTERNET',
KILL_BACKGROUND_PROCESSES: 'android.permission.KILL_BACKGROUND_PROCESSES',
LOCATION_HARDWARE: 'android.permission.LOCATION_HARDWARE',
MANAGE_ACCOUNTS: 'android.permission.MANAGE_ACCOUNTS',
MANAGE_APP_TOKENS: 'android.permission.MANAGE_APP_TOKENS',
MANAGE_DOCUMENTS: 'android.permission.MANAGE_DOCUMENTS',
MASTER_CLEAR: 'android.permission.MASTER_CLEAR',
MEDIA_CONTENT_CONTROL: 'android.permission.MEDIA_CONTENT_CONTROL',
MODIFY_AUDIO_SETTINGS: 'android.permission.MODIFY_AUDIO_SETTINGS',
MODIFY_PHONE_STATE: 'android.permission.MODIFY_PHONE_STATE',
MOUNT_FORMAT_FILESYSTEMS: 'android.permission.MOUNT_FORMAT_FILESYSTEMS',
MOUNT_UNMOUNT_FILESYSTEMS: 'android.permission.MOUNT_UNMOUNT_FILESYSTEMS',
NFC: 'android.permission.NFC',
PERSISTENT_ACTIVITY: 'android.permission.PERSISTENT_ACTIVITY',
PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',
READ_CALENDAR: 'android.permission.READ_CALENDAR',
READ_CALL_LOG: 'android.permission.READ_CALL_LOG',
READ_CONTACTS: 'android.permission.READ_CONTACTS',
READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',
READ_FRAME_BUFFER: 'android.permission.READ_FRAME_BUFFER',
READ_HISTORY_BOOKMARKS: 'com.android.browser.permission.READ_HISTORY_BOOKMARKS',
READ_INPUT_STATE: 'android.permission.READ_INPUT_STATE',
READ_LOGS: 'android.permission.READ_LOGS',
READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',
READ_PROFILE: 'android.permission.READ_PROFILE',
READ_SMS: 'android.permission.READ_SMS',
READ_SOCIAL_STREAM: 'android.permission.READ_SOCIAL_STREAM',
READ_SYNC_SETTINGS: 'android.permission.READ_SYNC_SETTINGS',
READ_SYNC_STATS: 'android.permission.READ_SYNC_STATS',
READ_USER_DICTIONARY: 'android.permission.READ_USER_DICTIONARY',
READ_VOICEMAIL: 'com.android.voicemail.permission.READ_VOICEMAIL',
REBOOT: 'android.permission.REBOOT',
RECEIVE_BOOT_COMPLETED: 'android.permission.RECEIVE_BOOT_COMPLETED',
RECEIVE_MMS: 'android.permission.RECEIVE_MMS',
RECEIVE_SMS: 'android.permission.RECEIVE_SMS',
RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',
RECORD_AUDIO: 'android.permission.RECORD_AUDIO',
REORDER_TASKS: 'android.permission.REORDER_TASKS',
RESTART_PACKAGES: 'android.permission.RESTART_PACKAGES',
SEND_RESPOND_VIA_MESSAGE: 'android.permission.SEND_RESPOND_VIA_MESSAGE',
SEND_SMS: 'android.permission.SEND_SMS',
SET_ACTIVITY_WATCHER: 'android.permission.SET_ACTIVITY_WATCHER',
SET_ALARM: 'com.android.alarm.permission.SET_ALARM',
SET_ALWAYS_FINISH: 'android.permission.SET_ALWAYS_FINISH',
SET_ANIMATION_SCALE: 'android.permission.SET_ANIMATION_SCALE',
SET_DEBUG_APP: 'android.permission.SET_DEBUG_APP',
SET_ORIENTATION: 'android.permission.SET_ORIENTATION',
SET_POINTER_SPEED: 'android.permission.SET_POINTER_SPEED',
SET_PREFERRED_APPLICATIONS: 'android.permission.SET_PREFERRED_APPLICATIONS',
SET_PROCESS_LIMIT: 'android.permission.SET_PROCESS_LIMIT',
SET_TIME: 'android.permission.SET_TIME',
SET_TIME_ZONE: 'android.permission.SET_TIME_ZONE',
SET_WALLPAPER: 'android.permission.SET_WALLPAPER',
SET_WALLPAPER_HINTS: 'android.permission.SET_WALLPAPER_HINTS',
SIGNAL_PERSISTENT_PROCESSES: 'android.permission.SIGNAL_PERSISTENT_PROCESSES',
STATUS_BAR: 'android.permission.STATUS_BAR',
SUBSCRIBED_FEEDS_READ: 'android.permission.SUBSCRIBED_FEEDS_READ',
SUBSCRIBED_FEEDS_WRITE: 'android.permission.SUBSCRIBED_FEEDS_WRITE',
SYSTEM_ALERT_WINDOW: 'android.permission.SYSTEM_ALERT_WINDOW',
TRANSMIT_IR: 'android.permission.TRANSMIT_IR',
UNINSTALL_SHORTCUT: 'com.android.launcher.permission.UNINSTALL_SHORTCUT',
UPDATE_DEVICE_STATS: 'android.permission.UPDATE_DEVICE_STATS',
USE_CREDENTIALS: 'android.permission.USE_CREDENTIALS',
USE_SIP: 'android.permission.USE_SIP',
VIBRATE: 'android.permission.VIBRATE',
WAKE_LOCK: 'android.permission.WAKE_LOCK',
WRITE_APN_SETTINGS: 'android.permission.WRITE_APN_SETTINGS',
WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',
WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',
WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',
WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
WRITE_GSERVICES: 'android.permission.WRITE_GSERVICES',
WRITE_HISTORY_BOOKMARKS: 'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS',
WRITE_PROFILE: 'android.permission.WRITE_PROFILE',
WRITE_SECURE_SETTINGS: 'android.permission.WRITE_SECURE_SETTINGS',
WRITE_SETTINGS: 'android.permission.WRITE_SETTINGS',
WRITE_SMS: 'android.permission.WRITE_SMS',
WRITE_SOCIAL_STREAM: 'android.permission.WRITE_SOCIAL_STREAM',
WRITE_SYNC_SETTINGS: 'android.permission.WRITE_SYNC_SETTINGS',
WRITE_USER_DICTIONARY: 'android.permission.WRITE_USER_DICTIONARY',
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL',
};
/**
* Check permission
* @param permission {string} The name of the permission
* @return {Promise<any>} Returns a promise
*/
@Cordova()
checkPermission(permission: string): Promise<any> { return; }
/**
* Request permission
* @param permission {string} The name of the permission to request
* @return {Promise<any>}
*/
@Cordova()
requestPermission(permission: string): Promise<any> { return; }
/**
* Request permissions
* @param permissions {Array<Sstring>} An array with permissions
* @return {Promise<any>} Returns a promise
*/
@Cordova()
requestPermissions(permissions: string[]): Promise<any> { return; }
/**
* This function still works now, will not support in the future.
* @param permission {string} The name of the permission
* @return {Promise<any>} Returns a promise
*/
@Cordova()
hasPermission(permission: string): Promise<any> { return; }
}

View File

@ -0,0 +1,42 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name App Minimize
* @description
* AppMinimize is a plugin to minimize the application on android devices
*
* @usage
* ```typescript
* import { AppMinimize } from '@ionic-native/app-minimize';
*
*
* constructor(private appMinimize: AppMinimize) { }
*
* ...
*
* this.plugin.minimize().then(
* success => console.log('Closed'),
* err => console.log('Something went wrong')
* );
*
* ```
*/
@Plugin({
pluginName: 'AppMinimize',
plugin: 'https://github.com/tomloprod/cordova-plugin-appminimize.git',
pluginRef: 'plugins.appMinimize',
repo: 'https://github.com/tomloprod/cordova-plugin-appminimize',
platforms: ['Android']
})
@Injectable()
export class AppMinimize extends IonicNativePlugin {
/**
* Minimizes the application
* @return {Promise<any>}
*/
@Cordova()
minimize(): Promise<any> { return; }
}

View File

@ -11,11 +11,12 @@ import { Injectable } from '@angular/core';
* ```typescript * ```typescript
* import { AppPreferences } from '@ionic-native/app-preferences'; * import { AppPreferences } from '@ionic-native/app-preferences';
* *
* constructor(private appPreferences: AppPreferences) { * constructor(private appPreferences: AppPreferences) { }
*
* ...
* *
* this.appPreferences.fetch('key').then((res) => { console.log(res); }); * this.appPreferences.fetch('key').then((res) => { console.log(res); });
* *
* }
* ``` * ```
* *
*/ */
@ -46,13 +47,13 @@ export class AppPreferences extends IonicNativePlugin {
* *
* @param {string} dict Dictionary for key (OPTIONAL) * @param {string} dict Dictionary for key (OPTIONAL)
* @param {string} key Key * @param {string} key Key
* @param {string} value Value * @param {any} value Value
* @return {Promise<any>} Returns a promise * @return {Promise<any>} Returns a promise
*/ */
@Cordova({ @Cordova({
callbackOrder: 'reverse' callbackOrder: 'reverse'
}) })
store(dict: string, key: string, value?: string): Promise<any> { store(dict: string, key: string, value?: any): Promise<any> {
return; return;
} }

View File

@ -1,9 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
declare var window;
export interface AppRatePreferences { export interface AppRatePreferences {
/** /**
@ -110,11 +107,23 @@ export interface AppUrls {
* constructor(private appRate: AppRate) { } * constructor(private appRate: AppRate) { }
* *
* ... * ...
* * // set certain preferences
* this.appRate.preferences.storeAppURL = { * this.appRate.preferences.storeAppURL = {
* ios: '<my_app_id>', * ios: '<app_id>',
* android: 'market://details?id=<package_name>', * android: 'market://details?id=<package_name>',
* windows: 'ms-windows-store://review/?ProductId=<Store_ID>' * windows: 'ms-windows-store://review/?ProductId=<store_id>'
* };
*
* this.appRate.promptForRating(true);
*
* // or, override the whole preferences object
* this.appRate.preferences = {
* usesUntilPrompt: 3,
* storeAppURL: {
* ios: '<app_id>',
* android: 'market://details?id=<package_name>',
* windows: 'ms-windows-store://review/?ProductId=<store_id>'
* }
* }; * };
* *
* this.appRate.promptForRating(false); * this.appRate.promptForRating(false);

View File

@ -19,7 +19,7 @@ import { Injectable } from '@angular/core';
* *
* Then use the following code: * Then use the following code:
* *
* ``` * ```typescript
* import { AppUpdate } from '@ionic-native/app-update'; * import { AppUpdate } from '@ionic-native/app-update';
* *
* constructor(private appUpdate: AppUpdate) { * constructor(private appUpdate: AppUpdate) {
@ -28,8 +28,6 @@ import { Injectable } from '@angular/core';
* this.appUpdate.checkAppUpdate(updateUrl); * this.appUpdate.checkAppUpdate(updateUrl);
* *
* } * }
*
*
* ``` * ```
* *
* The plugin will compare the app version and update it automatically if the API has a newer version to install. * The plugin will compare the app version and update it automatically if the API has a newer version to install.
@ -53,4 +51,3 @@ export class AppUpdate extends IonicNativePlugin {
}) })
checkAppUpdate(updateUrl: string): Promise<any> { return; } checkAppUpdate(updateUrl: string): Promise<any> { return; }
} }

View File

@ -8,7 +8,7 @@ import { Injectable } from '@angular/core';
* Plugin to serve ads through native Appodeal SDKs * Plugin to serve ads through native Appodeal SDKs
* *
* @usage * @usage
* ``` * ```typescript
* import { Appodeal } from '@ionic-native/appodeal'; * import { Appodeal } from '@ionic-native/appodeal';
* *
* constructor(private appodeal: Appodeal) { * constructor(private appodeal: Appodeal) {
@ -18,9 +18,6 @@ import { Injectable } from '@angular/core';
* appodeal.show(appodeal.AD_TYPES.REWARDED_VIDEO); * appodeal.show(appodeal.AD_TYPES.REWARDED_VIDEO);
* *
* } * }
*
*
*
* ``` * ```
*/ */
@Plugin({ @Plugin({
@ -28,7 +25,7 @@ import { Injectable } from '@angular/core';
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin', plugin: 'https://github.com/appodeal/appodeal-cordova-plugin',
pluginRef: 'Appodeal', pluginRef: 'Appodeal',
repo: 'https://github.com/appodeal/appodeal-cordova-plugin.git', repo: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
platforms: [ 'iOS', 'Android' ] platforms: ['iOS', 'Android']
}) })
@Injectable() @Injectable()
export class Appodeal extends IonicNativePlugin { export class Appodeal extends IonicNativePlugin {
@ -49,7 +46,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType * @param {number} adType
*/ */
@Cordova() @Cordova()
initialize(appKey: string, adType: number): void {}; initialize(appKey: string, adType: number): void { };
/** /**
* check if SDK has been initialized * check if SDK has been initialized
@ -83,14 +80,14 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType * @param {number} adType
*/ */
@Cordova() @Cordova()
hide(adType: number): void {}; hide(adType: number): void { };
/** /**
* confirm use of ads of specified type * confirm use of ads of specified type
* @param {number} adType * @param {number} adType
*/ */
@Cordova() @Cordova()
confirm(adType: number): void {}; confirm(adType: number): void { };
/** /**
* check if ad of specified type has been loaded * check if ad of specified type has been loaded
@ -114,69 +111,69 @@ export class Appodeal extends IonicNativePlugin {
* @param autoCache * @param autoCache
*/ */
@Cordova() @Cordova()
setAutoCache(adType: number, autoCache: any): void {}; setAutoCache(adType: number, autoCache: any): void { };
/** /**
* forcefully cache an ad by type * forcefully cache an ad by type
* @param {number} adType * @param {number} adType
*/ */
@Cordova() @Cordova()
cache(adType: number): void {}; cache(adType: number): void { };
/** /**
* *
* @param {boolean} set * @param {boolean} set
*/ */
@Cordova() @Cordova()
setOnLoadedTriggerBoth(set: boolean): void {}; setOnLoadedTriggerBoth(set: boolean): void { };
/** /**
* enable or disable Smart Banners * enable or disable Smart Banners
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
setSmartBanners(enabled: boolean): void {}; setSmartBanners(enabled: boolean): void { };
/** /**
* enable or disable banner backgrounds * enable or disable banner backgrounds
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
setBannerBackground(enabled: boolean): void {}; setBannerBackground(enabled: boolean): void { };
/** /**
* enable or disable banner animations * enable or disable banner animations
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
setBannerAnimation(enabled: boolean): void {}; setBannerAnimation(enabled: boolean): void { };
/** /**
* *
* @param value * @param value
*/ */
@Cordova() @Cordova()
set728x90Banners(value: any): void {}; set728x90Banners(value: any): void { };
/** /**
* enable or disable logging * enable or disable logging
* @param {boolean} logging * @param {boolean} logging
*/ */
@Cordova() @Cordova()
setLogging(logging: boolean): void {}; setLogging(logging: boolean): void { };
/** /**
* enable or disable testing mode * enable or disable testing mode
* @param {boolean} testing * @param {boolean} testing
*/ */
@Cordova() @Cordova()
setTesting(testing: boolean): void {}; setTesting(testing: boolean): void { };
/** /**
* reset device ID * reset device ID
*/ */
@Cordova() @Cordova()
resetUUID(): void {}; resetUUID(): void { };
/** /**
* get version of Appdeal SDK * get version of Appdeal SDK
@ -190,7 +187,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType * @param {number} adType
*/ */
@Cordova() @Cordova()
disableNetwork(network?: string, adType?: number): void {}; disableNetwork(network?: string, adType?: number): void { };
/** /**
* *
@ -198,54 +195,54 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType * @param {number} adType
*/ */
@Cordova() @Cordova()
disableNetworkType(network?: string, adType?: number): void {}; disableNetworkType(network?: string, adType?: number): void { };
/** /**
* disable Location permissions for Appodeal SDK * disable Location permissions for Appodeal SDK
*/ */
@Cordova() @Cordova()
disableLocationPermissionCheck(): void {}; disableLocationPermissionCheck(): void { };
/** /**
* disable Storage permissions for Appodeal SDK * disable Storage permissions for Appodeal SDK
*/ */
@Cordova() @Cordova()
disableWriteExternalStoragePermissionCheck(): void {}; disableWriteExternalStoragePermissionCheck(): void { };
/** /**
* enable event listeners * enable event listeners
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
enableInterstitialCallbacks(enabled: boolean): void {}; enableInterstitialCallbacks(enabled: boolean): void { };
/** /**
* enable event listeners * enable event listeners
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
enableSkippableVideoCallbacks(enabled: boolean): void {}; enableSkippableVideoCallbacks(enabled: boolean): void { };
/** /**
* enable event listeners * enable event listeners
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
enableNonSkippableVideoCallbacks(enabled: boolean): void {}; enableNonSkippableVideoCallbacks(enabled: boolean): void { };
/** /**
* enable event listeners * enable event listeners
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
enableBannerCallbacks(enabled: boolean): void {}; enableBannerCallbacks(enabled: boolean): void { };
/** /**
* enable event listeners * enable event listeners
* @param {boolean} enabled * @param {boolean} enabled
*/ */
@Cordova() @Cordova()
enableRewardedVideoCallbacks(enabled: boolean): void {}; enableRewardedVideoCallbacks(enabled: boolean): void { };
/** /**
* *
@ -253,7 +250,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {boolean} value * @param {boolean} value
*/ */
@Cordova() @Cordova()
setCustomBooleanRule(name: string, value: boolean): void {}; setCustomBooleanRule(name: string, value: boolean): void { };
/** /**
* *
@ -261,7 +258,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} value * @param {number} value
*/ */
@Cordova() @Cordova()
setCustomIntegerRule(name: string, value: number): void {}; setCustomIntegerRule(name: string, value: number): void { };
/** /**
* set rule with float value * set rule with float value
@ -269,7 +266,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} value * @param {number} value
*/ */
@Cordova() @Cordova()
setCustomDoubleRule(name: string, value: number): void {}; setCustomDoubleRule(name: string, value: number): void { };
/** /**
* set rule with string value * set rule with string value
@ -277,77 +274,77 @@ export class Appodeal extends IonicNativePlugin {
* @param {string} value * @param {string} value
*/ */
@Cordova() @Cordova()
setCustomStringRule(name: string, value: string): void {}; setCustomStringRule(name: string, value: string): void { };
/** /**
* set ID preference in Appodeal for current user * set ID preference in Appodeal for current user
* @param id * @param id
*/ */
@Cordova() @Cordova()
setUserId(id: any): void {}; setUserId(id: any): void { };
/** /**
* set Email preference in Appodeal for current user * set Email preference in Appodeal for current user
* @param email * @param email
*/ */
@Cordova() @Cordova()
setEmail(email: any): void {}; setEmail(email: any): void { };
/** /**
* set Birthday preference in Appodeal for current user * set Birthday preference in Appodeal for current user
* @param birthday * @param birthday
*/ */
@Cordova() @Cordova()
setBirthday(birthday: any): void {}; setBirthday(birthday: any): void { };
/** /**
* et Age preference in Appodeal for current user * et Age preference in Appodeal for current user
* @param age * @param age
*/ */
@Cordova() @Cordova()
setAge(age: any): void {}; setAge(age: any): void { };
/** /**
* set Gender preference in Appodeal for current user * set Gender preference in Appodeal for current user
* @param gender * @param gender
*/ */
@Cordova() @Cordova()
setGender(gender: any): void {}; setGender(gender: any): void { };
/** /**
* set Occupation preference in Appodeal for current user * set Occupation preference in Appodeal for current user
* @param occupation * @param occupation
*/ */
@Cordova() @Cordova()
setOccupation(occupation: any): void {}; setOccupation(occupation: any): void { };
/** /**
* set Relation preference in Appodeal for current user * set Relation preference in Appodeal for current user
* @param relation * @param relation
*/ */
@Cordova() @Cordova()
setRelation(relation: any): void {}; setRelation(relation: any): void { };
/** /**
* set Smoking preference in Appodeal for current user * set Smoking preference in Appodeal for current user
* @param smoking * @param smoking
*/ */
@Cordova() @Cordova()
setSmoking(smoking: any): void {}; setSmoking(smoking: any): void { };
/** /**
* set Alcohol preference in Appodeal for current user * set Alcohol preference in Appodeal for current user
* @param alcohol * @param alcohol
*/ */
@Cordova() @Cordova()
setAlcohol(alcohol: any): void {}; setAlcohol(alcohol: any): void { };
/** /**
* set Interests preference in Appodeal for current user * set Interests preference in Appodeal for current user
* @param interests * @param interests
*/ */
@Cordova() @Cordova()
setInterests(interests: any): void {}; setInterests(interests: any): void { };
@Cordova({ @Cordova({
eventObservable: true, eventObservable: true,

View File

@ -0,0 +1,47 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Autostart
* @description
* This plugin will start automatically your Android app after the every boot or the auto-update of your application.
* You can enable or disable the autostart function in your app.
*
* @usage
* ```typescript
* import { Autostart } from '@ionic-native/autostart';
*
*
* constructor(private autostart: Autostart) { }
*
* ...
*
* this.autostart.enable();
*
* this.autostart.disable();
*
* ```
*/
@Plugin({
pluginName: 'Autostart',
plugin: 'cordova-plugin-autostart',
pluginRef: 'cordova.plugins.autoStart',
repo: 'https://github.com/ToniKorin/cordova-plugin-autostart',
platforms: ['Android']
})
@Injectable()
export class Autostart extends IonicNativePlugin {
/**
* Enable the automatic startup after the boot
*/
@Cordova({ sync: true })
enable(): void { }
/**
* Disable the automatic startup after the boot
*/
@Cordova({ sync: true })
disable(): void { }
}

View File

@ -1,9 +1,6 @@
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
declare var window;
export interface BackgroundFetchConfig { export interface BackgroundFetchConfig {
/** /**

View File

@ -2,8 +2,6 @@ import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
declare var window;
export interface BackgroundGeolocationResponse { export interface BackgroundGeolocationResponse {
/** /**
@ -448,13 +446,13 @@ export class BackgroundGeolocation extends IonicNativePlugin {
/** /**
* Display app settings to change permissions * Display app settings to change permissions
*/ */
@Cordova({sync: true}) @Cordova({ sync: true })
showAppSettings(): void { } showAppSettings(): void { }
/** /**
* Display device location settings * Display device location settings
*/ */
@Cordova({sync: true}) @Cordova({ sync: true })
showLocationSettings(): void { } showLocationSettings(): void { }
/** /**

View File

@ -148,7 +148,16 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'], platforms: ['Android'],
sync: true sync: true
}) })
moveToBackground(): void {} moveToBackground(): void { }
/**
* Enable GPS-tracking in background (Android).
*/
@Cordova({
platforms: ['Android'],
sync: true
})
disableWebViewOptimizations (): void { }
/** /**
* Android allows to programmatically move from background to foreground. * Android allows to programmatically move from background to foreground.
@ -157,7 +166,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'], platforms: ['Android'],
sync: true sync: true
}) })
moveToForeground(): void {} moveToForeground(): void { }
/** /**
* Override the back button on Android to go to background instead of closing the app. * Override the back button on Android to go to background instead of closing the app.
@ -166,7 +175,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'], platforms: ['Android'],
sync: true sync: true
}) })
overrideBackButton(): void {} overrideBackButton(): void { }
/** /**
* Exclude the app from the recent task list works on Android 5.0+. * Exclude the app from the recent task list works on Android 5.0+.
@ -175,7 +184,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'], platforms: ['Android'],
sync: true sync: true
}) })
excludeFromTaskList(): void {} excludeFromTaskList(): void { }
/** /**
* The method works async instead of isActive() or isEnabled(). * The method works async instead of isActive() or isEnabled().
@ -192,7 +201,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'], platforms: ['Android'],
sync: true sync: true
}) })
wakeUp(): void {} wakeUp(): void { }
/** /**
* Turn screen on and show app even locked * Turn screen on and show app even locked
@ -201,6 +210,6 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'], platforms: ['Android'],
sync: true sync: true
}) })
unlock(): void {} unlock(): void { }
} }

View File

@ -9,7 +9,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* This plugin adds turning on/off the device backlight. * This plugin adds turning on/off the device backlight.
* *
* @usage * @usage
* ``` * ```typescript
* import { Backlight } from '@ionic-native/backlight'; * import { Backlight } from '@ionic-native/backlight';
* *
* constructor(private backlight: Backlight) { } * constructor(private backlight: Backlight) { }

View File

@ -1,7 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface BarcodeScannerOptions { export interface BarcodeScannerOptions {
/** /**
@ -56,6 +55,12 @@ export interface BarcodeScannerOptions {
} }
export interface BarcodeScanResult {
format: 'QR_CODE' | 'DATA_MATRIX' | 'UPC_E' | 'UPC_A' | 'EAN_8' | 'EAN_13' | 'CODE_128' | 'CODE_39' | 'CODE_93' | 'CODABAR' | 'ITF' | 'RSS14' | 'RSS_EXPANDED' | 'PDF417' | 'AZTEC' | 'MSI';
cancelled: boolean;
text: string;
}
/** /**
* @name Barcode Scanner * @name Barcode Scanner
* @description * @description
@ -80,6 +85,7 @@ export interface BarcodeScannerOptions {
* ``` * ```
* @interfaces * @interfaces
* BarcodeScannerOptions * BarcodeScannerOptions
* BarcodeScanResult
*/ */
@Plugin({ @Plugin({
pluginName: 'BarcodeScanner', pluginName: 'BarcodeScanner',
@ -111,7 +117,7 @@ export class BarcodeScanner extends IonicNativePlugin {
@Cordova({ @Cordova({
callbackOrder: 'reverse' callbackOrder: 'reverse'
}) })
scan(options?: BarcodeScannerOptions): Promise<any> { return; } scan(options?: BarcodeScannerOptions): Promise<BarcodeScanResult> { return; }
/** /**
* Encodes data into a barcode. * Encodes data into a barcode.

View File

@ -40,7 +40,7 @@ export class Base64ToGallery extends IonicNativePlugin {
successIndex: 2, successIndex: 2,
errorIndex: 3 errorIndex: 3
}) })
base64ToGallery(data: string, options?: {prefix?: string; mediaScanner?: boolean}): Promise<any> { base64ToGallery(data: string, options?: { prefix?: string; mediaScanner?: boolean }): Promise<any> {
return; return;
} }

View File

@ -35,59 +35,59 @@ import { Observable } from 'rxjs/Observable';
* *
* ```typescript * ```typescript
* { * {
* "name": "Battery Demo", * 'name': 'Battery Demo',
* "id": "20:FF:D0:FF:D1:C0", * 'id': '20:FF:D0:FF:D1:C0',
* "advertising": [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121], * 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
* "rssi": -55 * 'rssi': -55
* } * }
* ``` * ```
* After connecting, the peripheral object also includes service, characteristic and descriptor information. * After connecting, the peripheral object also includes service, characteristic and descriptor information.
* *
* ```typescript * ```typescript
* { * {
* "name": "Battery Demo", * 'name': 'Battery Demo',
* "id": "20:FF:D0:FF:D1:C0", * 'id': '20:FF:D0:FF:D1:C0',
* "advertising": [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121], * 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
* "rssi": -55, * 'rssi': -55,
* "services": [ * 'services': [
* "1800", * '1800',
* "1801", * '1801',
* "180f" * '180f'
* ], * ],
* "characteristics": [ * 'characteristics': [
* { * {
* "service": "1800", * 'service': '1800',
* "characteristic": "2a00", * 'characteristic': '2a00',
* "properties": [ * 'properties': [
* "Read" * 'Read'
* ] * ]
* }, * },
* { * {
* "service": "1800", * 'service': '1800',
* "characteristic": "2a01", * 'characteristic': '2a01',
* "properties": [ * 'properties': [
* "Read" * 'Read'
* ] * ]
* }, * },
* { * {
* "service": "1801", * 'service': '1801',
* "characteristic": "2a05", * 'characteristic': '2a05',
* "properties": [ * 'properties': [
* "Read" * 'Read'
* ] * ]
* }, * },
* { * {
* "service": "180f", * 'service': '180f',
* "characteristic": "2a19", * 'characteristic': '2a19',
* "properties": [ * 'properties': [
* "Read" * 'Read'
* ], * ],
* "descriptors": [ * 'descriptors': [
* { * {
* "uuid": "2901" * 'uuid': '2901'
* }, * },
* { * {
* "uuid": "2904" * 'uuid': '2904'
* } * }
* ] * ]
* } * }
@ -104,10 +104,10 @@ import { Observable } from 'rxjs/Observable';
* *
* ```typescript * ```typescript
* { * {
* "name": "demo", * 'name': 'demo',
* "id": "00:1A:7D:DA:71:13", * 'id': '00:1A:7D:DA:71:13',
* "advertising": ArrayBuffer, * 'advertising': ArrayBuffer,
* "rssi": -37 * 'rssi': -37
* } * }
* ``` * ```
* *
@ -119,24 +119,24 @@ import { Observable } from 'rxjs/Observable';
* *
* ```typescript * ```typescript
* { * {
* "name": "demo", * 'name': 'demo',
* "id": "D8479A4F-7517-BCD3-91B5-3302B2F81802", * 'id': 'D8479A4F-7517-BCD3-91B5-3302B2F81802',
* "advertising": { * 'advertising': {
* "kCBAdvDataChannel": 37, * 'kCBAdvDataChannel': 37,
* "kCBAdvDataServiceData": { * 'kCBAdvDataServiceData': {
* "FED8": { * 'FED8': {
* "byteLength": 7 // data not shown * 'byteLength': 7 // data not shown
* } * }
* }, * },
* "kCBAdvDataLocalName": "demo", * 'kCBAdvDataLocalName': 'demo',
* "kCBAdvDataServiceUUIDs": ["FED8"], * 'kCBAdvDataServiceUUIDs': ['FED8'],
* "kCBAdvDataManufacturerData": { * 'kCBAdvDataManufacturerData': {
* "byteLength": 7 // data not shown * 'byteLength': 7 // data not shown
* }, * },
* "kCBAdvDataTxPowerLevel": 32, * 'kCBAdvDataTxPowerLevel': 32,
* "kCBAdvDataIsConnectable": true * 'kCBAdvDataIsConnectable': true
* }, * },
* "rssi": -53 * 'rssi': -53
* } * }
* ``` * ```
* *
@ -230,7 +230,7 @@ export class BLE extends IonicNativePlugin {
clearFunction: 'stopScan', clearFunction: 'stopScan',
clearWithArgs: false clearWithArgs: false
}) })
startScanWithOptions(services: string[], options: {reportDuplicates?: boolean} | any): Observable<any> { return; } startScanWithOptions(services: string[], options: { reportDuplicates?: boolean } | any): Observable<any> { return; }
/** /**
* Stop a scan started by `startScan`. * Stop a scan started by `startScan`.
@ -306,14 +306,14 @@ export class BLE extends IonicNativePlugin {
* // send 1 byte to switch a light on * // send 1 byte to switch a light on
* var data = new Uint8Array(1); * var data = new Uint8Array(1);
* data[0] = 1; * data[0] = 1;
* BLE.write(device_id, "FF10", "FF11", data.buffer); * BLE.write(device_id, 'FF10', 'FF11', data.buffer);
* *
* // send a 3 byte value with RGB color * // send a 3 byte value with RGB color
* var data = new Uint8Array(3); * var data = new Uint8Array(3);
* data[0] = 0xFF; // red * data[0] = 0xFF; // red
* data[0] = 0x00; // green * data[0] = 0x00; // green
* data[0] = 0xFF; // blue * data[0] = 0xFF; // blue
* BLE.write(device_id, "ccc0", "ccc1", data.buffer); * BLE.write(device_id, 'ccc0', 'ccc1', data.buffer);
* *
* // send a 32 bit integer * // send a 32 bit integer
* var data = new Uint32Array(1); * var data = new Uint32Array(1);
@ -357,7 +357,7 @@ export class BLE extends IonicNativePlugin {
* *
* @usage * @usage
* ``` * ```
* BLE.startNotification(device_id, "FF10", "FF11").subscribe(buffer => { * BLE.startNotification(device_id, 'FF10', 'FF11').subscribe(buffer => {
* console.log(String.fromCharCode.apply(null, new Uint8Array(buffer)); * console.log(String.fromCharCode.apply(null, new Uint8Array(buffer));
* }); * });
* ``` * ```

View File

@ -13,7 +13,7 @@ import { Observable } from 'rxjs/Observable';
* *
* *
* // Write a string * // Write a string
* this.bluetoothSerial.write("hello world").then(success, failure); * this.bluetoothSerial.write('hello world').then(success, failure);
* *
* // Array of int or bytes * // Array of int or bytes
* this.bluetoothSerial.write([186, 220, 222]).then(success, failure); * this.bluetoothSerial.write([186, 220, 222]).then(success, failure);

View File

@ -1,6 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/** /**
* @name Brightness * @name Brightness
* @description * @description

View File

@ -8,7 +8,7 @@ import { Observable } from 'rxjs/Observable';
* This plugin adds exchanging events between native code and your app. * This plugin adds exchanging events between native code and your app.
* *
* @usage * @usage
* ``` * ```typescript
* import { Broadcaster } from '@ionic-native/broadcaster'; * import { Broadcaster } from '@ionic-native/broadcaster';
* *
* constructor(private broadcaster: Broadcaster) { } * constructor(private broadcaster: Broadcaster) { }
@ -16,7 +16,7 @@ import { Observable } from 'rxjs/Observable';
* ... * ...
* *
* // Listen to events from Native * // Listen to events from Native
* this.broadcaster.addEventListener('eventName').then((event) => console.log(event)); * this.broadcaster.addEventListener('eventName').subscribe((event) => console.log(event));
* *
* // Send event to Native * // Send event to Native
* this.broadcaster.fireNativeEvent('eventName', {}).then(() => console.log('success')); * this.broadcaster.fireNativeEvent('eventName', {}).then(() => console.log('success'));

View File

@ -7,7 +7,7 @@ import { Injectable } from '@angular/core';
* 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. * 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.
* *
* @usage * @usage
* ``` * ```typescript
* import { BrowserTab } from '@ionic-native/browser-tab'; * import { BrowserTab } from '@ionic-native/browser-tab';
* *
* constructor(private browserTab: BrowserTab) { * constructor(private browserTab: BrowserTab) {

View File

@ -59,7 +59,7 @@ export interface CalendarOptions {
* *
* *
* @usage * @usage
* ``` * ```typescript
* import { Calendar } from '@ionic-native/calendar'; * import { Calendar } from '@ionic-native/calendar';
* *
* constructor(private calendar: Calendar) { } * constructor(private calendar: Calendar) { }

View File

@ -6,7 +6,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* Call a number directly from your Cordova/Ionic application. * Call a number directly from your Cordova/Ionic application.
* *
* @usage * @usage
* ``` * ```typescript
* import { CallNumber } from '@ionic-native/call-number'; * import { CallNumber } from '@ionic-native/call-number';
* *
* constructor(private callNumber: CallNumber) { } * constructor(private callNumber: CallNumber) { }

View File

@ -57,7 +57,7 @@ export interface CameraPreviewPictureOptions {
* *
* @usage * @usage
* ```typescript * ```typescript
* import { CameraPreview, PictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview'; * import { CameraPreview, CameraPreviewPictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview';
* *
* constructor(private cameraPreview: CameraPreview) { } * constructor(private cameraPreview: CameraPreview) { }
* *
@ -93,7 +93,7 @@ export interface CameraPreviewPictureOptions {
* *
* *
* // picture options * // picture options
* const pictureOpts: PictureOptions = { * const pictureOpts: CameraPreviewPictureOptions = {
* width: 1280, * width: 1280,
* height: 1280, * height: 1280,
* quality: 85 * quality: 85
@ -134,7 +134,18 @@ export interface CameraPreviewPictureOptions {
@Injectable() @Injectable()
export class CameraPreview extends IonicNativePlugin { export class CameraPreview extends IonicNativePlugin {
EXPOSURE_MODES = { FOCUS_MODE = {
FIXED: 'fixed',
AUTO: 'auto',
CONTINUOUS: 'continuous', // IOS Only
CONTINUOUS_PICTURE: 'continuous-picture', // Android Only
CONTINUOUS_VIDEO: 'continuous-video', // Android Only
EDOF: 'edof', // Android Only
INFINITY: 'infinity', // Android Only
MACRO: 'macro' // Android Only
};
EXPOSURE_MODE = {
LOCK: 'lock', // IOS Only LOCK: 'lock', // IOS Only
AUTO: 'auto', // IOS Only AUTO: 'auto', // IOS Only
CONTINUOUS: 'continuous', CONTINUOUS: 'continuous',
@ -240,7 +251,7 @@ export class CameraPreview extends IonicNativePlugin {
}) })
setZoom(zoom?: number): Promise<any> { return; } setZoom(zoom?: number): Promise<any> { return; }
/** /**
* Get the maximum zoom (Android) * Get the maximum zoom (Android)
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@ -265,6 +276,38 @@ export class CameraPreview extends IonicNativePlugin {
}) })
setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> { return; } setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> { return; }
/**
* Get focus mode
* @return {Promise<any>}
*/
@Cordova()
getFocusMode(): Promise<any> { return; }
/**
* Set the focus mode
* @param [focusMode] {string} 'fixed', 'auto', 'continuous-picture', 'continuous-video' (iOS & Android), 'edof', 'infinity', 'macro' (Android Only)
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setFocusMode(focusMode?: string): Promise<any> { return; }
/**
* Get supported focus modes
* @return {Promise<any>}
*/
@Cordova()
getSupportedFocusModes(): Promise<any> { return; }
/**
* Get the current flash mode
* @return {Promise<any>}
*/
@Cordova()
getFlashMode(): Promise<any> { return; }
/** /**
* Set the flashmode * Set the flashmode
* @param [flashMode] {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android) * @param [flashMode] {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
@ -276,13 +319,6 @@ export class CameraPreview extends IonicNativePlugin {
}) })
setFlashMode(flashMode?: string): Promise<any> { return; } setFlashMode(flashMode?: string): Promise<any> { return; }
/**
* Get supported picture sizes
* @return {Promise<any>}
*/
@Cordova()
getSupportedPictureSizes(): Promise<any> { return; }
/** /**
* Get supported flash modes * Get supported flash modes
* @return {Promise<any>} * @return {Promise<any>}
@ -290,6 +326,13 @@ export class CameraPreview extends IonicNativePlugin {
@Cordova() @Cordova()
getSupportedFlashModes(): Promise<any> { return; } getSupportedFlashModes(): Promise<any> { return; }
/**
* Get supported picture sizes
* @return {Promise<any>}
*/
@Cordova()
getSupportedPictureSizes(): Promise<any> { return; }
/** /**
* Get exposure mode * Get exposure mode
* @return {Promise<any>} * @return {Promise<any>}
@ -340,4 +383,13 @@ export class CameraPreview extends IonicNativePlugin {
@Cordova() @Cordova()
getExposureCompensationRange(): Promise<any> { return; } getExposureCompensationRange(): Promise<any> { return; }
/**
* Set specific focus point. Note, this assumes the camera is full-screen.
* @param xPoint {number}
* @param yPoint {number}
* @return {Promise<any>}
*/
@Cordova()
tapToFocus(xPoint: number, yPoint: number): Promise<any> { return; }
} }

View File

@ -133,7 +133,7 @@ export interface CardIOResponse {
* @name Card IO * @name Card IO
* @description * @description
* @usage * @usage
* ``` * ```typescript
* import { CardIO } from '@ionic-native/card-io'; * import { CardIO } from '@ionic-native/card-io';
* *
* constructor(private cardIO: CardIO) { } * constructor(private cardIO: CardIO) { }

View File

@ -109,8 +109,8 @@ interface LocalPackage_Static {
} }
/* tslint:enable */ /* tslint:enable */
declare var RemotePackage: RemotePackage_Static; declare const RemotePackage: RemotePackage_Static;
declare var LocalPackage: LocalPackage_Static; declare const LocalPackage: LocalPackage_Static;
/** /**
* Defines the JSON format of the current package information file. * Defines the JSON format of the current package information file.

View File

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability, CordovaCheck, IonicNativePlugin } from '@ionic-native/core'; import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var window: any, declare const window: any,
navigator: any; navigator: any;
export type ContactFieldType = '*' | 'addresses' | 'birthday' | 'categories' | 'country' | 'department' | 'displayName' | 'emails' | 'familyName' | 'formatted' | 'givenName' | 'honorificPrefix' | 'honorificSuffix' | 'id' | 'ims' | 'locality' | 'middleName' | 'name' | 'nickname' | 'note' | 'organizations' | 'phoneNumbers' | 'photos' | 'postalCode' | 'region' | 'streetAddress' | 'title' | 'urls'; export type ContactFieldType = '*' | 'addresses' | 'birthday' | 'categories' | 'country' | 'department' | 'displayName' | 'emails' | 'familyName' | 'formatted' | 'givenName' | 'honorificPrefix' | 'honorificSuffix' | 'id' | 'ims' | 'locality' | 'middleName' | 'name' | 'nickname' | 'note' | 'organizations' | 'phoneNumbers' | 'photos' | 'postalCode' | 'region' | 'streetAddress' | 'title' | 'urls';
@ -49,6 +49,7 @@ export interface IContactProperties {
/** An array of web pages associated with the contact. */ /** An array of web pages associated with the contact. */
urls?: IContactField[]; urls?: IContactField[];
} }
/** /**
@ -71,6 +72,8 @@ export class Contact implements IContactProperties {
@InstanceProperty categories: IContactField[]; @InstanceProperty categories: IContactField[];
@InstanceProperty urls: IContactField[]; @InstanceProperty urls: IContactField[];
[key: string]: any;
constructor() { constructor() {
if (checkAvailability('navigator.contacts', 'create', 'Contacts') === true) { if (checkAvailability('navigator.contacts', 'create', 'Contacts') === true) {
this._objectInstance = navigator.contacts.create(); this._objectInstance = navigator.contacts.create();
@ -79,7 +82,7 @@ export class Contact implements IContactProperties {
@InstanceCheck() @InstanceCheck()
clone(): Contact { clone(): Contact {
let newContact = new Contact(); let newContact: any = new Contact();
for (let prop in this) { for (let prop in this) {
if (prop === 'id') return; if (prop === 'id') return;
newContact[prop] = this[prop]; newContact[prop] = this[prop];
@ -92,8 +95,8 @@ export class Contact implements IContactProperties {
@InstanceCheck() @InstanceCheck()
save(): Promise<any> { save(): Promise<any> {
return getPromise((resolve, reject) => { return getPromise((resolve: Function, reject: Function) => {
this._objectInstance.save((contact) => { this._objectInstance.save((contact: any) => {
this._objectInstance = contact; this._objectInstance = contact;
resolve(this); resolve(this);
}, reject); }, reject);
@ -114,7 +117,7 @@ export interface IContactError {
/** /**
* @hidden * @hidden
*/ */
export declare var ContactError: { export declare const ContactError: {
new (code: number): IContactError; new (code: number): IContactError;
UNKNOWN_ERROR: number; UNKNOWN_ERROR: number;
INVALID_ARGUMENT_ERROR: number; INVALID_ARGUMENT_ERROR: number;
@ -149,7 +152,7 @@ export class ContactName implements IContactName {
public givenName?: string, public givenName?: string,
public middleName?: string, public middleName?: string,
public honorificPrefix?: string, public honorificPrefix?: string,
public honorificSuffix?: string) {} public honorificSuffix?: string) { }
} }
export interface IContactField { export interface IContactField {
@ -167,7 +170,7 @@ export interface IContactField {
export class ContactField implements IContactField { export class ContactField implements IContactField {
constructor(public type?: string, constructor(public type?: string,
public value?: string, public value?: string,
public pref?: boolean) {} public pref?: boolean) { }
} }
export interface IContactAddress { export interface IContactAddress {
@ -200,7 +203,7 @@ export class ContactAddress implements IContactAddress {
public locality?: string, public locality?: string,
public region?: string, public region?: string,
public postalCode?: string, public postalCode?: string,
public country?: string) {} public country?: string) { }
} }
export interface IContactOrganization { export interface IContactOrganization {
@ -226,7 +229,7 @@ export class ContactOrganization implements IContactOrganization {
public department?: string, public department?: string,
public title?: string, public title?: string,
public pref?: boolean public pref?: boolean
) {} ) { }
} }
/** Search options to filter navigator.contacts. */ /** Search options to filter navigator.contacts. */
@ -250,7 +253,7 @@ export class ContactFindOptions implements IContactFindOptions {
constructor(public filter?: string, constructor(public filter?: string,
public multiple?: boolean, public multiple?: boolean,
public desiredFields?: string[], public desiredFields?: string[],
public hasPhoneNumber?: boolean) {} public hasPhoneNumber?: boolean) { }
} }
/** /**
@ -312,8 +315,8 @@ export class Contacts extends IonicNativePlugin {
*/ */
@CordovaCheck() @CordovaCheck()
find(fields: ContactFieldType[], options?: IContactFindOptions): Promise<Contact[]> { find(fields: ContactFieldType[], options?: IContactFindOptions): Promise<Contact[]> {
return getPromise((resolve, reject) => { return getPromise((resolve: Function, reject: Function) => {
navigator.contacts.find(fields, (contacts) => { navigator.contacts.find(fields, (contacts: any[]) => {
resolve(contacts.map(processContact)); resolve(contacts.map(processContact));
}, reject, options); }, reject, options);
}); });
@ -325,8 +328,8 @@ export class Contacts extends IonicNativePlugin {
*/ */
@CordovaCheck() @CordovaCheck()
pickContact(): Promise<Contact> { pickContact(): Promise<Contact> {
return getPromise((resolve, reject) => { return getPromise((resolve: Function, reject: Function) => {
navigator.contacts.pickContact((contact) => resolve(processContact(contact)), reject); navigator.contacts.pickContact((contact: any) => resolve(processContact(contact)), reject);
}); });
} }
@ -335,7 +338,7 @@ export class Contacts extends IonicNativePlugin {
/** /**
* @hidden * @hidden
*/ */
function processContact(contact) { function processContact(contact: any) {
let newContact = new Contact(); let newContact = new Contact();
for (let prop in contact) { for (let prop in contact) {
if (typeof contact[prop] === 'function') continue; if (typeof contact[prop] === 'function') continue;

View File

@ -8,7 +8,7 @@ import { Injectable } from '@angular/core';
* Plugin to install Couchbase Lite in your PhoneGap app on iOS or Android * Plugin to install Couchbase Lite in your PhoneGap app on iOS or Android
* *
* @usage * @usage
* ``` * ```typescript
* import { CouchbaseLite } from '@ionic-native/couchbase-lite'; * import { CouchbaseLite } from '@ionic-native/couchbase-lite';
* *
* constructor(private couchbase: CouchbaseLite) { * constructor(private couchbase: CouchbaseLite) {

View File

@ -5,7 +5,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* @name Crop * @name Crop
* @description Crops images * @description Crops images
* @usage * @usage
* ``` * ```typescript
* import { Crop } from '@ionic-native/crop'; * import { Crop } from '@ionic-native/crop';
* *
* constructor(private crop: Crop) { } * constructor(private crop: Crop) { }
@ -14,8 +14,8 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* *
* this.crop.crop('path/to/image.jpg', {quality: 75}) * this.crop.crop('path/to/image.jpg', {quality: 75})
* .then( * .then(
* newImage => console.log("new image path is: " + newImage), * newImage => console.log('new image path is: ' + newImage),
* error => console.error("Error cropping image", error) * error => console.error('Error cropping image', error)
* ); * );
* ``` * ```
*/ */
@ -38,6 +38,6 @@ export class Crop extends IonicNativePlugin {
@Cordova({ @Cordova({
callbackOrder: 'reverse' callbackOrder: 'reverse'
}) })
crop(pathToImage: string, options?: {quality: number}): Promise<string> { return; } crop(pathToImage: string, options?: { quality: number }): Promise<string> { return; }
} }

View File

@ -98,7 +98,7 @@ export class Deeplinks extends IonicNativePlugin {
@Cordova({ @Cordova({
observable: true observable: true
}) })
route(paths): Observable<DeeplinkMatch> { return; } route(paths: any): Observable<DeeplinkMatch> { return; }
/** /**
* *
@ -121,6 +121,6 @@ export class Deeplinks extends IonicNativePlugin {
@Cordova({ @Cordova({
observable: true observable: true
}) })
routeWithNavController(navController, paths): Observable<DeeplinkMatch> { return; } routeWithNavController(navController: any, paths: any): Observable<DeeplinkMatch> { return; }
} }

View File

@ -7,7 +7,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* Plugin that lets you provide haptic or acoustic feedback on Android devices. * Plugin that lets you provide haptic or acoustic feedback on Android devices.
* *
* @usage * @usage
* ``` * ```typescript
* import { DeviceFeedback } from '@ionic-native/device-feedback'; * import { DeviceFeedback } from '@ionic-native/device-feedback';
* *
* constructor(private deviceFeedback: DeviceFeedback) { } * constructor(private deviceFeedback: DeviceFeedback) { }

View File

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
declare var window: any; declare const window: any;
/** /**
* @name Device * @name Device

View File

@ -144,10 +144,12 @@ export class Diagnostic extends IonicNativePlugin {
/** /**
* Checks if the device has a camera. On Android this returns true if the device has a camera. On iOS this returns true if both the device has a camera AND the application is authorized to use it. On Windows 10 Mobile this returns true if both the device has a rear-facing camera AND the * Checks if the device has a camera. On Android this returns true if the device has a camera. On iOS this returns true if both the device has a camera AND the application is authorized to use it. On Windows 10 Mobile this returns true if both the device has a rear-facing camera AND the
* application is authorized to use it. * application is authorized to use it.
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova() @Cordova({ callbackOrder: 'reverse' })
isCameraAvailable(): Promise<any> { return; } isCameraAvailable( externalStorage?: boolean ): Promise<any> { return; }
/** /**
* Checks if the device has Bluetooth capabilities and if so that Bluetooth is switched on (same on Android, iOS and Windows 10 Mobile) * Checks if the device has Bluetooth capabilities and if so that Bluetooth is switched on (same on Android, iOS and Windows 10 Mobile)
@ -251,24 +253,30 @@ export class Diagnostic extends IonicNativePlugin {
/** /**
* Checks if the application is authorized to use the camera. * Checks if the application is authorized to use the camera.
* Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return TRUE as permissions are already granted at installation time. * Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return TRUE as permissions are already granted at installation time.
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova({ platforms: ['Android', 'iOS'] }) @Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
isCameraAuthorized(): Promise<any> { return; } isCameraAuthorized( externalStorage?: boolean ): Promise<any> { return; }
/** /**
* Returns the camera authorization status for the application. * Returns the camera authorization status for the application.
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova({ platforms: ['Android', 'iOS'] }) @Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
getCameraAuthorizationStatus(): Promise<any> { return; } getCameraAuthorizationStatus( externalStorage?: boolean ): Promise<any> { return; }
/** /**
* Requests camera authorization for the application. * Requests camera authorization for the application.
* @param {boolean} [externalStorage] Android only: If true, requests permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova({ platforms: ['Android', 'iOS'] }) @Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
requestCameraAuthorization(): Promise<any> { return; } requestCameraAuthorization( externalStorage?: boolean ): Promise<any> { return; }
/** /**
* Checks if the application is authorized to use the microphone. * Checks if the application is authorized to use the microphone.
@ -614,10 +622,10 @@ export class Diagnostic extends IonicNativePlugin {
/** /**
* Returns the authorization status for the application to use the Camera Roll in Photos app. * Returns the authorization status for the application to use the Camera Roll in Photos app.
* @returns {Promise<boolean>} * @returns {Promise<string>}
*/ */
@Cordova({ platforms: ['iOS'] }) @Cordova({ platforms: ['iOS'] })
getCameraRollAuthorizationStatus(): Promise<boolean> { return; } getCameraRollAuthorizationStatus(): Promise<string> { return; }
/** /**
* Requests camera roll authorization for the application. * Requests camera roll authorization for the application.

View File

@ -75,7 +75,7 @@ export class Dialogs extends IonicNativePlugin {
successIndex: 1, successIndex: 1,
errorIndex: 4 errorIndex: 4
}) })
confirm(message, title?: string, buttonLabels?: string[]): Promise<number> { return; } confirm(message: string, title?: string, buttonLabels?: string[]): Promise<number> { return; }
/** /**
* Displays a native dialog box that is more customizable than the browser's prompt function. * Displays a native dialog box that is more customizable than the browser's prompt function.

View File

@ -0,0 +1,102 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface DocumentViewerOptions {
title: string;
documentView: {
closeLabel: string;
};
navigationView: {
closeLabel: string;
};
email: {
enabled: boolean;
};
print: {
enabled: boolean;
};
openWith: {
enabled: boolean;
};
bookmarks: {
enabled: boolean;
};
search: {
enabled: boolean;
};
autoClose: {
onPause: boolean;
};
}
/**
* @name Document Viewer
* @description
* This plugin offers a slim API to view PDF files which are either stored in the apps assets folder (/www/*) or in any other file system directory available via the cordova file plugin.
*
* @usage
* ```typescript
* import { DocumentViewer } from '@ionic-native/document-viewer';
*
*
* constructor(private document: DocumentViewer) { }
*
* ...
* const options: DocumentViewerOptions = {
* title: 'My PDF'
* }
*
* this.document.viewDocument('assets/myFile.pdf', 'application/pdf', options)
*
* ```
*
* @interfaces
* DocumentViewerOptions
*/
@Plugin({
pluginName: 'Document Viewer',
plugin: 'cordova-plugin-document-viewer',
pluginRef: 'SitewaertsDocumentViewer',
repo: 'https://github.com/sitewaerts/cordova-plugin-document-viewer',
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class DocumentViewer extends IonicNativePlugin {
/**
* Displays the email composer pre-filled with data.
*
* @returns {Promise<any>} Resolves promise when the EmailComposer has been opened
*/
@Cordova()
getSupportInfo(): Promise<any> { return; }
/**
* Check if the document can be shown
*
* @param url {string} Url to the file
* @param contentType {string} Content type of the file
* @param options {Array<DocumentViewerOptions>} options
* @param [onPossible] {Function}
* @param [onMissingApp] {Function}
* @param [onImpossible] {Function}
* @param [onError] {Function}
*/
@Cordova({ sync: true })
canViewDocument(url: string, contentType: string, options: DocumentViewerOptions, onPossible?: Function, onMissingApp?: Function, onImpossible?: Function, onError?: Function): void { }
/**
* Opens the file
*
* @param url {string} Url to the file
* @param contentType {string} Content type of the file
* @param options {Array<DocumentViewerOptions>} options
* @param [onShow] {Function}
* @param [onClose] {Function}
* @param [onMissingApp] {Function}
* @param [onError] {Function}
*/
@Cordova({ sync: true })
viewDocument(url: string, contentType: string, options: Array<DocumentViewerOptions>, onShow?: Function, onClose?: Function, onMissingApp?: Function, onError?: Function): void { }
}

View File

@ -1,7 +1,11 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var cordova: any; interface Cordova {
plugins: CordovaPlugins & { email: any };
}
declare const cordova: Cordova;
export interface EmailComposerOptions { export interface EmailComposerOptions {
@ -25,14 +29,11 @@ export interface EmailComposerOptions {
/** /**
* @beta
* @name Email Composer * @name Email Composer
* @description * @description
* *
* Requires Cordova plugin: cordova-plugin-email-composer. For more info, please see the [Email Composer plugin docs](https://github.com/hypery2k/cordova-email-plugin). * Requires Cordova plugin: cordova-plugin-email-composer. For more info, please see the [Email Composer plugin docs](https://github.com/hypery2k/cordova-email-plugin).
* *
* DISCLAIMER: This plugin is experiencing issues with the latest versions of Cordova. Use at your own risk. Functionality is not guaranteed. Please stay tuned for a more stable version.
* A good alternative to this plugin is the social sharing plugin.
* *
* @usage * @usage
* ```typescript * ```typescript
@ -91,7 +92,7 @@ export class EmailComposer extends IonicNativePlugin {
isAvailable(app?: string): Promise<any> { isAvailable(app?: string): Promise<any> {
return new Promise<boolean>((resolve, reject) => { return new Promise<boolean>((resolve, reject) => {
if (app) { if (app) {
cordova.plugins.email.isAvailable(app, (isAvailable) => { cordova.plugins.email.isAvailable(app, (isAvailable: boolean) => {
if (isAvailable) { if (isAvailable) {
resolve(); resolve();
} else { } else {
@ -99,7 +100,7 @@ export class EmailComposer extends IonicNativePlugin {
} }
}); });
} else { } else {
cordova.plugins.email.isAvailable((isAvailable) => { cordova.plugins.email.isAvailable((isAvailable: boolean) => {
if (isAvailable) { if (isAvailable) {
resolve(); resolve();
} else { } else {

View File

@ -104,6 +104,8 @@ export interface FacebookLoginResponse {
* .catch(e => console.log('Error logging into Facebook', e)); * .catch(e => console.log('Error logging into Facebook', e));
* *
* *
* this.fb.logEvent(this.fb.EVENTS.EVENT_NAME_ADDED_TO_CART);
*
* ``` * ```
* *
*/ */
@ -119,6 +121,41 @@ export interface FacebookLoginResponse {
@Injectable() @Injectable()
export class Facebook extends IonicNativePlugin { export class Facebook extends IonicNativePlugin {
EVENTS: {
EVENT_NAME_ACTIVATED_APP: 'fb_mobile_activate_app',
EVENT_NAME_DEACTIVATED_APP: 'fb_mobile_deactivate_app',
EVENT_NAME_SESSION_INTERRUPTIONS: 'fb_mobile_app_interruptions',
EVENT_NAME_TIME_BETWEEN_SESSIONS: 'fb_mobile_time_between_sessions',
EVENT_NAME_COMPLETED_REGISTRATION: 'fb_mobile_complete_registration',
EVENT_NAME_VIEWED_CONTENT: 'fb_mobile_content_view',
EVENT_NAME_SEARCHED: 'fb_mobile_search',
EVENT_NAME_RATED: 'fb_mobile_rate',
EVENT_NAME_COMPLETED_TUTORIAL: 'fb_mobile_tutorial_completion',
EVENT_NAME_PUSH_TOKEN_OBTAINED: 'fb_mobile_obtain_push_token',
EVENT_NAME_ADDED_TO_CART: 'fb_mobile_add_to_cart',
EVENT_NAME_ADDED_TO_WISHLIST: 'fb_mobile_add_to_wishlist',
EVENT_NAME_INITIATED_CHECKOUT: 'fb_mobile_initiated_checkout',
EVENT_NAME_ADDED_PAYMENT_INFO: 'fb_mobile_add_payment_info',
EVENT_NAME_PURCHASED: 'fb_mobile_purchase',
EVENT_NAME_ACHIEVED_LEVEL: 'fb_mobile_level_achieved',
EVENT_NAME_UNLOCKED_ACHIEVEMENT: 'fb_mobile_achievement_unlocked',
EVENT_NAME_SPENT_CREDITS: 'fb_mobile_spent_credits',
EVENT_PARAM_CURRENCY: 'fb_currency',
EVENT_PARAM_REGISTRATION_METHOD: 'fb_registration_method',
EVENT_PARAM_CONTENT_TYPE: 'fb_content_type',
EVENT_PARAM_CONTENT_ID: 'fb_content_id',
EVENT_PARAM_SEARCH_STRING: 'fb_search_string',
EVENT_PARAM_SUCCESS: 'fb_success',
EVENT_PARAM_MAX_RATING_VALUE: 'fb_max_rating_value',
EVENT_PARAM_PAYMENT_INFO_AVAILABLE: 'fb_payment_info_available',
EVENT_PARAM_NUM_ITEMS: 'fb_num_items',
EVENT_PARAM_LEVEL: 'fb_level',
EVENT_PARAM_DESCRIPTION: 'fb_description',
EVENT_PARAM_SOURCE_APPLICATION: 'fb_mobile_launch_source',
EVENT_PARAM_VALUE_YES: '1',
EVENT_PARAM_VALUE_NO: '0'
};
/** /**
* Browser wrapper * Browser wrapper
* @param {number} appId Your Facebook AppID from their dashboard * @param {number} appId Your Facebook AppID from their dashboard
@ -135,16 +172,17 @@ export class Facebook extends IonicNativePlugin {
* *
* ```typescript * ```typescript
* { * {
* status: "connected", * status: 'connected',
* authResponse: { * authResponse: {
* session_key: true, * session_key: true,
* accessToken: "kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn", * accessToken: 'kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn',
* expiresIn: 5183979, * expiresIn: 5183979,
* sig: "...", * sig: '...',
* secret: "...", * secret: '...',
* userID: "634565435" * userID: '634565435'
* } * }
* } * }
*
* ``` * ```
* *
* @param {string[]} permissions List of [permissions](https://developers.facebook.com/docs/facebook-login/permissions) this app has upon logging in. * @param {string[]} permissions List of [permissions](https://developers.facebook.com/docs/facebook-login/permissions) this app has upon logging in.
@ -174,13 +212,13 @@ export class Facebook extends IonicNativePlugin {
* ``` * ```
* { * {
* authResponse: { * authResponse: {
* userID: "12345678912345", * userID: '12345678912345',
* accessToken: "kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn", * accessToken: 'kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn',
* session_Key: true, * session_Key: true,
* expiresIn: "5183738", * expiresIn: '5183738',
* sig: "..." * sig: '...'
* }, * },
* status: "connected" * status: 'connected'
* } * }
* ``` * ```
* *
@ -204,10 +242,10 @@ export class Facebook extends IonicNativePlugin {
* *
* ``` * ```
* { * {
* method: "share", * method: 'share',
* href: "http://example.com", * href: 'http://example.com',
* caption: "Such caption, very feed.", * caption: 'Such caption, very feed.',
* description: "Much description", * description: 'Much description',
* picture: 'http://example.com/image.png' * picture: 'http://example.com/image.png'
* } * }
* ``` * ```

View File

@ -0,0 +1,118 @@
import { Plugin, IonicNativePlugin, Cordova } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
export interface NotificationData {
/**
* Determines whether the notification was pressed or not
*/
wasTapped: boolean;
/**
* Notification data hash item
*/
[name: string]: any;
}
/**
* @name FCM
* @description
* Provides basic functionality for Firebase Cloud Messaging
*
* @usage
* ```typescript
* import { FCM } from 'ionic-native';
*
* constructor(private fcm: FCM) {}
*
* ...
*
* fcm.subscribeToTopic('marketing');
*
* fcm.getToken().then(token=>{
* backend.registerToken(token);
* })
*
* fcm.onNotification().subscribe(data=>{
* if(data.wasPressed){
* console.log("Received in background");
* } else {
* console.log("Received in foreground");
* };
* })
*
* fcm.onTokenRefresh().subscribe(token=>{
* backend.registerToken(token);
* })
*
* fcm.unsubscribeFromTopic('marketing');
*
* ```
* @interfaces
* NotificationData
*/
@Plugin({
pluginName: 'FCM',
plugin: 'cordova-plugin-fcm',
pluginRef: 'FCMPlugin',
repo: 'https://github.com/fechanique/cordova-plugin-fcm',
platforms: ['iOS', 'Android']
})
@Injectable()
export class FCM extends IonicNativePlugin {
/**
* Get's device's current registration id
*
* @returns {Promise<string>} Returns a Promise that resolves with the registration id token
*/
@Cordova()
getToken(): Promise<string> { return; }
/**
* Event firing on the token refresh
*
* @returns {Observable<string>} Returns an Observable that notifies with the change of device's registration id
*/
@Cordova({
observable: true
})
onTokenRefresh(): Observable<string> { return; }
/**
* Subscribes you to a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
* @param {string} topic Topic to be subscribed to
*
* @returns {Promise<any>} Returns a promise resolving in result of subscribing to a topic
*/
@Cordova()
subscribeToTopic(topic: string): Promise<any> { return; }
/**
* Unubscribes you from a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
* @param {string} topic Topic to be unsubscribed from
*
* @returns {Promise<any>} Returns a promise resolving in result of unsubscribing from a topic
*/
@Cordova()
unsubscribeFromTopic(topic: string): Promise<any> { return; }
/**
* Watch for incoming notifications
*
* @returns {Observable<any>} returns an object with data from the notification
*/
@Cordova({
observable: true,
successIndex: 0,
errorIndex: 2
})
onNotification(): Observable<NotificationData> { return; }
}

View File

@ -8,7 +8,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* Opens the file picker on Android for the user to select a file, returns a file URI. * Opens the file picker on Android for the user to select a file, returns a file URI.
* *
* @usage * @usage
* ``` * ```typescript
* import { FileChooser } from '@ionic-native/file-chooser'; * import { FileChooser } from '@ionic-native/file-chooser';
* *
* constructor(private fileChooser: FileChooser) { } * constructor(private fileChooser: FileChooser) { }
@ -23,7 +23,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
*/ */
@Plugin({ @Plugin({
pluginName: 'FileChooser', pluginName: 'FileChooser',
plugin: 'http://github.com/don/cordova-filechooser.git', plugin: 'https://github.com/don/cordova-filechooser.git',
pluginRef: 'fileChooser', pluginRef: 'fileChooser',
repo: 'https://github.com/don/cordova-filechooser', repo: 'https://github.com/don/cordova-filechooser',
platforms: ['Android'] platforms: ['Android']

View File

@ -0,0 +1,52 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name File Encryption
* @description
* Simple file encryption for Cordova.
*
* @usage
* ```typescript
* import { FileEncryption } from '@ionic-native/file-encryption';
*
*
* constructor(private fileEncryption: FileEncryption) { }
*
* ...
*
* this.fileEncryption.decrypt('assets/json/topSecret.json', 'secretKey');
*
* this.fileEncryption.encrypt('assets/json/topSecret.json', 'secretKey');
*
* ```
*/
@Plugin({
pluginName: 'FileEncryption',
plugin: 'cordova-safe',
pluginRef: 'cordova.plugins.disusered',
repo: 'https://github.com/disusered/cordova-safe',
platforms: ['Android', 'iOS']
})
@Injectable()
export class FileEncryption extends IonicNativePlugin {
/**
* Enrcypt a file
* @param file {string} A string representing a local URI
* @param key {string} A key for the crypto operations
* @return {Promise<any>} Returns a promise that resolves when something happens
*/
@Cordova()
encrypt(file: string, key: string): Promise<any> { return; }
/**
* Decrypt a file
* @param file {string} A string representing a local URI
* @param key {string} A key for the crypto operations
* @return {Promise<any>} Returns a promise that resolves when something happens
*/
@Cordova()
decrypt(file: string, key: string): Promise<any> { return; }
}

View File

@ -7,7 +7,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* This plugin will open a file on your device file system with its default application. * This plugin will open a file on your device file system with its default application.
* *
* @usage * @usage
* ``` * ```typescript
* import { FileOpener } from '@ionic-native/file-opener'; * import { FileOpener } from '@ionic-native/file-opener';
* *
* constructor(private fileOpener: FileOpener) { } * constructor(private fileOpener: FileOpener) { }
@ -41,7 +41,7 @@ export class FileOpener extends IonicNativePlugin {
successName: 'success', successName: 'success',
errorName: 'error' errorName: 'error'
}) })
open(filePath: string, fileMIMEType: string): Promise<any> {return; } open(filePath: string, fileMIMEType: string): Promise<any> { return; }
/** /**
* Uninstalls a package * Uninstalls a package
@ -53,7 +53,7 @@ export class FileOpener extends IonicNativePlugin {
successName: 'success', successName: 'success',
errorName: 'error' errorName: 'error'
}) })
uninstall(packageId: string): Promise<any> {return; } uninstall(packageId: string): Promise<any> { return; }
/** /**
* Check if an app is already installed * Check if an app is already installed
@ -65,6 +65,6 @@ export class FileOpener extends IonicNativePlugin {
successName: 'success', successName: 'success',
errorName: 'error' errorName: 'error'
}) })
appIsInstalled(packageId: string): Promise<any> {return; } appIsInstalled(packageId: string): Promise<any> { return; }
} }

View File

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
declare var window: any; declare const window: any;
/** /**
* @name File Path * @name File Path
@ -10,7 +10,7 @@ declare var window: any;
* This plugin allows you to resolve the native filesystem path for Android content URIs and is based on code in the aFileChooser library. * This plugin allows you to resolve the native filesystem path for Android content URIs and is based on code in the aFileChooser library.
* *
* @usage * @usage
* ``` * ```typescript
* import { FilePath } from '@ionic-native/file-path'; * import { FilePath } from '@ionic-native/file-path';
* *
* constructor(private filePath: FilePath) { } * constructor(private filePath: FilePath) { }
@ -39,6 +39,6 @@ export class FilePath extends IonicNativePlugin {
* @returns {Promise<string>} * @returns {Promise<string>}
*/ */
@Cordova() @Cordova()
resolveNativePath(path: string): Promise<string> {return; } resolveNativePath(path: string): Promise<string> { return; }
} }

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,6 @@ export interface FingerprintOptions {
} }
/** /**
* @beta
* @name Fingerprint AIO * @name Fingerprint AIO
* @description * @description
* Use simple fingerprint authentication on Android and iOS. * Use simple fingerprint authentication on Android and iOS.
@ -35,8 +34,8 @@ export interface FingerprintOptions {
* ... * ...
* *
* this.faio.show({ * this.faio.show({
* clientId: "Fingerprint-Demo", * clientId: 'Fingerprint-Demo',
* clientSecret: "password", //Only necessary for Android * clientSecret: 'password', //Only necessary for Android
* disableBackup:true //Only for Android(optional) * disableBackup:true //Only for Android(optional)
* }) * })
* .then((result: any) => console.log(result)) * .then((result: any) => console.log(result))

View File

@ -3,12 +3,13 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
/** /**
* @beta
* @name Firebase * @name Firebase
* @description * @description
* This plugin brings push notifications, analytics, event tracking, crash reporting and more from Google Firebase to your Cordova project! Android and iOS supported (including iOS 10). * This plugin brings push notifications, analytics, event tracking, crash reporting and more from Google Firebase to your Cordova project! Android and iOS supported (including iOS 10).
* *
* @usage * @usage
* ``` * ```typescript
* import { Firebase } from '@ionic-native/firebase'; * import { Firebase } from '@ionic-native/firebase';
* *
* constructor(private firebase: Firebase) { } * constructor(private firebase: Firebase) { }
@ -60,7 +61,7 @@ export class Firebase extends IonicNativePlugin {
onNotificationOpen(): Observable<any> { return; } onNotificationOpen(): Observable<any> { return; }
/** /**
* Grant permission to recieve push notifications * Grant permission to receive push notifications
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova({ @Cordova({
@ -69,12 +70,10 @@ export class Firebase extends IonicNativePlugin {
grantPermission(): Promise<any> { return; } grantPermission(): Promise<any> { return; }
/** /**
* Check permission to recieve push notifications * Check permission to receive push notifications
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova({ @Cordova()
platforms: ['iOS']
})
hasPermission(): Promise<any> { return; } hasPermission(): Promise<any> { return; }
/** /**
@ -117,6 +116,14 @@ export class Firebase extends IonicNativePlugin {
@Cordova() @Cordova()
logEvent(type: string, data: any): Promise<any> { return; } logEvent(type: string, data: any): Promise<any> { return; }
/**
* Log an Error using FirebaseCrash
* @param message {string}
* @return {Promise<any>}
*/
@Cordova()
logError(message: string): Promise<any> { return; }
/** /**
* Set the name of the current screen in Analytics * Set the name of the current screen in Analytics
* @param name {string} Screen name * @param name {string} Screen name
@ -148,7 +155,6 @@ export class Firebase extends IonicNativePlugin {
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova({ @Cordova({
platforms: ['Android'],
successIndex: 1, successIndex: 1,
errorIndex: 2 errorIndex: 2
}) })
@ -158,9 +164,7 @@ export class Firebase extends IonicNativePlugin {
* Activate the Remote Config fetched config * Activate the Remote Config fetched config
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova({ @Cordova()
platforms: ['Android']
})
activateFetched(): Promise<any> { return; } activateFetched(): Promise<any> { return; }
/** /**
@ -170,7 +174,6 @@ export class Firebase extends IonicNativePlugin {
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova({ @Cordova({
platforms: ['Android'],
successIndex: 2, successIndex: 2,
errorIndex: 3 errorIndex: 3
}) })

View File

@ -17,7 +17,6 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* *
* this.flashlight.switchOn(); * this.flashlight.switchOn();
* *
*
* ``` * ```
*/ */
@Plugin({ @Plugin({

View File

@ -1,4 +1,4 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; import { Plugin, CordovaInstance, checkAvailability, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
export interface FlurryAnalyticsOptions { export interface FlurryAnalyticsOptions {
@ -72,91 +72,47 @@ export interface FlurryAnalyticsLocation {
horizontalAccuracy?: number; horizontalAccuracy?: number;
} }
/** export class FlurryAnalyticsObject {
* @name Flurry Analytics
* @description
* This plugin connects to Flurry Analytics SDK
*
* @usage
* ```
* import { FlurryAnalytics } from 'ionic-native/flurry-analytics';
*
* constructor(private flurryAnalytics: FlurryAnalytics) { }
*
* ...
*
* constant options: FlurryAnalyticsOptions = {
* reportSessionsOnClose: true,
* enableLogging: true
* }
*
* FlurryAnalytics.init('12345678965412303214', options)
* .then((something: any) => doSomething(something))
* .catch((error: any) => console.log(error));
*
* ```
* @interfaces
* FlurryAnalyticsOptions
* FlurryAnalyticsLocation
*/
@Plugin({
pluginName: 'FlurryAnalyticsPlugin',
plugin: 'cordova-plugin-flurryanalytics',
pluginRef: 'fa',
repo: 'https://github.com/blakgeek/cordova-plugin-flurryanalytics.git',
platforms: ['Android', 'iOS', 'Browser']
})
@Injectable()
export class FlurryAnalytics extends IonicNativePlugin {
/** constructor(private _objectInstance: any) { }
* Set the setting for Flurry Analytics
* @param appKey {string} API key is required
* @param options {FlurryAnalyticsOptions} is optional
* @return {Promise<any>}
*/
@Cordova()
init(appKey: string, options?: FlurryAnalyticsOptions): Promise<any> {
return;
}
/** /**
* This function set the Event * This function set the Event
* @param eventName {string} The param to configure name of Event * @param eventName {string} Name of the event
* @param params {Object} optional * @param [params] {Object} Optional params
* @return {Promise<any>} Returns a promise that resolves when event is set * @return {Promise<any>} Returns a promise that resolves when event is sent
*/ */
@Cordova({ @CordovaInstance({
successIndex: 1, successIndex: 2,
errorIndex: 0 errorIndex: 3
}) })
logEvent(eventName: string, params?: any): Promise<any> { logEvent(eventName: string, params?: any): Promise<any> {
return; return;
} }
/** /**
* This function start a timed event * Start a timed event
* @param eventName * @param eventName {string} Name of the event
* @param params {Object} optional * @param [params] {Object} Optional params
* @return {Promise<any>} Returns a promise that resolves when timed event is started tracking * @return {Promise<any>} Returns a promise that resolves when timed event is started tracking
*/ */
@Cordova({ @CordovaInstance({
successIndex: 1, successIndex: 2,
errorIndex: 0 errorIndex: 3
}) })
startTimedEvent(eventName: string, params?: Object): Promise<any> { startTimedEvent(eventName: string, params?: Object): Promise<any> {
return; return;
} }
/** /**
* This function complete a timed event * Complete a timed event
* @param eventName * @param eventName {string} Name of the event
* @param params {Object} optional * @param [params] {Object} Optional params
* @return {Promise<any>} Returns a promise that resolves when timed event is ended tracking * @return {Promise<any>} Returns a promise that resolves when timed event is ended tracking
*/ */
@Cordova({ @CordovaInstance({
successIndex: 1, successIndex: 2,
errorIndex: 0 errorIndex: 3
}) })
endTimedEvent(eventName: string, params?: Object): Promise<any> { endTimedEvent(eventName: string, params?: Object): Promise<any> {
return; return;
@ -168,11 +124,8 @@ export class FlurryAnalytics extends IonicNativePlugin {
* @param message * @param message
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova({ @CordovaInstance()
successIndex: 1, logError(code: any, message: any): Promise<any> {
errorIndex: 0
})
logError(code, message): Promise<any> {
return; return;
} }
@ -180,7 +133,7 @@ export class FlurryAnalytics extends IonicNativePlugin {
* This function log a page view * This function log a page view
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova() @CordovaInstance()
logPageView(): Promise<any> { logPageView(): Promise<any> {
return; return;
} }
@ -188,14 +141,12 @@ export class FlurryAnalytics extends IonicNativePlugin {
/** /**
* This function set the location for the event * This function set the location for the event
* (this is will only be used for very course grained statistics like city) * (this is will only be used for very course grained statistics like city)
* @param location * @param location {FlurryAnalyticsLocation}
* @param message {string}
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova({ @CordovaInstance()
successIndex: 1, setLocation(location: FlurryAnalyticsLocation, message: string): Promise<any> {
errorIndex: 0
})
setLocation(location: FlurryAnalyticsLocation): Promise<any> {
return; return;
} }
@ -204,7 +155,7 @@ export class FlurryAnalytics extends IonicNativePlugin {
* Only needed for older versions of Android * Only needed for older versions of Android
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova() @CordovaInstance()
startSession(): Promise<any> { startSession(): Promise<any> {
return; return;
} }
@ -214,8 +165,70 @@ export class FlurryAnalytics extends IonicNativePlugin {
* Only needed for older versions of Android * Only needed for older versions of Android
* @return {Promise<any>} * @return {Promise<any>}
*/ */
@Cordova() @CordovaInstance()
endSession(): Promise<any> { endSession(): Promise<any> {
return; return;
} }
}
/**
* @name Flurry Analytics
* @description
* This plugin connects to Flurry Analytics SDK
*
* @usage
* ```typescript
* import { FlurryAnalytics, FlurryAnalyticsObject, FlurryAnalyticsOptions } from 'ionic-native/flurry-analytics';
*
* constructor(private flurryAnalytics: FlurryAnalytics) { }
*
* ...
*
* const options: FlurryAnalyticsOptions = {
* appKey: '<your app key>', // REQUIRED
* reportSessionsOnClose: true,
* enableLogging: true
* };
*
* let fa: FlurryAnalyticsObject = this.flurryAnalytics.create(options);
*
* fa.logEvent('event name')
* .then(() => console.log('Logged an event!'))
* .catch(e => console.log('Error logging the event', e));
*
* ```
* @interfaces
* FlurryAnalyticsOptions
* FlurryAnalyticsLocation
* @classes
* FlurryAnalyticsObject
*/
@Plugin({
pluginName: 'FlurryAnalytics',
plugin: 'cordova-plugin-flurryanalytics',
pluginRef: 'FlurryAnalytics',
repo: 'https://github.com/blakgeek/cordova-plugin-flurryanalytics.git',
platforms: ['Android', 'iOS', 'Browser']
})
@Injectable()
export class FlurryAnalytics extends IonicNativePlugin {
/**
* Creates a new instance of FlurryAnalyticsObject
* @param options {FlurryAnalyticsOptions} options
* @return {FlurryAnalyticsObject}
*/
create(options: FlurryAnalyticsOptions): FlurryAnalyticsObject {
let instance: any;
if (checkAvailability(FlurryAnalytics.pluginRef, null, FlurryAnalytics.pluginName) === true) {
instance = new (window as any).FlurryAnalaytics(options);
}
return new FlurryAnalyticsObject(instance);
}
} }

View File

@ -2,14 +2,14 @@ import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaFunctionOverride, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, CordovaFunctionOverride, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
declare var window: any; declare const window: any;
/** /**
* @name Geofence * @name Geofence
* @description Monitors circular geofences around latitude/longitude coordinates, and sends a notification to the user when the boundary of a geofence is crossed. Notifications can be sent when the user enters and/or exits a geofence. * @description Monitors circular geofences around latitude/longitude coordinates, and sends a notification to the user when the boundary of a geofence is crossed. Notifications can be sent when the user enters and/or exits a geofence.
* Geofences persist after device reboot. Geofences will be monitored even when the app is not running. * Geofences persist after device reboot. Geofences will be monitored even when the app is not running.
* @usage * @usage
* ``` * ```typescript
* import { Geofence } from '@ionic-native/geofence'; * import { Geofence } from '@ionic-native/geofence';
* *
* ... * ...
@ -28,15 +28,15 @@ declare var window: any;
* private addGeofence() { * private addGeofence() {
* //options describing geofence * //options describing geofence
* let fence = { * let fence = {
* id: "69ca1b88-6fbe-4e80-a4d4-ff4d3748acdb", //any unique ID * id: '69ca1b88-6fbe-4e80-a4d4-ff4d3748acdb', //any unique ID
* latitude: 37.285951, //center of geofence radius * latitude: 37.285951, //center of geofence radius
* longitude: -121.936650, * longitude: -121.936650,
* radius: 100, //radius to edge of geofence * radius: 100, //radius to edge of geofence in meters
* transitionType: 3, //see 'Transition Types' below * transitionType: 3, //see 'Transition Types' below
* notification: { //notification settings * notification: { //notification settings
* id: 1, //any unique ID * id: 1, //any unique ID
* title: "You crossed a fence", //notification title * title: 'You crossed a fence', //notification title
* text: "You just arrived to Gliwice city center.", //notification body * text: 'You just arrived to Gliwice city center.', //notification body
* openAppOnClick: true //open app when notification is tapped * openAppOnClick: true //open app when notification is tapped
* } * }
* } * }
@ -148,7 +148,7 @@ export class Geofence extends IonicNativePlugin {
return new Observable<any>((observer) => { return new Observable<any>((observer) => {
window && window.geofence && (window.geofence.onTransitionReceived = observer.next.bind(observer)); window && window.geofence && (window.geofence.onTransitionReceived = observer.next.bind(observer));
return () => window.geofence.onTransitionReceived = () => {}; return () => window.geofence.onTransitionReceived = () => { };
}); });
} }
@ -162,7 +162,7 @@ export class Geofence extends IonicNativePlugin {
return new Observable<any>((observer) => { return new Observable<any>((observer) => {
window && window.geofence && (window.geofence.onNotificationClicked = observer.next.bind(observer)); window && window.geofence && (window.geofence.onNotificationClicked = observer.next.bind(observer));
return () => window.geofence.onNotificationClicked = () => {}; return () => window.geofence.onNotificationClicked = () => { };
}); });
} }

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
declare var navigator: any; declare const navigator: any;
export interface Coordinates { export interface Coordinates {
@ -174,7 +174,7 @@ export class Geolocation extends IonicNativePlugin {
* Observable changes. * Observable changes.
* *
* ```typescript * ```typescript
* var subscription = Geolocation.watchPosition() * const subscription = this.geolocation.watchPosition()
* .filter((p) => p.coords !== undefined) //Filter Out Errors * .filter((p) => p.coords !== undefined) //Filter Out Errors
* .subscribe(position => { * .subscribe(position => {
* console.log(position.coords.longitude + ' ' + position.coords.latitude); * console.log(position.coords.longitude + ' ' + position.coords.latitude);

View File

@ -72,12 +72,12 @@ export class Globalization extends IonicNativePlugin {
/** /**
* Returns a pattern string to format and parse dates according to the client's user preferences. * Returns a pattern string to format and parse dates according to the client's user preferences.
* @param options Object with the format length and selector * @param options Object with the format length and selector
* @returns {Promise<{pattern: string}>} Returns a promise. * @returns {Promise<{ pattern: string, timezone: string, utf_offset: number, dst_offset: number }>} Returns a promise.
*/ */
@Cordova({ @Cordova({
callbackOrder: 'reverse' callbackOrder: 'reverse'
}) })
getDatePattern(options: { formatLength: string, selector: string }): Promise<{ pattern: string }> { return; } getDatePattern(options: { formatLength: string, selector: string }): Promise<{ pattern: string, timezone: string, utf_offset: number, dst_offset: number }> { return; }
/** /**
* Returns an array of the names of the months or days of the week, depending on the client's user preferences and calendar. * Returns an array of the names of the months or days of the week, depending on the client's user preferences and calendar.

View File

@ -1,8 +1,6 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
declare var window;
/** /**
* @name Google Analytics * @name Google Analytics
* @description * @description

View File

@ -3,7 +3,7 @@ import { Cordova, CordovaInstance, CordovaCheck, Plugin, InstanceProperty, Insta
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent'; import 'rxjs/add/observable/fromEvent';
declare var plugin: any; declare const plugin: any;
/** /**
* @hidden * @hidden
@ -351,7 +351,7 @@ export class GoogleMap {
* @returns {Promise<LatLng>} * @returns {Promise<LatLng>}
*/ */
@CordovaInstance() @CordovaInstance()
fromPointToLatLng(point: any, latLng: LatLng): Promise<LatLng> { return; } fromPointToLatLng(point: any): Promise<LatLng> { return; }
/** /**
* @returns {Promise<any>} * @returns {Promise<any>}
@ -363,14 +363,14 @@ export class GoogleMap {
remove(): void { } remove(): void { }
@CordovaInstance({ sync: true }) @CordovaInstance({ sync: true })
panBy(): void { } panBy(x: string | number, y: string | number): void { }
} }
/** /**
* @name Google Maps * @name Google Maps
* @description This plugin uses the native Google Maps SDK * @description This plugin uses the native Google Maps SDK
* @usage * @usage
* ``` * ```typescript
* import { * import {
* GoogleMaps, * GoogleMaps,
* GoogleMap, * GoogleMap,
@ -403,7 +403,12 @@ export class GoogleMap {
* *
* // listen to MAP_READY event * // listen to MAP_READY event
* // You must wait for this event to fire before adding something to the map or modifying it in anyway * // You must wait for this event to fire before adding something to the map or modifying it in anyway
* map.one(GoogleMapsEvent.MAP_READY).then(() => console.log('Map is ready!')); * map.one(GoogleMapsEvent.MAP_READY).then(
* () => {
* console.log('Map is ready!');
* // Now you can add elements to the map like the marker
* }
* );
* *
* // create LatLng object * // create LatLng object
* let ionic: LatLng = new LatLng(43.0741904,-89.3809802); * let ionic: LatLng = new LatLng(43.0741904,-89.3809802);
@ -450,7 +455,7 @@ export class GoogleMap {
pluginRef: 'plugin.google.maps.Map', pluginRef: 'plugin.google.maps.Map',
plugin: 'cordova-plugin-googlemaps', plugin: 'cordova-plugin-googlemaps',
repo: 'https://github.com/mapsplugin/cordova-plugin-googlemaps', repo: 'https://github.com/mapsplugin/cordova-plugin-googlemaps',
install: 'ionic plugin add cordova-plugin-googlemaps --variable API_KEY_FOR_ANDROID="YOUR_ANDROID_API_KEY_IS_HERE" --variable API_KEY_FOR_IOS="YOUR_IOS_API_KEY_IS_HERE"', install: 'ionic cordova plugin add cordova-plugin-googlemaps --variable API_KEY_FOR_ANDROID="YOUR_ANDROID_API_KEY_IS_HERE" --variable API_KEY_FOR_IOS="YOUR_IOS_API_KEY_IS_HERE"',
installVariables: ['API_KEY_FOR_ANDROID', 'API_KEY_FOR_IOS'], installVariables: ['API_KEY_FOR_ANDROID', 'API_KEY_FOR_IOS'],
platforms: ['Android', 'iOS'] platforms: ['Android', 'iOS']
}) })
@ -1468,7 +1473,7 @@ export class GroundOverlay {
return Promise.reject({ error: 'plugin_not_installed' }); return Promise.reject({ error: 'plugin_not_installed' });
} }
return new Promise<any>( return new Promise<any>(
resolve => this._objectInstance.addListenerOnce(eventName, resolve) (resolve: Function) => this._objectInstance.addListenerOnce(eventName, resolve)
); );
} }
@ -1761,7 +1766,7 @@ export class Geocoder {
*/ */
@CordovaCheck() @CordovaCheck()
geocode(request: GeocoderRequest): Promise<GeocoderResult[] | any> { geocode(request: GeocoderRequest): Promise<GeocoderResult[] | any> {
return new Promise<GeocoderResult[]>(resolve => { return new Promise<GeocoderResult[]>((resolve: Function) => {
plugin.google.maps.Geocoder.geocode(request, resolve); plugin.google.maps.Geocoder.geocode(request, resolve);
}); });
} }

View File

@ -2,7 +2,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
declare var navigator: any; declare const navigator: any;
/** /**
* @hidden * @hidden
@ -43,7 +43,7 @@ export interface GyroscopeOptions {
* @name Gyroscope * @name Gyroscope
* @description Read Gyroscope sensor data * @description Read Gyroscope sensor data
* @usage * @usage
* ``` * ```typescript
* import { Gyroscope, GyroscopeOrientation, GyroscopeOptions } from '@ionic-native/gyroscope'; * import { Gyroscope, GyroscopeOrientation, GyroscopeOptions } from '@ionic-native/gyroscope';
* *
* *
@ -89,7 +89,7 @@ export class Gyroscope extends IonicNativePlugin {
* @return {Observable<GyroscopeOrientation>} Returns an Observable that resolves GyroscopeOrientation * @return {Observable<GyroscopeOrientation>} Returns an Observable that resolves GyroscopeOrientation
*/ */
watch(options?: GyroscopeOptions): Observable<GyroscopeOrientation> { watch(options?: GyroscopeOptions): Observable<GyroscopeOrientation> {
return new Observable<GyroscopeOrientation> ( return new Observable<GyroscopeOrientation>(
(observer: any) => { (observer: any) => {
let watchId = navigator.gyroscope.watch(observer.next.bind(observer), observer.next.bind(observer), options); let watchId = navigator.gyroscope.watch(observer.next.bind(observer), observer.next.bind(observer), options);
return () => navigator.gyroscope.clearWatch(watchId); return () => navigator.gyroscope.clearWatch(watchId);

View File

@ -4,7 +4,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/** /**
* @name Header Color * @name Header Color
* @description * @description
* Cordova plugin to change color of header in multitask view * Cordova plugin to change color of header in Android Multitask View
* *
* @usage * @usage
* ```typescript * ```typescript
@ -14,7 +14,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* *
* ... * ...
* *
* this.headerColor.tint("#becb29"); * this.headerColor.tint('#becb29');
* ``` * ```
*/ */
@Plugin({ @Plugin({

View File

@ -0,0 +1,309 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface HealthKitOptions {
/**
* HKWorkoutActivityType constant
* Read more here: https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HKWorkout_Class/#//apple_ref/c/tdef/HKWorkoutActivityType
*/
activityType?: string; //
/**
* 'hour', 'week', 'year' or 'day', default 'day'
*/
aggregation?: string;
/**
*
*/
amount?: number;
/**
*
*/
correlationType?: string;
/**
*
*/
date?: any;
/**
*
*/
distance?: number;
/**
* probably useful with the former param
*/
distanceUnit?: string;
/**
* in seconds, optional, use either this or endDate
*/
duration?: number;
/**
*
*/
endDate?: any;
/**
*
*/
energy?: number;
/**
* J|cal|kcal
*/
energyUnit?: string;
/**
*
*/
extraData?: any;
/**
*
*/
metadata?: any;
/**
*
*/
quantityType?: string;
/**
*
*/
readTypes?: any;
/**
*
*/
requestWritePermission?: boolean;
/**
*
*/
samples?: any;
/**
*
*/
sampleType?: string;
/**
*
*/
startDate?: any;
/**
* m|cm|mm|in|ft
*/
unit?: string;
/**
*
*/
requestReadPermission?: boolean;
/**
*
*/
writeTypes?: any;
}
/**
* @name Health Kit
* @description
* The HealthKit plugin allows you to read data from and write data to the iOS 8+ HealthKit framework.
* Any data saved shows up in the iOS Health app and is available for other iOS apps.
*
* @usage
* ```typescript
* import { HealthKit } from '@ionic-native/health-kit';
*
*
* constructor(private healthKit: HealthKit) { }
*
* ...
* ```
*
* @interfaces
* HealthKitOptions
*/
@Plugin({
pluginName: 'HealthKit',
plugin: 'com.telerik.plugins.healthkit',
pluginRef: 'window.plugins.healthkit',
repo: 'https://github.com/Telerik-Verified-Plugins/HealthKit',
platforms: ['iOS']
})
@Injectable()
export class HealthKit extends IonicNativePlugin {
/**
* Check if HealthKit is supported (iOS8+, not on iPad)
* @returns {Promise<any>}
*/
@Cordova()
available(): Promise<any> { return; }
/**
* Pass in a type and get back on of undetermined | denied | authorized
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
checkAuthStatus(options: HealthKitOptions): Promise<any> { return; }
/**
* Ask some or all permissions up front
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
requestAuthorization(options: HealthKitOptions): Promise<any> { return; }
/**
* Formatted as yyyy-MM-dd
* @returns {Promise<any>}
*/
@Cordova()
readDateOfBirth(): Promise<any> { return; }
/**
* Output = male|female|other|unknown
* @returns {Promise<any>}
*/
@Cordova()
readGender(): Promise<any> { return; }
/**
* Output = A+|A-|B+|B-|AB+|AB-|O+|O-|unknown
* @returns {Promise<any>}
*/
@Cordova()
readBloodType(): Promise<any> { return; }
/**
* Output = I|II|III|IV|V|VI|unknown
* @returns {Promise<any>}
*/
@Cordova()
readFitzpatrickSkinType(): Promise<any> { return; }
/**
* Pass in unit (g=gram, kg=kilogram, oz=ounce, lb=pound, st=stone) and amount
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveWeight(options: HealthKitOptions): Promise<any> { return; }
/**
* Pass in unit (g=gram, kg=kilogram, oz=ounce, lb=pound, st=stone)
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
readWeight(options: HealthKitOptions): Promise<any> { return; }
/**
* Pass in unit (mm=millimeter, cm=centimeter, m=meter, in=inch, ft=foot) and amount
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveHeight(options: HealthKitOptions): Promise<any> { return; }
/**
* Pass in unit (mm=millimeter, cm=centimeter, m=meter, in=inch, ft=foot)
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
readHeight(options: HealthKitOptions): Promise<any> { return; }
/**
* no params yet, so this will return all workouts ever of any type
* @returns {Promise<any>}
*/
@Cordova()
findWorkouts(): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveWorkout(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
querySampleType(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
querySampleTypeAggregated(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
deleteSamples(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
monitorSampleType(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
sumQuantityType(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveQuantitySample(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveCorrelation(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
queryCorrelationType(options: HealthKitOptions): Promise<any> { return; }
}

View File

@ -160,7 +160,7 @@ export interface HealthData {
* A plugin that abstracts fitness and health repositories like Apple HealthKit or Google Fit. * A plugin that abstracts fitness and health repositories like Apple HealthKit or Google Fit.
* *
* @usage * @usage
* ``` * ```typescript
* import { Health } from '@ionic-native/health'; * import { Health } from '@ionic-native/health';
* *
* *

View File

@ -30,7 +30,7 @@ export interface HTTPResponse {
* - SSL Pinning * - SSL Pinning
* *
* @usage * @usage
* ``` * ```typescript
* import { HTTP } from '@ionic-native/http'; * import { HTTP } from '@ionic-native/http';
* *
* constructor(private http: HTTP) { } * constructor(private http: HTTP) { }

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
declare var cordova: any; declare const cordova: any;
export interface Beacon { export interface Beacon {
/** /**
@ -434,7 +434,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer acknowledged the request and started to send events. * native layer acknowledged the request and started to send events.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
onDomDelegateReady(): Promise<void> { return; } onDomDelegateReady(): Promise<void> { return; }
/** /**
@ -442,7 +442,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<boolean>} Returns a promise which is resolved with a {Boolean} * @returns {Promise<boolean>} Returns a promise which is resolved with a {Boolean}
* indicating whether bluetooth is active. * indicating whether bluetooth is active.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
isBluetoothEnabled(): Promise<boolean> { return; } isBluetoothEnabled(): Promise<boolean> { return; }
/** /**
@ -451,7 +451,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved when Bluetooth * @returns {Promise<void>} Returns a promise which is resolved when Bluetooth
* could be enabled. If not, the promise will be rejected with an error. * could be enabled. If not, the promise will be rejected with an error.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
enableBluetooth(): Promise<void> { return; } enableBluetooth(): Promise<void> { return; }
/** /**
@ -460,7 +460,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved when Bluetooth * @returns {Promise<void>} Returns a promise which is resolved when Bluetooth
* could be enabled. If not, the promise will be rejected with an error. * could be enabled. If not, the promise will be rejected with an error.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
disableBluetooth(): Promise<void> { return; } disableBluetooth(): Promise<void> { return; }
/** /**
@ -480,7 +480,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<string>} Returns a promise which is resolved as soon as the * @returns {Promise<string>} Returns a promise which is resolved as soon as the
* native layer acknowledged the dispatch of the monitoring request. * native layer acknowledged the dispatch of the monitoring request.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
startMonitoringForRegion(region: BeaconRegion): Promise<string> { return; } startMonitoringForRegion(region: BeaconRegion): Promise<string> { return; }
/** /**
@ -497,7 +497,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer acknowledged the dispatch of the request to stop monitoring. * native layer acknowledged the dispatch of the request to stop monitoring.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
stopMonitoringForRegion(region: BeaconRegion): Promise<void> { return; } stopMonitoringForRegion(region: BeaconRegion): Promise<void> { return; }
/** /**
@ -513,7 +513,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer acknowledged the dispatch of the request to stop monitoring. * native layer acknowledged the dispatch of the request to stop monitoring.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
requestStateForRegion(region: Region): Promise<void> { return; } requestStateForRegion(region: Region): Promise<void> { return; }
@ -531,7 +531,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer acknowledged the dispatch of the monitoring request. * native layer acknowledged the dispatch of the monitoring request.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
startRangingBeaconsInRegion(region: BeaconRegion): Promise<void> { return; } startRangingBeaconsInRegion(region: BeaconRegion): Promise<void> { return; }
/** /**
@ -548,7 +548,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer acknowledged the dispatch of the request to stop monitoring. * native layer acknowledged the dispatch of the request to stop monitoring.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
stopRangingBeaconsInRegion(region: BeaconRegion): Promise<void> { return; } stopRangingBeaconsInRegion(region: BeaconRegion): Promise<void> { return; }
/** /**
@ -557,7 +557,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<IBeaconPluginResult>} Returns a promise which is resolved with the * @returns {Promise<IBeaconPluginResult>} Returns a promise which is resolved with the
* requested authorization status. * requested authorization status.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
getAuthorizationStatus(): Promise<IBeaconPluginResult> { return; } getAuthorizationStatus(): Promise<IBeaconPluginResult> { return; }
/** /**
@ -569,7 +569,7 @@ export class IBeacon extends IonicNativePlugin {
* If you are using this plugin on Android devices only, you will never have to use this, nor {@code requestAlwaysAuthorization} * If you are using this plugin on Android devices only, you will never have to use this, nor {@code requestAlwaysAuthorization}
* @returns {Promise<void>} Returns a promise that is resolved when the request dialog is shown. * @returns {Promise<void>} Returns a promise that is resolved when the request dialog is shown.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
requestWhenInUseAuthorization(): Promise<void> { return; } requestWhenInUseAuthorization(): Promise<void> { return; }
@ -579,7 +579,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved when the native layer * @returns {Promise<void>} Returns a promise which is resolved when the native layer
* shows the request dialog. * shows the request dialog.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
requestAlwaysAuthorization(): Promise<void> { return; } requestAlwaysAuthorization(): Promise<void> { return; }
/** /**
@ -587,7 +587,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<Region[]>} Returns a promise which is resolved with an {Array} * @returns {Promise<Region[]>} Returns a promise which is resolved with an {Array}
* of {Region} instances that are being monitored by the native layer. * of {Region} instances that are being monitored by the native layer.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
getMonitoredRegions(): Promise<Region[]> { return; } getMonitoredRegions(): Promise<Region[]> { return; }
/** /**
@ -595,7 +595,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<Region[]>} Returns a promise which is resolved with an {Array} * @returns {Promise<Region[]>} Returns a promise which is resolved with an {Array}
* of {Region} instances that are being ranged by the native layer. * of {Region} instances that are being ranged by the native layer.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
getRangedRegions(): Promise<Region[]> { return; } getRangedRegions(): Promise<Region[]> { return; }
/** /**
@ -603,7 +603,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<boolean>} Returns a promise which is resolved with a {Boolean} * @returns {Promise<boolean>} Returns a promise which is resolved with a {Boolean}
* indicating whether ranging is available or not. * indicating whether ranging is available or not.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
isRangingAvailable(): Promise<boolean> { return; } isRangingAvailable(): Promise<boolean> { return; }
/** /**
@ -615,7 +615,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<boolean>} Returns a promise which is resolved with a {Boolean} * @returns {Promise<boolean>} Returns a promise which is resolved with a {Boolean}
* indicating whether the region type is supported or not. * indicating whether the region type is supported or not.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
isMonitoringAvailableForClass(region: Region): Promise<boolean> { return; } isMonitoringAvailableForClass(region: Region): Promise<boolean> { return; }
/** /**
@ -635,7 +635,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer acknowledged the dispatch of the advertising request. * native layer acknowledged the dispatch of the advertising request.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
startAdvertising(region: Region, measuredPower: number): Promise<void> { return; } startAdvertising(region: Region, measuredPower: number): Promise<void> { return; }
/** /**
@ -646,7 +646,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer acknowledged the dispatch of the request to stop advertising. * native layer acknowledged the dispatch of the request to stop advertising.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
stopAdvertising(region: Region): Promise<void> { return; } stopAdvertising(region: Region): Promise<void> { return; }
/** /**
@ -654,7 +654,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved with a {Boolean} * @returns {Promise<void>} Returns a promise which is resolved with a {Boolean}
* indicating whether advertising is available or not. * indicating whether advertising is available or not.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
isAdvertisingAvailable(): Promise<boolean> { return; } isAdvertisingAvailable(): Promise<boolean> { return; }
/** /**
@ -662,7 +662,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved with a {Boolean} * @returns {Promise<void>} Returns a promise which is resolved with a {Boolean}
* indicating whether advertising is active. * indicating whether advertising is active.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
isAdvertising(): Promise<boolean> { return; } isAdvertising(): Promise<boolean> { return; }
/** /**
@ -672,7 +672,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer has set the logging level accordingly. * native layer has set the logging level accordingly.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
disableDebugLogs(): Promise<void> { return; } disableDebugLogs(): Promise<void> { return; }
/** /**
@ -683,7 +683,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer has set the flag to enabled. * native layer has set the flag to enabled.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
enableDebugNotifications(): Promise<void> { return; } enableDebugNotifications(): Promise<void> { return; }
/** /**
@ -693,7 +693,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer has set the flag to disabled. * native layer has set the flag to disabled.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
disableDebugNotifications(): Promise<void> { return; } disableDebugNotifications(): Promise<void> { return; }
/** /**
@ -703,7 +703,7 @@ export class IBeacon extends IonicNativePlugin {
* @returns {Promise<void>} Returns a promise which is resolved as soon as the * @returns {Promise<void>} Returns a promise which is resolved as soon as the
* native layer has set the logging level accordingly. * native layer has set the logging level accordingly.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
enableDebugLogs(): Promise<void> { return; } enableDebugLogs(): Promise<void> { return; }
/** /**
@ -716,7 +716,7 @@ export class IBeacon extends IonicNativePlugin {
* message received by the native layer for appending. The returned message * message received by the native layer for appending. The returned message
* is expected to be equivalent to the one provided in the original call. * is expected to be equivalent to the one provided in the original call.
*/ */
@Cordova({otherPromise: true}) @Cordova({ otherPromise: true })
appendToDeviceLog(message: string): Promise<void> { return; } appendToDeviceLog(message: string): Promise<void> { return; }
} }

View File

@ -4,7 +4,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface ImagePickerOptions { export interface ImagePickerOptions {
/** /**
* max images to be selected, defaults to 15. If this is set to 1, upon selection of a single image, the plugin will return it. * max images to be selected, defaults to 15. If this is set to 1, upon selection of a single image, the plugin will return it. (Android only)
*/ */
maximumImagesCount?: number; maximumImagesCount?: number;

View File

@ -3,7 +3,7 @@ import { Plugin, CordovaInstance, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent'; import 'rxjs/add/observable/fromEvent';
declare var cordova: any; declare const cordova: Cordova & { InAppBrowser: any; };
export interface InAppBrowserOptions { export interface InAppBrowserOptions {
/** Set to yes or no to turn the InAppBrowser's location bar on or off. */ /** Set to yes or no to turn the InAppBrowser's location bar on or off. */
@ -48,6 +48,11 @@ export interface InAppBrowserOptions {
/** (Windows only) Set to yes to create the browser control without a border around it. /** (Windows only) Set to yes to create the browser control without a border around it.
* Please note that if location=no is also specified, there will be no control presented to user to close IAB window. */ * Please note that if location=no is also specified, there will be no control presented to user to close IAB window. */
fullscreen?: 'yes'; fullscreen?: 'yes';
/**
* @hidden
*/
[key: string]: any;
} }
export interface InAppBrowserEvent extends Event { export interface InAppBrowserEvent extends Event {
/** the eventname, either loadstart, loadstop, loaderror, or exit. */ /** the eventname, either loadstart, loadstop, loaderror, or exit. */
@ -71,18 +76,27 @@ export class InAppBrowserObject {
* Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser. * Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser.
* @param {string} url The URL to load. * @param {string} url The URL to load.
* @param {string} [target="self"] The target in which to load the URL, an optional parameter that defaults to _self. * @param {string} [target="self"] The target in which to load the URL, an optional parameter that defaults to _self.
* _self: Opens in the WebView if the URL is in the white list, otherwise it opens in the InAppBrowser.
* _blank: Opens in the InAppBrowser.
* _system: Opens in the system's web browser.
* @param {string | InAppBrowserOptions} [options] Options for the InAppBrowser. Optional, defaulting to: location=yes. * @param {string | InAppBrowserOptions} [options] Options for the InAppBrowser. Optional, defaulting to: location=yes.
* The options string must not contain any blank space, and each feature's * The options string must not contain any blank space, and each feature's
* name/value pairs must be separated by a comma. Feature names are case insensitive. * name/value pairs must be separated by a comma. Feature names are case insensitive.
*/ */
constructor(url: string, target?: string, options?: string | InAppBrowserOptions) { constructor(url: string, target?: string, options?: string | InAppBrowserOptions) {
try { try {
if (options && typeof options !== 'string')
options = Object.keys(options).map(key => `${key}=${options[key]}`).join(','); if (options && typeof options !== 'string') {
options = Object.keys(options).map((key: string) => `${key}=${(<InAppBrowserOptions>options)[key]}`).join(',');
}
this._objectInstance = cordova.InAppBrowser.open(url, target, options); this._objectInstance = cordova.InAppBrowser.open(url, target, options);
} catch (e) { } catch (e) {
window.open(url);
window.open(url, target);
console.warn('Native: InAppBrowser is not installed or you are running on a browser. Falling back to window.open.'); console.warn('Native: InAppBrowser is not installed or you are running on a browser. Falling back to window.open.');
} }
} }
@ -145,7 +159,7 @@ export class InAppBrowserObject {
* ... * ...
* *
* *
* const browser = this.iab.create('https://ionic.io'); * const browser = this.iab.create('https://ionicframework.com/');
* *
* browser.executeScript(...); * browser.executeScript(...);
* browser.insertCSS(...); * browser.insertCSS(...);

View File

@ -8,7 +8,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* A lightweight Cordova plugin for in app purchases on iOS/Android. * A lightweight Cordova plugin for in app purchases on iOS/Android.
* *
* @usage * @usage
* ```ts * ```typescript
* import { InAppPurchase } from '@ionic-native/in-app-purchase'; * import { InAppPurchase } from '@ionic-native/in-app-purchase';
* *
* constructor(private iap: InAppPurchase) { } * constructor(private iap: InAppPurchase) { }
@ -16,7 +16,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* ... * ...
* *
* this.iap * this.iap
* .getProducts(['com.yourapp.prod1', 'com.yourapp.prod2', ...]) * .getProducts(['prod1', 'prod2', ...])
* .then((products) => { * .then((products) => {
* console.log(products); * console.log(products);
* // [{ productId: 'com.yourapp.prod1', 'title': '...', description: '...', price: '...' }, ...] * // [{ productId: 'com.yourapp.prod1', 'title': '...', description: '...', price: '...' }, ...]
@ -27,7 +27,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* *
* *
* this.iap * this.iap
* .buy('com.yourapp.prod1') * .buy('prod1')
* .then((data)=> { * .then((data)=> {
* console.log(data); * console.log(data);
* // { * // {
@ -44,10 +44,10 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* *
* @advanced * @advanced
* *
* ```ts * ```typescript
* // fist buy the product... * // fist buy the product...
* this.iap * this.iap
* .buy('com.yourapp.consumable_prod1') * .buy('consumable_prod1')
* .then(data => this.iap.consume(data.productType, data.receipt, data.signature)) * .then(data => this.iap.consume(data.productType, data.receipt, data.signature))
* .then(() => console.log('product was successfully consumed!')) * .then(() => console.log('product was successfully consumed!'))
* .catch( err=> console.log(err)) * .catch( err=> console.log(err))
@ -81,7 +81,7 @@ export class InAppPurchase extends IonicNativePlugin {
@Cordova({ @Cordova({
otherPromise: true otherPromise: true
}) })
buy(productId: string): Promise<{transactionId: string, receipt: string, signature: string, productType: string}> { return; } buy(productId: string): Promise<{ transactionId: string, receipt: string, signature: string, productType: string }> { return; }
/** /**
* Same as buy, but for subscription based products. * Same as buy, but for subscription based products.
@ -91,7 +91,7 @@ export class InAppPurchase extends IonicNativePlugin {
@Cordova({ @Cordova({
otherPromise: true otherPromise: true
}) })
subscribe(productId: string): Promise<{transactionId: string, receipt: string, signature: string, productType: string}> { return; } subscribe(productId: string): Promise<{ transactionId: string, receipt: string, signature: string, productType: string }> { return; }
/** /**
* Call this function after purchasing a "consumable" product to mark it as consumed. On Android, you must consume products that you want to let the user purchase multiple times. If you will not consume the product after a purchase, the next time you will attempt to purchase it you will get the error message: * Call this function after purchasing a "consumable" product to mark it as consumed. On Android, you must consume products that you want to let the user purchase multiple times. If you will not consume the product after a purchase, the next time you will attempt to purchase it you will get the error message:

View File

@ -6,7 +6,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* @description Share a photo with the instagram app * @description Share a photo with the instagram app
* *
* @usage * @usage
* ``` * ```typescript
* import { Instagram } from '@ionic-native/instagram'; * import { Instagram } from '@ionic-native/instagram';
* *
* constructor(private instagram: Instagram) { } * constructor(private instagram: Instagram) { }
@ -37,7 +37,7 @@ export class Instagram extends IonicNativePlugin {
@Cordova({ @Cordova({
callbackStyle: 'node' callbackStyle: 'node'
}) })
isInstalled(): Promise<boolean|string> { return; } isInstalled(): Promise<boolean | string> { return; }
/** /**
* Share an image on Instagram * Share an image on Instagram

View File

@ -1,7 +1,7 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
declare var window: any; declare const window: any;
export interface IntelSecurityDataOptions { export interface IntelSecurityDataOptions {
/** Non-empty string. **/ /** Non-empty string. **/
@ -40,7 +40,7 @@ export interface IntelSecurityDataOptions {
* For more information please visit the [API documentation](https://software.intel.com/en-us/app-security-api/api). * For more information please visit the [API documentation](https://software.intel.com/en-us/app-security-api/api).
* *
* @usage * @usage
* ``` * ```typescript
* import { IntelSecurity } from '@ionic-native/intel-security'; * import { IntelSecurity } from '@ionic-native/intel-security';
* ... * ...
* constructor(private intelSecurity: IntelSecurity) { } * constructor(private intelSecurity: IntelSecurity) { }

View File

@ -0,0 +1,158 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Intercom
* @description
* This is a plugin that allows your Ionic app to use Intercom for iOS and/or Intercom for Android.
* Follow the offical documentation to setup this plugin correctly: https://developers.intercom.com/docs/cordova-phonegap-configuration
*
* @usage
* ```typescript
* import { Intercom } from '@ionic-native/intercom';
*
*
* constructor(private intercom: Intercom) { }
*
* ...
*
* this.intercom.registerUnidentifiedUser();
* ...
* this.intercom.registerForPush();
*
* ```
*/
@Plugin({
pluginName: 'Intercom',
plugin: 'cordova-plugin-intercom',
pluginRef: 'intercom',
repo: 'https://github.com/intercom/intercom-cordova',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class Intercom extends IonicNativePlugin {
/**
* Register a identified user
* @param options {any} Options
* @return {Promise<any>} Returns a promise
*/
@Cordova()
registerIdentifiedUser(options: any): Promise<any> { return; }
/**
* Register a unidentified user
* @param options {any} Options
* @return {Promise<any>} Returns a promise
*/
@Cordova()
registerUnidentifiedUser(options: any): Promise<any> { return; }
/**
* This resets the Intercom integration's cache of your user's identity and wipes the slate clean.
* @return {Promise<any>} Returns a promise
*/
@Cordova()
reset(): Promise<any> { return; }
/**
*
* @param secureHash {string}
* @param secureData {any}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setSecureMode(secureHash: string, secureData: any): Promise<any> { return; }
/**
*
* @param secureHash {string}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setUserHash(secureHash: string): Promise<any> { return; }
/**
*
* @param attributes {any}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
updateUser(attributes: any): Promise<any> { return; }
/**
*
* @param eventName {string}
* @param metaData {any}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
logEvent(eventName: string, metaData: any): Promise<any> { return; }
/**
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
displayMessenger(): Promise<any> { return; }
/**
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
displayMessageComposer(): Promise<any> { return; }
/**
*
* @param initialMessage {string}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
displayMessageComposerWithInitialMessage(initialMessage: string): Promise<any> { return; }
/**
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
displayConversationsList(): Promise<any> { return; }
/**
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
unreadConversationCount(): Promise<any> { return; }
/**
*
* @param visibility {string}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setLauncherVisibility(visibility: string): Promise<any> { return; }
/**
*
* @param visibility {string}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setInAppMessageVisibility(visibility: string): Promise<any> { return; }
/**
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
hideMessenger(): Promise<any> { return; }
/**
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
registerForPush(): Promise<any> { return; }
}

View File

@ -8,7 +8,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* Debug mode is when the app is built and installed locally via xcode / eclipse / the cordova cli etc, compared to release mode when the app was downloaded from the app / play store via an end user. * Debug mode is when the app is built and installed locally via xcode / eclipse / the cordova cli etc, compared to release mode when the app was downloaded from the app / play store via an end user.
* *
* @usage * @usage
* ``` * ```typescript
* import { IsDebug } from '@ionic-native/is-debug'; * import { IsDebug } from '@ionic-native/is-debug';
* *
* constructor(private isDebug: IsDebug) { } * constructor(private isDebug: IsDebug) { }

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaCheck, IonicNativePlugin } from '@ionic-native/core'; import { Plugin, Cordova, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
declare var cordova: any; declare const cordova: any;
/** /**
* @name Jins Meme * @name Jins Meme
@ -10,7 +10,7 @@ declare var cordova: any;
* Implementation of the JINS MEME SDK * Implementation of the JINS MEME SDK
* *
* @usage * @usage
* ``` * ```typescript
* import { JinsMeme } from '@ionic-native/jins-meme'; * import { JinsMeme } from '@ionic-native/jins-meme';
* *
* constructor(private jinsMeme: JinsMeme) { } * constructor(private jinsMeme: JinsMeme) { }

View File

@ -34,7 +34,7 @@ export class Keyboard extends IonicNativePlugin {
* Hide the keyboard accessory bar with the next, previous and done buttons. * Hide the keyboard accessory bar with the next, previous and done buttons.
* @param hide {boolean} * @param hide {boolean}
*/ */
@Cordova({sync: true}) @Cordova({ sync: true })
hideKeyboardAccessoryBar(hide: boolean): void { } hideKeyboardAccessoryBar(hide: boolean): void { }
/** /**

View File

@ -56,7 +56,7 @@ export class Keychain extends IonicNativePlugin {
@Cordova({ @Cordova({
callbackOrder: 'reverse' callbackOrder: 'reverse'
}) })
set(key: string, value: string|number|boolean, useTouchID?: boolean): Promise<any> { return; } set(key: string, value: string | number | boolean, useTouchID?: boolean): Promise<any> { return; }
/** /**
* Gets a JSON value for a key * Gets a JSON value for a key

View File

@ -10,7 +10,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* On iOS, the plugin opens the app's storepage in the App Store and focuses the Review tab, where the user can leave a review by pressing "Write a review". * On iOS, the plugin opens the app's storepage in the App Store and focuses the Review tab, where the user can leave a review by pressing "Write a review".
* *
* @usage * @usage
* ``` * ```typescript
* import { LaunchReview } from '@ionic-native/launch-review'; * import { LaunchReview } from '@ionic-native/launch-review';
* *
* constructor(private launchReview: LaunchReview) { } * constructor(private launchReview: LaunchReview) { }

View File

@ -11,7 +11,7 @@ export type LinkedInLoginScopes = 'r_basicprofile' | 'r_emailaddress' | 'rw_comp
* Please see the [plugin's repo](https://github.com/zyramedia/cordova-plugin-linkedin#installation) for detailed installation steps. * Please see the [plugin's repo](https://github.com/zyramedia/cordova-plugin-linkedin#installation) for detailed installation steps.
* *
* @usage * @usage
* ``` * ```typescript
* import { LinkedIn } from '@ionic-native/linkedin'; * import { LinkedIn } from '@ionic-native/linkedin';
* *
* constructor(private linkedin: LinkedIn) { } * constructor(private linkedin: LinkedIn) { }
@ -100,10 +100,17 @@ export class LinkedIn extends IonicNativePlugin {
openProfile(memberId: string): Promise<any> { return; } openProfile(memberId: string): Promise<any> { return; }
/** /**
* Checks if there is already an existing active session. This should be used to avoid unecessary login. * Checks if there is already an existing active session. This should be used to avoid unnecessary login.
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates whether there is an active session * @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates whether there is an active session
*/ */
@Cordova() @Cordova()
hasActiveSession(): Promise<boolean> { return; } hasActiveSession(): Promise<boolean> { return; }
/**
* Checks if there is an active session and returns the access token if it exists.
* @return {Promise<any>} returns a promise that resolves with an object that contains an access token if there is an active session
*/
@Cordova()
getActiveSession(): Promise<any> { return; }
} }

View File

@ -7,7 +7,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* This Cordova/Phonegap plugin for Android and iOS to request enabling/changing of Location Services by triggering a native dialog from within the app, avoiding the need for the user to leave your app to change location settings manually. * This Cordova/Phonegap plugin for Android and iOS to request enabling/changing of Location Services by triggering a native dialog from within the app, avoiding the need for the user to leave your app to change location settings manually.
* *
* @usage * @usage
* ``` * ```typescript
* import { LocationAccuracy } from '@ionic-native/location-accuracy'; * import { LocationAccuracy } from '@ionic-native/location-accuracy';
* *
* constructor(private locationAccuracy: LocationAccuracy) { } * constructor(private locationAccuracy: LocationAccuracy) { }

View File

@ -6,7 +6,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* Opens an app's page in the market place (Google Play, App Store) * Opens an app's page in the market place (Google Play, App Store)
* *
* @usage * @usage
* ``` * ```typescript
* import { Market } from '@ionic-native/market'; * import { Market } from '@ionic-native/market';
* *
* constructor(private market: Market) { } * constructor(private market: Market) { }

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
declare var navigator: any; declare const navigator: any;
export interface MediaFile { export interface MediaFile {
/** /**
@ -33,7 +33,7 @@ export interface MediaFile {
* @param {Function} successCallback * @param {Function} successCallback
* @param {Function} errorCallback * @param {Function} errorCallback
*/ */
getFormatData(successCallback: (data: MediaFileData) => any, errorCallback?: (err: any) => any); getFormatData(successCallback: (data: MediaFileData) => any, errorCallback?: (err: any) => any): void;
} }
export interface MediaFileData { export interface MediaFileData {

View File

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { CordovaInstance, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core'; import { CordovaInstance, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var Media: any; declare const Media: any;
/** /**
@ -147,6 +147,31 @@ export type MediaErrorCallback = (error: MediaError) => void;
/** /**
* @name Media * @name Media
* @description * @description
* Some hints if you are using iOS and recording doesn't work:
* 1.) Try to use a absolute file path but remove beginning "file://".
* Then it looks like: `/var/mobile/Containers/Data/Application/AF438B8B-7724-4FBB-8E69-083463224FC4/tmp/my_file.m4a`
* Example: `this.media.create(this.file.tempDirectory.replace(/^file:\/\//, '') + 'my_file.m4a')`
* 2.) If that's not working, too, create the file before using.
* Example:
* ```typescript
* import { MediaPlugin, MediaObject } from '@ionic-native/media';
* import { File } from '@ionic-native/file';
*
* ...
*
* constructor(private media: MediaPlugin, private file: File) { }
*
* ...
*
* this.file.createFile(this.file.tempDirectory, 'my_file.m4a', true).then(() => {
* let file = this.media.create(this.file.tempDirectory.replace(/^file:\/\//, '') + 'my_file.m4a');
* file.startRecord();
* window.setTimeout(() => file.stopRecord(), 10000);
* });
* ```
*
* You can find the reasons here: https://github.com/driftyco/ionic-native/issues/1452#issuecomment-299605906
*
* @usage * @usage
* ```typescript * ```typescript
* import { MediaPlugin, MediaObject } from '@ionic-native/media'; * import { MediaPlugin, MediaObject } from '@ionic-native/media';

View File

@ -9,8 +9,8 @@ declare var mixpanel: any;
* Cordova Plugin that wraps Mixpanel SDK for Android and iOS * Cordova Plugin that wraps Mixpanel SDK for Android and iOS
* *
* @usage * @usage
* ``` * ```typescript
* import { Mixpanel, MixpanelPeople } from '@ionic-native/mixpanel'; * import { Mixpanel } from '@ionic-native/mixpanel';
* *
* constructor(private mixpanel: Mixpanel, private mixpanelPeople: MixpanelPeople) { } * constructor(private mixpanel: Mixpanel, private mixpanelPeople: MixpanelPeople) { }
* *
@ -86,6 +86,14 @@ export class Mixpanel extends IonicNativePlugin {
@Cordova() @Cordova()
reset(): Promise<any> { return; } reset(): Promise<any> { return; }
/**
*
* @param eventName {string}
* @returns {Promise<any>}
*/
@Cordova()
timeEvent(eventName: string): Promise<any> { return; }
/** /**
* *
* @param eventName {string} * @param eventName {string}
@ -98,13 +106,6 @@ export class Mixpanel extends IonicNativePlugin {
}) })
track(eventName: string, eventProperties?: any): Promise<any> { return; } track(eventName: string, eventProperties?: any): Promise<any> { return; }
/**
*
* @returns {Promise<any>}
*/
@Cordova()
showSurvey(): Promise<any> { return; }
} }
/** /**
* @hidden * @hidden

View File

@ -0,0 +1,224 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Mobile Accessibility
* @description
* This plugin exposes information on the status of various accessibility features of mobile operating systems, including, for example, whether a screen reader is running, invert colors is enabled, and the preferred scaling for text.
* It also allows an application to send a string to be spoken by the screen reader, or a command to stop the screen reader from speaking.
*
* @usage
* ```typescript
* import { MobileAccessibility } from 'ionic-native';
*
*
* constructor(private mobileAccessibility: MobileAccessibility) { }
*
* ...
*
* if(this.mobileAccessibility.isScreenReaderRunningCallback();
*
* ```
*/
@Plugin({
pluginName: 'MobileAccessibility',
plugin: 'https://github.com/phonegap/phonegap-mobile-accessibility.git',
pluginRef: 'MobileAccessibilityNotifications',
repo: 'https://github.com/phonegap/phonegap-mobile-accessibility',
platforms: ['Amazon Fire OS', 'Android', 'iOS']
})
@Injectable()
export class MobileAccessibility extends IonicNativePlugin {
MobileAccessibilityNotifications: {
ANNOUNCEMENT: 'ANNOUNCEMENT',
BOLD_TEXT_STATUS_CHANGED: 'BOLD_TEXT_STATUS_CHANGED',
CLOSED_CAPTIONING_STATUS_CHANGED: 'CLOSED_CAPTIONING_STATUS_CHANGED',
DARKER_SYSTEM_COLORS_STATUS_CHANGED: 'DARKER_SYSTEM_COLORS_STATUS_CHANGED',
GRAYSCALE_STATUS_CHANGED: 'GRAYSCALE_STATUS_CHANGED',
GUIDED_ACCESS_STATUS_CHANGED: 'GUIDED_ACCESS_STATUS_CHANGED',
INVERT_COLORS_STATUS_CHANGED: 'INVERT_COLORS_STATUS_CHANGED',
LAYOUT_CHANGED: 'LAYOUT_CHANGED',
MONO_AUDIO_STATUS_CHANGED: 'MONO_AUDIO_STATUS_CHANGED',
PAGE_SCROLLED: 'PAGE_SCROLLED',
REDUCE_MOTION_STATUS_CHANGED: 'REDUCE_MOTION_STATUS_CHANGED',
REDUCE_TRANSPARENCY_STATUS_CHANGED: 'REDUCE_TRANSPARENCY_STATUS_CHANGED',
SCREEN_CHANGED: 'SCREEN_CHANGED',
SCREEN_READER_STATUS_CHANGED: 'SCREEN_READER_STATUS_CHANGED',
SPEAK_SCREEN_STATUS_CHANGED: 'SPEAK_SCREEN_STATUS_CHANGED',
SPEAK_SELECTION_STATUS_CHANGED: 'SPEAK_SELECTION_STATUS_CHANGED',
SWITCH_CONTROL_STATUS_CHANGED: 'SWITCH_CONTROL_STATUS_CHANGED',
TOUCH_EXPLORATION_STATUS_CHANGED: 'TOUCH_EXPLORATION_STATUS_CHANGED'
};
/**
* Makes an asynchronous call to native MobileAccessibility to determine if a screen reader is running.
* @returns {Promise<boolean>} A result method to receive the boolean result asynchronously from the native MobileAccessibility plugin.
*/
@Cordova()
isScreenReaderRunning(): Promise<boolean> { return; }
/**
* An iOS-specific proxy for the MobileAccessibility.isScreenReaderRunning method
* @returns {Promise<boolean>} A result method to receive the boolean result asynchronously from the native MobileAccessibility plugin.
*/
@Cordova({ platforms: ['iOS'] })
isVoiceOverRunningCallback(): Promise<boolean> { return; }
/**
* An Android/Amazon Fire OS-specific proxy for the MobileAccessibility.isScreenReaderRunning method.
* @returns {Promise<boolean>} A result method to receive the boolean result asynchronously from the native MobileAccessibility plugin.
*/
@Cordova({ platforms: ['Amazon Fire OS', 'Android'] })
isTalkBackRunningCallback(): Promise<boolean> { return; }
/**
* On Android, this method returns true if ChromeVox is active and properly initialized with access to the text to speech API in the WebView.
* If TalkBack is running but ChromeVox is not active, this method is useful to alert the user of a potential problem.
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['Amazon Fire OS', 'Android'] })
isChromeVoxActive(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isBoldTextEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova()
isClosedCaptioningEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isDarkerSystemColorsEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isGrayscaleEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isGuidedAccessEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isInvertColorsEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isMonoAudioEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isReduceMotionEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isReduceTransparencyEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isSpeakScreenEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isSpeakSelectionEnabledCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
isSwitchControlRunningCallback(): Promise<boolean> { return; }
/**
*
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['Amazon Fire OS', 'Android'] })
isTouchExplorationEnabledCallback(): Promise<boolean> { return; }
/**
*
* * @returns {Promise<number>} Returns the result
*/
@Cordova()
getTextZoomCallback(): Promise<number> { return; }
/**
* @param textZoom {nuber} A percentage value by which text in the WebView should be scaled.
*/
@Cordova({ sync: true })
setTextZoom(textZoom: number): void { }
/**
*
*/
@Cordova({ sync: true })
updateTextZoom(): void { }
/**
* A Boolean value which specifies whether to use the preferred text zoom of a default percent value of 100.
* @param value {boolean} Returns the result
*/
@Cordova({ sync: true })
usePreferredTextZoom(value: boolean): void { }
/**
* Posts a notification with a string for the screen reader to announce if it is running.
* @param mobileAccessibilityNotification {any}
* @param value {string} A string to be announced by a screen reader.
* @returns {Promise<boolean>} Returns the result
*/
@Cordova({ platforms: ['iOS'] })
postNotification(mobileAccessibilityNotification: any, value: string): Promise<boolean> { return; }
/**
* Speaks a given string through the screenreader. On Android, if ChromeVox is active, it will use the specified queueMode and properties.
* @param value {string}
* @param queueMode {mumber}
* @param properties {any}
*/
@Cordova({ sync: true })
speak(value: string, queueMode?: number, properties?: any): void { }
/**
* Stops speech.
*/
@Cordova({ sync: true })
stop(): void { }
}

View File

@ -25,7 +25,7 @@ export interface MusicControlsOptions {
* Handle also headset event (plug, unplug, headset button). * Handle also headset event (plug, unplug, headset button).
* *
* @usage * @usage
* ``` * ```typescript
* import { MusicControls } from '@ionic-native/music-controls'; * import { MusicControls } from '@ionic-native/music-controls';
* *
* constructor(private musicControls: MusicControls) { } * constructor(private musicControls: MusicControls) { }
@ -115,14 +115,14 @@ export class MusicControls extends IonicNativePlugin {
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova() @Cordova()
create(options: MusicControlsOptions): Promise<any> {return; } create(options: MusicControlsOptions): Promise<any> { return; }
/** /**
* Destroy the media controller * Destroy the media controller
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova() @Cordova()
destroy(): Promise<any> {return; } destroy(): Promise<any> { return; }
/** /**
* Subscribe to the events of the media controller * Subscribe to the events of the media controller
@ -131,25 +131,25 @@ export class MusicControls extends IonicNativePlugin {
@Cordova({ @Cordova({
observable: true observable: true
}) })
subscribe(): Observable<any> {return; } subscribe(): Observable<any> { return; }
/** /**
* Start listening for events, this enables the Observable from the subscribe method * Start listening for events, this enables the Observable from the subscribe method
*/ */
@Cordova({sync: true}) @Cordova({ sync: true })
listen(): void {} listen(): void { }
/** /**
* Toggle play/pause: * Toggle play/pause:
* @param isPlaying {boolean} * @param isPlaying {boolean}
*/ */
@Cordova() @Cordova()
updateIsPlaying(isPlaying: boolean): void {} updateIsPlaying(isPlaying: boolean): void { }
/** /**
* Toggle dismissable: * Toggle dismissable:
* @param dismissable {boolean} * @param dismissable {boolean}
*/ */
@Cordova() @Cordova()
updateDismissable(dismissable: boolean): void {} updateDismissable(dismissable: boolean): void { }
} }

View File

@ -16,11 +16,11 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* ... * ...
* *
* this.nativeGeocoder.reverseGeocode(52.5072095, 13.1452818) * this.nativeGeocoder.reverseGeocode(52.5072095, 13.1452818)
* .then((result: NativeGeocoderReverseResult) => console.log("The address is " + result.street + " in " + result.countryCode)) * .then((result: NativeGeocoderReverseResult) => console.log('The address is ' + result.street + ' in ' + result.countryCode))
* .catch((error: any) => console.log(error)); * .catch((error: any) => console.log(error));
* *
* this.nativeGeocoder.forwardGeocode("Berlin") * this.nativeGeocoder.forwardGeocode('Berlin')
* .then((coordinates: NativeGeocoderForwardResult) => console.log("The coordinates are latitude=" + coordinates.latitude + " and longitude=" + coordinates.longitude)) * .then((coordinates: NativeGeocoderForwardResult) => console.log('The coordinates are latitude=' + coordinates.latitude + ' and longitude=' + coordinates.longitude))
* .catch((error: any) => console.log(error)); * .catch((error: any) => console.log(error));
* ``` * ```
* @interfaces * @interfaces

View File

@ -22,7 +22,7 @@ export interface NativeTransitionOptions {
* The Native Page Transitions plugin uses native hardware acceleration to animate your transitions between views. You have complete control over the type of transition, the duration, and direction. * The Native Page Transitions plugin uses native hardware acceleration to animate your transitions between views. You have complete control over the type of transition, the duration, and direction.
* *
* @usage * @usage
* ``` * ```typescript
* import { NativePageTransitions, NativeTransitionOptions } from '@ionic-native/native-page-transitions'; * import { NativePageTransitions, NativeTransitionOptions } from '@ionic-native/native-page-transitions';
* *
* constructor(private nativePageTransitions: NativePageTransitions) { } * constructor(private nativePageTransitions: NativePageTransitions) { }
@ -91,7 +91,7 @@ export class NativePageTransitions extends IonicNativePlugin {
* @param options {NativeTransitionOptions} Options for the transition * @param options {NativeTransitionOptions} Options for the transition
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova({platforms: ['iOS', 'Android']}) @Cordova({ platforms: ['iOS', 'Android'] })
fade(options: NativeTransitionOptions): Promise<any> { return; } fade(options: NativeTransitionOptions): Promise<any> { return; }
@ -100,7 +100,7 @@ export class NativePageTransitions extends IonicNativePlugin {
* @param options {NativeTransitionOptions} Options for the transition * @param options {NativeTransitionOptions} Options for the transition
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova({platforms: ['iOS', 'Android']}) @Cordova({ platforms: ['iOS', 'Android'] })
drawer(options: NativeTransitionOptions): Promise<any> { return; } drawer(options: NativeTransitionOptions): Promise<any> { return; }
@ -110,7 +110,21 @@ export class NativePageTransitions extends IonicNativePlugin {
* @param options {NativeTransitionOptions} Options for the transition * @param options {NativeTransitionOptions} Options for the transition
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
@Cordova({platforms: ['iOS']}) @Cordova({ platforms: ['iOS'] })
curl(options: NativeTransitionOptions): Promise<any> { return; } curl(options: NativeTransitionOptions): Promise<any> { return; }
/**
* Execute pending transition
* @returns {Promise<any>}
*/
@Cordova()
executePendingTransition(): Promise<any> { return; }
/**
* Cancel pending transition
* @returns {Promise<any>}
*/
@Cordova()
cancelPendingTransition(): Promise<any> { return; }
} }

Some files were not shown because too many files have changed in this diff Show More