mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2025-03-04 00:13:06 +08:00
Merge branch 'master' into improved-plugin-docs
This commit is contained in:
commit
f223481307
28
.github/ISSUE_TEMPLATE.md
vendored
Normal file
28
.github/ISSUE_TEMPLATE.md
vendored
Normal 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
|
||||||
|
```
|
83
CHANGELOG.md
83
CHANGELOG.md
@ -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)
|
||||||
|
|
||||||
|
30
README.md
30
README.md
@ -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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
## 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)
|
||||||
|
15
circle.yml
15
circle.yml
@ -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
|
||||||
|
12
gulpfile.js
12
gulpfile.js
@ -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
55
karma.conf.js
Normal 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);
|
||||||
|
|
||||||
|
};
|
28
package.json
28
package.json
@ -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": {
|
||||||
|
@ -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) {
|
||||||
// oops! something went wrong.
|
|
||||||
callback(`\n\nBuilding ${pluginName} failed.`);
|
if (!ignoreErrors) {
|
||||||
console.log(err);
|
// oops! something went wrong.
|
||||||
return;
|
console.log(err);
|
||||||
|
callback(`\n\nBuilding ${pluginName} failed.`);
|
||||||
|
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!');
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
|
@ -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
65
scripts/ci-tests.js
Normal 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);
|
||||||
|
});
|
2
scripts/docs/templates/readme.template.md
vendored
2
scripts/docs/templates/readme.template.md
vendored
@ -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 $>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
234
src/@ionic-native/core/decorators.spec.ts
Normal file
234
src/@ionic-native/core/decorators.spec.ts
Normal 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');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -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;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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';
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
@ -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(); });
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
|
@ -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; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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; }
|
||||||
}
|
}
|
||||||
|
226
src/@ionic-native/plugins/android-permissions/index.ts
Normal file
226
src/@ionic-native/plugins/android-permissions/index.ts
Normal 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; }
|
||||||
|
|
||||||
|
}
|
42
src/@ionic-native/plugins/app-minimize/index.ts
Normal file
42
src/@ionic-native/plugins/app-minimize/index.ts
Normal 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; }
|
||||||
|
|
||||||
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,12 +107,24 @@ export interface AppUrls {
|
|||||||
* constructor(private appRate: AppRate) { }
|
* constructor(private appRate: AppRate) { }
|
||||||
*
|
*
|
||||||
* ...
|
* ...
|
||||||
|
* // set certain preferences
|
||||||
|
* this.appRate.preferences.storeAppURL = {
|
||||||
|
* ios: '<app_id>',
|
||||||
|
* android: 'market://details?id=<package_name>',
|
||||||
|
* windows: 'ms-windows-store://review/?ProductId=<store_id>'
|
||||||
|
* };
|
||||||
*
|
*
|
||||||
* this.appRate.preferences.storeAppURL = {
|
* this.appRate.promptForRating(true);
|
||||||
* ios: '<my_app_id>',
|
*
|
||||||
|
* // or, override the whole preferences object
|
||||||
|
* this.appRate.preferences = {
|
||||||
|
* usesUntilPrompt: 3,
|
||||||
|
* storeAppURL: {
|
||||||
|
* 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(false);
|
* this.appRate.promptForRating(false);
|
||||||
* ```
|
* ```
|
||||||
|
@ -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; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
@ -76,21 +73,21 @@ export class Appodeal extends IonicNativePlugin {
|
|||||||
showWithPlacement(
|
showWithPlacement(
|
||||||
adType: number,
|
adType: number,
|
||||||
placement: any
|
placement: any
|
||||||
): Promise<any> { return; };
|
): Promise<any> { return; };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hide ad of specified type
|
* hide ad of specified type
|
||||||
* @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,
|
||||||
|
47
src/@ionic-native/plugins/autostart/index.ts
Normal file
47
src/@ionic-native/plugins/autostart/index.ts
Normal 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 { }
|
||||||
|
|
||||||
|
}
|
@ -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 {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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 { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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 { }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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) { }
|
||||||
|
@ -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.
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
* });
|
* });
|
||||||
* ```
|
* ```
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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'));
|
||||||
|
@ -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) {
|
||||||
|
@ -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) { }
|
||||||
|
@ -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) { }
|
||||||
|
@ -39,12 +39,12 @@ export interface CameraPreviewOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface CameraPreviewPictureOptions {
|
export interface CameraPreviewPictureOptions {
|
||||||
/** The width in pixels, default 0 */
|
/** The width in pixels, default 0 */
|
||||||
width?: number;
|
width?: number;
|
||||||
/** The height in pixels, default 0 */
|
/** The height in pixels, default 0 */
|
||||||
height?: number;
|
height?: number;
|
||||||
/** The picture quality, 0 - 100, default 85 */
|
/** The picture quality, 0 - 100, default 85 */
|
||||||
quality?: number;
|
quality?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -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,10 +251,10 @@ 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>}
|
||||||
*/
|
*/
|
||||||
@Cordova()
|
@Cordova()
|
||||||
getMaxZoom(): Promise<any> { return; }
|
getMaxZoom(): Promise<any> { return; }
|
||||||
|
|
||||||
@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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) { }
|
||||||
|
@ -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.
|
||||||
|
@ -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;
|
||||||
@ -145,16 +148,16 @@ export interface IContactName {
|
|||||||
*/
|
*/
|
||||||
export class ContactName implements IContactName {
|
export class ContactName implements IContactName {
|
||||||
constructor(public formatted?: string,
|
constructor(public formatted?: string,
|
||||||
public familyName?: string,
|
public familyName?: string,
|
||||||
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 {
|
||||||
/** A string that indicates what type of field this is, home for example. */
|
/** A string that indicates what type of field this is, home for example. */
|
||||||
type?: string;
|
type?: string;
|
||||||
/** The value of the field, such as a phone number or email address. */
|
/** The value of the field, such as a phone number or email address. */
|
||||||
value?: string;
|
value?: string;
|
||||||
/** Set to true if this ContactField contains the user's preferred value. */
|
/** Set to true if this ContactField contains the user's preferred value. */
|
||||||
@ -166,15 +169,15 @@ 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 {
|
||||||
/** Set to true if this ContactAddress contains the user's preferred value. */
|
/** Set to true if this ContactAddress contains the user's preferred value. */
|
||||||
pref?: boolean;
|
pref?: boolean;
|
||||||
/** A string indicating what type of field this is, home for example. */
|
/** A string indicating what type of field this is, home for example. */
|
||||||
type?: string;
|
type?: string;
|
||||||
/** The full address formatted for display. */
|
/** The full address formatted for display. */
|
||||||
formatted?: string;
|
formatted?: string;
|
||||||
/** The full street address. */
|
/** The full street address. */
|
||||||
@ -194,20 +197,20 @@ export interface IContactAddress {
|
|||||||
*/
|
*/
|
||||||
export class ContactAddress implements IContactAddress {
|
export class ContactAddress implements IContactAddress {
|
||||||
constructor(public pref?: boolean,
|
constructor(public pref?: boolean,
|
||||||
public type?: string,
|
public type?: string,
|
||||||
public formatted?: string,
|
public formatted?: string,
|
||||||
public streetAddress?: string,
|
public streetAddress?: string,
|
||||||
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 {
|
||||||
/** Set to true if this ContactOrganization contains the user's preferred value. */
|
/** Set to true if this ContactOrganization contains the user's preferred value. */
|
||||||
pref?: boolean;
|
pref?: boolean;
|
||||||
/** A string that indicates what type of field this is, home for example. */
|
/** A string that indicates what type of field this is, home for example. */
|
||||||
type?: string;
|
type?: string;
|
||||||
/** The name of the organization. */
|
/** The name of the organization. */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** The department the contract works for. */
|
/** The department the contract works for. */
|
||||||
@ -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. */
|
||||||
@ -248,9 +251,9 @@ export interface IContactFindOptions {
|
|||||||
*/
|
*/
|
||||||
export class ContactFindOptions implements IContactFindOptions {
|
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;
|
||||||
|
@ -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) {
|
||||||
@ -38,6 +38,6 @@ export class CouchbaseLite extends IonicNativePlugin {
|
|||||||
@Cordova({
|
@Cordova({
|
||||||
callbackStyle: 'node'
|
callbackStyle: 'node'
|
||||||
})
|
})
|
||||||
getURL(): Promise<any> { return; }
|
getURL(): Promise<any> { return; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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) { }
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
102
src/@ionic-native/plugins/document-viewer/index.ts
Normal file
102
src/@ionic-native/plugins/document-viewer/index.ts
Normal 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 { }
|
||||||
|
|
||||||
|
}
|
@ -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 {
|
||||||
|
@ -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'
|
||||||
* }
|
* }
|
||||||
* ```
|
* ```
|
||||||
|
118
src/@ionic-native/plugins/fcm/index.ts
Normal file
118
src/@ionic-native/plugins/fcm/index.ts
Normal 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; }
|
||||||
|
|
||||||
|
}
|
@ -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']
|
||||||
|
52
src/@ionic-native/plugins/file-encryption/index.ts
Normal file
52
src/@ionic-native/plugins/file-encryption/index.ts
Normal 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; }
|
||||||
|
|
||||||
|
}
|
@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
@ -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))
|
||||||
|
@ -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({
|
||||||
@ -68,13 +69,11 @@ 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
|
||||||
})
|
})
|
||||||
|
@ -17,7 +17,6 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
|||||||
*
|
*
|
||||||
* this.flashlight.switchOn();
|
* this.flashlight.switchOn();
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
@Plugin({
|
@Plugin({
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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 = () => { };
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ export interface PositionError {
|
|||||||
/**
|
/**
|
||||||
* A message that can describe the error that occurred
|
* A message that can describe the error that occurred
|
||||||
*/
|
*/
|
||||||
message: string;
|
message: string;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
@ -42,12 +42,12 @@ export const GoogleMapsAnimation = {
|
|||||||
* @hidden
|
* @hidden
|
||||||
*/
|
*/
|
||||||
export const GoogleMapsMapTypeId = {
|
export const GoogleMapsMapTypeId = {
|
||||||
HYBRID: 'MAP_TYPE_HYBRID',
|
HYBRID: 'MAP_TYPE_HYBRID',
|
||||||
NONE: 'MAP_TYPE_NONE',
|
NONE: 'MAP_TYPE_NONE',
|
||||||
NORMAL: 'MAP_TYPE_NORMAL',
|
NORMAL: 'MAP_TYPE_NORMAL',
|
||||||
ROADMAP: 'MAP_TYPE_ROADMAP',
|
ROADMAP: 'MAP_TYPE_ROADMAP',
|
||||||
SATELLITE: 'MAP_TYPE_SATELLITE',
|
SATELLITE: 'MAP_TYPE_SATELLITE',
|
||||||
TERAIN: 'MAP_TYPE_TERRAIN'
|
TERAIN: 'MAP_TYPE_TERRAIN'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -214,13 +214,13 @@ export class GoogleMap {
|
|||||||
@InstanceCheck()
|
@InstanceCheck()
|
||||||
addMarker(options: MarkerOptions): Promise<Marker | any> {
|
addMarker(options: MarkerOptions): Promise<Marker | any> {
|
||||||
return new Promise<Marker>((resolve, reject) => {
|
return new Promise<Marker>((resolve, reject) => {
|
||||||
this._objectInstance.addMarker(options, (marker: any) => {
|
this._objectInstance.addMarker(options, (marker: any) => {
|
||||||
if (marker) {
|
if (marker) {
|
||||||
resolve(new Marker(marker));
|
resolve(new Marker(marker));
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,13 +230,13 @@ export class GoogleMap {
|
|||||||
@InstanceCheck()
|
@InstanceCheck()
|
||||||
addCircle(options: CircleOptions): Promise<Circle | any> {
|
addCircle(options: CircleOptions): Promise<Circle | any> {
|
||||||
return new Promise<Circle>((resolve, reject) => {
|
return new Promise<Circle>((resolve, reject) => {
|
||||||
this._objectInstance.addCircle(options, (circle: any) => {
|
this._objectInstance.addCircle(options, (circle: any) => {
|
||||||
if (circle) {
|
if (circle) {
|
||||||
resolve(new Circle(circle));
|
resolve(new Circle(circle));
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,13 +246,13 @@ export class GoogleMap {
|
|||||||
@InstanceCheck()
|
@InstanceCheck()
|
||||||
addPolygon(options: PolygonOptions): Promise<Polygon | any> {
|
addPolygon(options: PolygonOptions): Promise<Polygon | any> {
|
||||||
return new Promise<Polygon>((resolve, reject) => {
|
return new Promise<Polygon>((resolve, reject) => {
|
||||||
this._objectInstance.addPolygon(options, (polygon: any) => {
|
this._objectInstance.addPolygon(options, (polygon: any) => {
|
||||||
if (polygon) {
|
if (polygon) {
|
||||||
resolve(new Polygon(polygon));
|
resolve(new Polygon(polygon));
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,13 +262,13 @@ export class GoogleMap {
|
|||||||
@InstanceCheck()
|
@InstanceCheck()
|
||||||
addPolyline(options: PolylineOptions): Promise<Polyline | any> {
|
addPolyline(options: PolylineOptions): Promise<Polyline | any> {
|
||||||
return new Promise<Polyline>((resolve, reject) => {
|
return new Promise<Polyline>((resolve, reject) => {
|
||||||
this._objectInstance.addPolyline(options, (polyline: any) => {
|
this._objectInstance.addPolyline(options, (polyline: any) => {
|
||||||
if (polyline) {
|
if (polyline) {
|
||||||
resolve(new Polyline(polyline));
|
resolve(new Polyline(polyline));
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,13 +278,13 @@ export class GoogleMap {
|
|||||||
@InstanceCheck()
|
@InstanceCheck()
|
||||||
addTileOverlay(options: TileOverlayOptions): Promise<TileOverlay | any> {
|
addTileOverlay(options: TileOverlayOptions): Promise<TileOverlay | any> {
|
||||||
return new Promise<TileOverlay>((resolve, reject) => {
|
return new Promise<TileOverlay>((resolve, reject) => {
|
||||||
this._objectInstance.addTileOverlay(options, (tileOverlay: any) => {
|
this._objectInstance.addTileOverlay(options, (tileOverlay: any) => {
|
||||||
if (tileOverlay) {
|
if (tileOverlay) {
|
||||||
resolve(new TileOverlay(tileOverlay));
|
resolve(new TileOverlay(tileOverlay));
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,13 +294,13 @@ export class GoogleMap {
|
|||||||
@InstanceCheck()
|
@InstanceCheck()
|
||||||
addGroundOverlay(options: GroundOverlayOptions): Promise<GroundOverlay | any> {
|
addGroundOverlay(options: GroundOverlayOptions): Promise<GroundOverlay | any> {
|
||||||
return new Promise<GroundOverlay>((resolve, reject) => {
|
return new Promise<GroundOverlay>((resolve, reject) => {
|
||||||
this._objectInstance.addGroundOverlay(options, (groundOverlay: any) => {
|
this._objectInstance.addGroundOverlay(options, (groundOverlay: any) => {
|
||||||
if (groundOverlay) {
|
if (groundOverlay) {
|
||||||
resolve(new GroundOverlay(groundOverlay));
|
resolve(new GroundOverlay(groundOverlay));
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,13 +310,13 @@ export class GoogleMap {
|
|||||||
@InstanceCheck()
|
@InstanceCheck()
|
||||||
addKmlOverlay(options: KmlOverlayOptions): Promise<KmlOverlay | any> {
|
addKmlOverlay(options: KmlOverlayOptions): Promise<KmlOverlay | any> {
|
||||||
return new Promise<KmlOverlay>((resolve, reject) => {
|
return new Promise<KmlOverlay>((resolve, reject) => {
|
||||||
this._objectInstance.addKmlOverlay(options, (kmlOverlay: any) => {
|
this._objectInstance.addKmlOverlay(options, (kmlOverlay: any) => {
|
||||||
if (kmlOverlay) {
|
if (kmlOverlay) {
|
||||||
resolve(new KmlOverlay(kmlOverlay));
|
resolve(new KmlOverlay(kmlOverlay));
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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({
|
||||||
|
309
src/@ionic-native/plugins/health-kit/index.ts
Normal file
309
src/@ionic-native/plugins/health-kit/index.ts
Normal 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; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -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';
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
@ -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) { }
|
||||||
|
@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -2,39 +2,39 @@ import { Injectable } from '@angular/core';
|
|||||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||||
|
|
||||||
export interface ImageResizerOptions {
|
export interface ImageResizerOptions {
|
||||||
/**
|
/**
|
||||||
* The URI for the image on the device to get scaled
|
* The URI for the image on the device to get scaled
|
||||||
*/
|
*/
|
||||||
uri: string;
|
uri: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The width of the new image
|
* The width of the new image
|
||||||
*/
|
*/
|
||||||
width: number;
|
width: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The height of the new image
|
* The height of the new image
|
||||||
*/
|
*/
|
||||||
height: number;
|
height: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the folder the image should be put
|
* The name of the folder the image should be put
|
||||||
* (Android only)
|
* (Android only)
|
||||||
*/
|
*/
|
||||||
folderName?: string;
|
folderName?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Quality given as Number for the quality of the new image
|
* Quality given as Number for the quality of the new image
|
||||||
* (Android and iOS only)
|
* (Android and iOS only)
|
||||||
*/
|
*/
|
||||||
quality?: number;
|
quality?: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A custom name for the file. Default name is a timestamp
|
* A custom name for the file. Default name is a timestamp
|
||||||
* (Android and Windows only)
|
* (Android and Windows only)
|
||||||
*/
|
*/
|
||||||
fileName?: string;
|
fileName?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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(...);
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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) { }
|
||||||
|
158
src/@ionic-native/plugins/intercom/index.ts
Normal file
158
src/@ionic-native/plugins/intercom/index.ts
Normal 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; }
|
||||||
|
|
||||||
|
}
|
@ -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) { }
|
||||||
|
@ -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) { }
|
||||||
@ -75,11 +75,11 @@ export class JinsMeme extends IonicNativePlugin {
|
|||||||
observable: true
|
observable: true
|
||||||
})
|
})
|
||||||
connect(target: string): Observable<any> {
|
connect(target: string): Observable<any> {
|
||||||
return new Observable<any>((observer: any) => {
|
return new Observable<any>((observer: any) => {
|
||||||
let data = cordova.plugins.JinsMemePlugin.connect(target, observer.next.bind(observer), observer.complete.bind(observer), observer.error.bind(observer));
|
let data = cordova.plugins.JinsMemePlugin.connect(target, observer.next.bind(observer), observer.complete.bind(observer), observer.error.bind(observer));
|
||||||
return () => console.log(data);
|
return () => console.log(data);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Set auto connection mode.
|
* Set auto connection mode.
|
||||||
*@param {Boolean} flag
|
*@param {Boolean} flag
|
||||||
@ -109,10 +109,10 @@ export class JinsMeme extends IonicNativePlugin {
|
|||||||
clearWithArgs: true
|
clearWithArgs: true
|
||||||
})
|
})
|
||||||
startDataReport(): Observable<any> { return; }
|
startDataReport(): Observable<any> { return; }
|
||||||
/**
|
/**
|
||||||
* Stops receiving data.
|
* Stops receiving data.
|
||||||
*@returns {Promise<any>}
|
*@returns {Promise<any>}
|
||||||
*/
|
*/
|
||||||
@Cordova()
|
@Cordova()
|
||||||
stopDataReport(): Promise<any> { return; }
|
stopDataReport(): Promise<any> { return; }
|
||||||
/**
|
/**
|
||||||
|
@ -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 { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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
|
||||||
|
@ -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) { }
|
||||||
|
@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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) { }
|
||||||
|
@ -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) { }
|
||||||
|
@ -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 {
|
||||||
|
@ -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';
|
||||||
|
@ -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
|
||||||
|
224
src/@ionic-native/plugins/mobile-accessibility/index.ts
Normal file
224
src/@ionic-native/plugins/mobile-accessibility/index.ts
Normal 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 { }
|
||||||
|
|
||||||
|
}
|
@ -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 { }
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user