mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2026-02-16 00:00:02 +08:00
Compare commits
381 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d70ec025d | ||
|
|
8d4406ae82 | ||
|
|
ca922761b6 | ||
|
|
3bb669b6ba | ||
|
|
6cd97ca0ee | ||
|
|
0a12dc0792 | ||
|
|
2093c5cb29 | ||
|
|
d43fe72f7b | ||
|
|
c038c6331c | ||
|
|
212bd63191 | ||
|
|
4694c422aa | ||
|
|
38bbf01e8c | ||
|
|
b9b781ddee | ||
|
|
6053296998 | ||
|
|
9f72592fcc | ||
|
|
7c2a761078 | ||
|
|
9a5211001f | ||
|
|
03f578909b | ||
|
|
acd1a80e4d | ||
|
|
bf41506324 | ||
|
|
47dd7e90ed | ||
|
|
afca8761d7 | ||
|
|
5159367db8 | ||
|
|
d06fa48866 | ||
|
|
8f00e44d21 | ||
|
|
9e6f178378 | ||
|
|
997c96b97f | ||
|
|
ae94c710af | ||
|
|
86b2a2ca73 | ||
|
|
c1ce5dac18 | ||
|
|
091ac7a68c | ||
|
|
bd5bcdc9b7 | ||
|
|
dc707fd80c | ||
|
|
3e933bbaff | ||
|
|
86181afc27 | ||
|
|
784f948a5b | ||
|
|
2a4bcee6a0 | ||
|
|
d95ae68c9c | ||
|
|
8b78644680 | ||
|
|
5d48cfd419 | ||
|
|
b2c873cc99 | ||
|
|
bb2291cd16 | ||
|
|
7255795ae5 | ||
|
|
c9b49ccc39 | ||
|
|
9844274213 | ||
|
|
154a4bcacb | ||
|
|
10a96fcdd6 | ||
|
|
7ab522edec | ||
|
|
50d7762b8a | ||
|
|
0a8146b76c | ||
|
|
2d60db9d3b | ||
|
|
3378d7a398 | ||
|
|
61defd480c | ||
|
|
4e28295486 | ||
|
|
dee32c921c | ||
|
|
2475c57e00 | ||
|
|
79b522f832 | ||
|
|
ccb2e55435 | ||
|
|
f09c9cfe9a | ||
|
|
d96d3eef07 | ||
|
|
95daca166b | ||
|
|
196be026ea | ||
|
|
1fa7c91105 | ||
|
|
ba105be55f | ||
|
|
92d26eab94 | ||
|
|
ce6e412788 | ||
|
|
7243ed3960 | ||
|
|
264670211d | ||
|
|
847147a5fa | ||
|
|
4639bf9a94 | ||
|
|
abb77e3e08 | ||
|
|
975f08b7b5 | ||
|
|
773722b767 | ||
|
|
447aa56e3c | ||
|
|
8d22798278 | ||
|
|
30297fb81d | ||
|
|
ac777fca40 | ||
|
|
43b70a12b5 | ||
|
|
ef28078815 | ||
|
|
e304ce0e53 | ||
|
|
9e5f03f15d | ||
|
|
465d5519d0 | ||
|
|
d683b9e5df | ||
|
|
2b2476e873 | ||
|
|
196adc8b2f | ||
|
|
363b41e075 | ||
|
|
2179699622 | ||
|
|
e65406cc2f | ||
|
|
ddb6d43ffa | ||
|
|
30ed33a046 | ||
|
|
3d0a12d40d | ||
|
|
6ca5beaf0b | ||
|
|
536a906366 | ||
|
|
7fcafaae81 | ||
|
|
1a7a0e7cc0 | ||
|
|
34bf136703 | ||
|
|
bb798340c5 | ||
|
|
1b04ebb5e2 | ||
|
|
a150d4d522 | ||
|
|
4246d47a6c | ||
|
|
024099a772 | ||
|
|
fff99694ba | ||
|
|
429529a5ee | ||
|
|
e2419a26b2 | ||
|
|
10eb3eeeeb | ||
|
|
533cc4efc9 | ||
|
|
6b433b5373 | ||
|
|
e684db479e | ||
|
|
81c576c28e | ||
|
|
e2f3702d0b | ||
|
|
806766e33e | ||
|
|
432c0e901d | ||
|
|
fb70a24c61 | ||
|
|
202c680643 | ||
|
|
7b94d4fccf | ||
|
|
5b15bb9f46 | ||
|
|
c3930c814a | ||
|
|
57af5c5e73 | ||
|
|
29604d6d3d | ||
|
|
76effe98f8 | ||
|
|
0783520723 | ||
|
|
ef898efcc6 | ||
|
|
fdd12b58b3 | ||
|
|
80047907ea | ||
|
|
3a1034eab0 | ||
|
|
c8586927c3 | ||
|
|
f22c603c30 | ||
|
|
957396b5e5 | ||
|
|
d891c3eea0 | ||
|
|
37aa9a82fe | ||
|
|
392b11bd05 | ||
|
|
d4fe051d56 | ||
|
|
a2d33963b1 | ||
|
|
332f9aefe5 | ||
|
|
4942b88873 | ||
|
|
39ec5158a0 | ||
|
|
c11aec33a7 | ||
|
|
21045ea535 | ||
|
|
955c450483 | ||
|
|
00c0707dad | ||
|
|
79f88d6a02 | ||
|
|
ce5966bf10 | ||
|
|
fb8dbe5fc0 | ||
|
|
cde87e2113 | ||
|
|
262e18f409 | ||
|
|
39ef066875 | ||
|
|
35d317f7f3 | ||
|
|
5505e5f064 | ||
|
|
e6b0250d97 | ||
|
|
aa4c3b3787 | ||
|
|
57bbcdebfb | ||
|
|
85825c7b91 | ||
|
|
1acade4883 | ||
|
|
7c1b409542 | ||
|
|
fe02c84fd9 | ||
|
|
a2cc1870b4 | ||
|
|
1c6a3a3bc5 | ||
|
|
0c097ba2be | ||
|
|
0dd507ff03 | ||
|
|
4e0673c8e9 | ||
|
|
0cecf4e43f | ||
|
|
9ab458bba2 | ||
|
|
7e900dae22 | ||
|
|
0fa82e5c56 | ||
|
|
4af3d5bcc1 | ||
|
|
976401a4e9 | ||
|
|
6230958585 | ||
|
|
47fa44c932 | ||
|
|
f1dd8d61f5 | ||
|
|
3d387798b6 | ||
|
|
380eb88a39 | ||
|
|
6e2c998dad | ||
|
|
7105048b89 | ||
|
|
6061af6238 | ||
|
|
1decedd899 | ||
|
|
b5fe6631fe | ||
|
|
25c1cf4058 | ||
|
|
b265b5bd0c | ||
|
|
247efa656a | ||
|
|
238e2ab26c | ||
|
|
146c823f2a | ||
|
|
1b55513bc4 | ||
|
|
953841681c | ||
|
|
76a45a3834 | ||
|
|
eff9bc376c | ||
|
|
b9993c24f0 | ||
|
|
9752c865fc | ||
|
|
4c4cf76f7a | ||
|
|
70cbcbf1e9 | ||
|
|
2caf0684ef | ||
|
|
aa4b2cd2ae | ||
|
|
c56aa7e3ae | ||
|
|
3f8f97f015 | ||
|
|
1f3b97cef2 | ||
|
|
927bd1a9ba | ||
|
|
c43a51e2bb | ||
|
|
1a9a843cde | ||
|
|
2e543291ef | ||
|
|
ad9556ca03 | ||
|
|
cbdde57681 | ||
|
|
d8bac2f0ab | ||
|
|
12a83831c8 | ||
|
|
cdb99a74cc | ||
|
|
dd12be6722 | ||
|
|
cf0c740269 | ||
|
|
bde2b38668 | ||
|
|
b35dab2634 | ||
|
|
ff793d649b | ||
|
|
e8faf22357 | ||
|
|
a6f9714422 | ||
|
|
71349655c0 | ||
|
|
f1a036d8b0 | ||
|
|
7bbd25c1a2 | ||
|
|
01ae8e11fc | ||
|
|
aff653de2e | ||
|
|
0867cfff3f | ||
|
|
d395b42788 | ||
|
|
bc6bf6671e | ||
|
|
9f1a0f9585 | ||
|
|
3c54a1c7f5 | ||
|
|
06e666d6a0 | ||
|
|
9a4e36d9d8 | ||
|
|
0e970f5038 | ||
|
|
398d0eeac5 | ||
|
|
73d0d57bbc | ||
|
|
c0d27262e4 | ||
|
|
f41dfee912 | ||
|
|
f5f92e191a | ||
|
|
a6ae0919e4 | ||
|
|
5b914d7f15 | ||
|
|
2f3331e9ea | ||
|
|
c972497475 | ||
|
|
3582e877d6 | ||
|
|
0c79ac16ec | ||
|
|
3af23023ee | ||
|
|
f289a6bbb6 | ||
|
|
e64cc0c61c | ||
|
|
7144eb0afa | ||
|
|
fa93226cbf | ||
|
|
613340118c | ||
|
|
55d573f144 | ||
|
|
b56297e115 | ||
|
|
b8ac7bfb6a | ||
|
|
7cb95f1b91 | ||
|
|
da0fd821f7 | ||
|
|
6a18d3f1e0 | ||
|
|
5072c99938 | ||
|
|
e40247c211 | ||
|
|
593607e914 | ||
|
|
51fc5332ff | ||
|
|
27fdac91fd | ||
|
|
3c125bbc84 | ||
|
|
62c39b33c6 | ||
|
|
e6f81519cc | ||
|
|
64ce132262 | ||
|
|
af91977f82 | ||
|
|
07443e0b53 | ||
|
|
72f838d768 | ||
|
|
fa86cee3fa | ||
|
|
83c25b41ef | ||
|
|
2128703d8d | ||
|
|
b52371b174 | ||
|
|
65c2665fc0 | ||
|
|
279b449456 | ||
|
|
9bd4994f01 | ||
|
|
ab74703841 | ||
|
|
18a81a77a9 | ||
|
|
2ebfa46437 | ||
|
|
1d4fc03cba | ||
|
|
e9283a994d | ||
|
|
ed6fe880b6 | ||
|
|
a2d979a277 | ||
|
|
1ccfb1d84c | ||
|
|
2ec0f87a79 | ||
|
|
03ac735476 | ||
|
|
9eb29f8924 | ||
|
|
85a1f6a35b | ||
|
|
3cb7d6d4d8 | ||
|
|
884cabd301 | ||
|
|
663c24d2fa | ||
|
|
fecf8ad994 | ||
|
|
b05ba586f8 | ||
|
|
4ed8f9337f | ||
|
|
25446441cf | ||
|
|
0805d7754e | ||
|
|
d60c0800e7 | ||
|
|
35f498b82c | ||
|
|
8cf4a57a77 | ||
|
|
cb51b5abd6 | ||
|
|
59a8e76ba9 | ||
|
|
8f985025d1 | ||
|
|
7d9df8c82f | ||
|
|
22ccbfdf8f | ||
|
|
c6a76c26e0 | ||
|
|
c3f9fb4a23 | ||
|
|
abeedbf2fa | ||
|
|
9bdabd3ac3 | ||
|
|
0467a0dd32 | ||
|
|
3eb69b4056 | ||
|
|
793e2e34d3 | ||
|
|
dd7098d5bd | ||
|
|
268e22456e | ||
|
|
9950b18e38 | ||
|
|
b4deaaa941 | ||
|
|
328e5de3f3 | ||
|
|
41dae53bf2 | ||
|
|
3027b5ea16 | ||
|
|
ec773de686 | ||
|
|
f3b7467ffd | ||
|
|
d9546f15ed | ||
|
|
52dcd808b6 | ||
|
|
985193bebd | ||
|
|
9bf9e9d073 | ||
|
|
8b9995a5af | ||
|
|
2d3add6507 | ||
|
|
ee59b55c29 | ||
|
|
28bb6dc1a8 | ||
|
|
b587a0e647 | ||
|
|
d9d7919174 | ||
|
|
11c42757d7 | ||
|
|
4e4216ff6d | ||
|
|
496968b9fc | ||
|
|
bf3f9d8799 | ||
|
|
6f22134851 | ||
|
|
aaeabb9f96 | ||
|
|
6d4da1fff4 | ||
|
|
c0fd19fd33 | ||
|
|
f2c4f380f8 | ||
|
|
c96ae3db0d | ||
|
|
c2a6198576 | ||
|
|
2b3d4c9090 | ||
|
|
dbb17d801e | ||
|
|
0b1e4e6e84 | ||
|
|
8c82c87811 | ||
|
|
9997caf506 | ||
|
|
c8f53d2dc3 | ||
|
|
a10d763a41 | ||
|
|
e44fdb6730 | ||
|
|
bb8973a0ea | ||
|
|
6031a240a2 | ||
|
|
2bd244a536 | ||
|
|
64bff1bbed | ||
|
|
da5266cd65 | ||
|
|
c1082b1c14 | ||
|
|
2cf132ee88 | ||
|
|
e411146e8f | ||
|
|
5f63493bdc | ||
|
|
999c288b23 | ||
|
|
2e83ade978 | ||
|
|
08bf57f488 | ||
|
|
6f6392ea5c | ||
|
|
0b2227d35a | ||
|
|
4bfceadb65 | ||
|
|
61c73eaa4e | ||
|
|
c0c0c5cec5 | ||
|
|
5b82d82d75 | ||
|
|
36be795623 | ||
|
|
0996264483 | ||
|
|
2245bb8050 | ||
|
|
e14e00edba | ||
|
|
22102a7e4a | ||
|
|
6416c2544c | ||
|
|
73a510f9c2 | ||
|
|
b8b605db5e | ||
|
|
12168d991a | ||
|
|
93a119bf4b | ||
|
|
a7c62de389 | ||
|
|
8aca6718e1 | ||
|
|
1ec4bdef8f | ||
|
|
d6ed87d7cc | ||
|
|
55f3f37760 | ||
|
|
4f547dae30 | ||
|
|
f223481307 | ||
|
|
7d4e8acce8 | ||
|
|
dea9f42d5f | ||
|
|
e193baf1c1 | ||
|
|
4835182ad5 | ||
|
|
49ac21145a | ||
|
|
8a81ee08e3 | ||
|
|
36d101af02 | ||
|
|
8e65474c1d |
4
.github/CONTRIBUTING.md
vendored
4
.github/CONTRIBUTING.md
vendored
@@ -4,7 +4,7 @@
|
||||
#### There are no rules, but here are a few things to consider:
|
||||
###### Before you submit an issue:
|
||||
* Do a quick search to see if there are similar issues
|
||||
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic 2, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/api/platform/Platform/#ready).
|
||||
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/api/platform/Platform/#ready).
|
||||
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save @ionic-native/core@latest`
|
||||
|
||||
###### Still having problems? submit an issue with the following details:
|
||||
@@ -16,4 +16,4 @@
|
||||
## Feature request?
|
||||
Have a plugin you'd like to see supported? Since Ionic Native is a thin wrapper around existing Cordova plugins, adding support for new plugins is as easy as creating a new wrapper for whatever plugin you'd like to add.
|
||||
|
||||
Take a look at our [Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.
|
||||
Take a look at our [Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.
|
||||
|
||||
8
.github/ISSUE_TEMPLATE.md
vendored
8
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,7 +1,7 @@
|
||||
**I'm submitting a ...** (check one with "x")
|
||||
[ ] bug report
|
||||
[ ] feature request
|
||||
<!-- Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or https://ionicworldwide.herokuapp.com/ -->
|
||||
[ ] 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. -->
|
||||
@@ -21,8 +21,8 @@ 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:**
|
||||
**Ionic info:** (run `ionic info` from a terminal/cmd prompt and paste output below):
|
||||
|
||||
```json
|
||||
insert the content here
|
||||
```
|
||||
insert the output from ionic info here
|
||||
```
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,5 +3,5 @@ node_modules/
|
||||
.idea
|
||||
.tmp
|
||||
aot/
|
||||
dist/
|
||||
scripts/ionic-native-bower
|
||||
dist/
|
||||
|
||||
1669
CHANGELOG.md
1669
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
11
DEVELOPER.md
11
DEVELOPER.md
@@ -103,7 +103,7 @@ Next, let's look at the `watchPosition` method.
|
||||
|
||||
The `@Cordova` decorator has a few more options now.
|
||||
|
||||
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/driftyco/ionic-native#promises-and-observables) instead of a Promise.
|
||||
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/ionic-team/ionic-native#promises-and-observables) instead of a Promise.
|
||||
|
||||
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
|
||||
|
||||
@@ -209,4 +209,13 @@ Example:
|
||||
someMethod(): Promise<any> {
|
||||
// anything here will only run if the plugin is available
|
||||
}
|
||||
```
|
||||
|
||||
#### CordovaFunctionOverride
|
||||
Wrap a stub function in a call to a Cordova plugin, checking if both Cordova and the required plugin are installed.
|
||||
|
||||
Example:
|
||||
```ts
|
||||
@CordovaFunctionOverride()
|
||||
someMethod(): Observable<any> { return; }
|
||||
```
|
||||
26
README.md
26
README.md
@@ -1,4 +1,4 @@
|
||||
[](https://circleci.com/gh/driftyco/ionic-native) [](http://commitizen.github.io/cz-cli/) 
|
||||
[](https://circleci.com/gh/ionic-team/ionic-native) [](http://commitizen.github.io/cz-cli/) 
|
||||
|
||||
|
||||
# Ionic Native
|
||||
@@ -52,38 +52,28 @@ import { NgZone } from '@angular/core';
|
||||
@Component({ ... })
|
||||
export class MyComponent {
|
||||
|
||||
constructor(private geolocation: Geolocation, private platform: Platform, private ngZone: NgZone) {
|
||||
constructor(private geolocation: Geolocation, private platform: Platform) {
|
||||
|
||||
platform.ready().then(() => {
|
||||
|
||||
// get position
|
||||
geolocation.getCurrentPosition().then(pos => {
|
||||
|
||||
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
|
||||
|
||||
});
|
||||
|
||||
|
||||
// watch position
|
||||
const watch = geolocation.watchPosition().subscribe(pos => {
|
||||
|
||||
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
|
||||
|
||||
// Currently, observables from Ionic Native plugins
|
||||
// need to run inside of zone to trigger change detection
|
||||
ngZone.run(() => {
|
||||
this.position = pos;
|
||||
})
|
||||
|
||||
this.position = pos;
|
||||
});
|
||||
|
||||
// to stop watching
|
||||
watch.unsubscribe();
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
@@ -169,11 +159,11 @@ Spent way too long diagnosing an issue only to realize a plugin wasn't firing or
|
||||
|
||||
|
||||
## Plugin Missing?
|
||||
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/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/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
|
||||
|
||||
## Ionic V1/Angular 1 support
|
||||
## Ionic v1 (AngularJS, Angular 1.x) support
|
||||
|
||||
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.
|
||||
For Ionic v1 (AngularJS, Angular 1.x) support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/ionic-team/ionic-native/blob/v2.x/README.md) for usage information.
|
||||
|
||||
# Credits
|
||||
|
||||
|
||||
12
circle.yml
12
circle.yml
@@ -7,7 +7,7 @@ jobs:
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: ionic-site-{{ .Branch }}
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
- run:
|
||||
name: Prepare ionic-site repo
|
||||
command: |
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
./scripts/docs/prepare.sh
|
||||
fi
|
||||
- save_cache:
|
||||
key: ionic-site-{{ .Branch }}
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
paths:
|
||||
- ~/ionic-site/
|
||||
- restore_cache:
|
||||
@@ -30,9 +30,13 @@ jobs:
|
||||
- run:
|
||||
name: Run tslint
|
||||
command: npm run lint
|
||||
- run: bash ./scripts/git/config.sh
|
||||
- run:
|
||||
name: Build changed plugins
|
||||
command: node scripts/ci-tests.js
|
||||
name: Build Ionic Native
|
||||
command: npm run build:core && ./node_modules/.bin/tsc
|
||||
- run:
|
||||
name: Generate README files to ensure docs are valid
|
||||
command: npm run readmes
|
||||
- run:
|
||||
name: Run tests
|
||||
command: npm test
|
||||
|
||||
7075
package-lock.json
generated
Normal file
7075
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
44
package.json
44
package.json
@@ -1,20 +1,22 @@
|
||||
{
|
||||
"name": "ionic-native",
|
||||
"version": "3.8.1",
|
||||
"version": "4.5.1",
|
||||
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
|
||||
"homepage": "https://ionicframework.com/",
|
||||
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@angular/compiler": "4.1.2",
|
||||
"@angular/compiler-cli": "4.1.2",
|
||||
"@angular/core": "4.1.2",
|
||||
"@angular/compiler": "4.4.4",
|
||||
"@angular/compiler-cli": "4.4.4",
|
||||
"@angular/core": "4.4.4",
|
||||
"@types/cordova": "0.0.34",
|
||||
"@types/jasmine": "^2.5.47",
|
||||
"@types/node": "^7.0.18",
|
||||
"@types/jasmine": "^2.6.3",
|
||||
"@types/node": "^8.0.50",
|
||||
"canonical-path": "0.0.2",
|
||||
"child-process-promise": "2.2.0",
|
||||
"conventional-changelog-cli": "1.2.0",
|
||||
"cpr": "2.0.2",
|
||||
"cz-conventional-changelog": "1.2.0",
|
||||
"child-process-promise": "2.2.1",
|
||||
"conventional-changelog-cli": "1.3.4",
|
||||
"cpr": "2.0.0",
|
||||
"cz-conventional-changelog": "2.0.0",
|
||||
"decamelize": "1.2.0",
|
||||
"dgeni": "0.4.7",
|
||||
"dgeni-packages": "0.16.10",
|
||||
@@ -32,17 +34,17 @@
|
||||
"karma-typescript": "^3.0.1",
|
||||
"karma-typescript-es6-transform": "^1.0.0",
|
||||
"lodash": "4.17.4",
|
||||
"minimist": "1.1.3",
|
||||
"minimist": "1.2.0",
|
||||
"node-html-encoder": "0.0.2",
|
||||
"q": "1.4.1",
|
||||
"q": "1.5.0",
|
||||
"queue": "4.2.1",
|
||||
"rimraf": "2.5.4",
|
||||
"rxjs": "5.1.1",
|
||||
"rimraf": "2.6.1",
|
||||
"rxjs": "5.5.2",
|
||||
"semver": "5.3.0",
|
||||
"tslint": "3.15.1",
|
||||
"tslint-ionic-rules": "0.0.8",
|
||||
"typescript": "2.3.2",
|
||||
"zone.js": "^0.8.10"
|
||||
"typescript": "~2.4.2",
|
||||
"zone.js": "0.8.18"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "npm run test:watch",
|
||||
@@ -56,7 +58,15 @@
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
|
||||
"postchangelog": "git commit -am \"chore(): update changelog\"",
|
||||
"test": "karma start karma.conf.js --single-run",
|
||||
"test:watch": "karma start karma.conf.js"
|
||||
"test:watch": "karma start karma.conf.js",
|
||||
"readmes": "gulp readmes"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/ionic-team/ionic-native.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/ionic-team/ionic-native/issues"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
|
||||
@@ -19,7 +19,7 @@ const ROOT = path.resolve(path.join(__dirname, '../../')), // root ionic-native
|
||||
// dependency versions
|
||||
const ANGULAR_VERSION = '*',
|
||||
RXJS_VERSION = '^5.0.1',
|
||||
MIN_CORE_VERSION = '^3.6.0',
|
||||
MIN_CORE_VERSION = '^4.2.0',
|
||||
IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
|
||||
|
||||
// package dependencies
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
"peerDependencies": {},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/driftyco/ionic-native.git"
|
||||
"url": "https://github.com/ionic-team/ionic-native.git"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
"peerDependencies": {},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/driftyco/ionic-native.git"
|
||||
"url": "https://github.com/ionic-team/ionic-native.git"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ module.exports = currentVersion => {
|
||||
docTypes: ['class'],
|
||||
getOutputPath: doc => doc.originalModule.replace(config.pluginDir + '/', '')
|
||||
.replace('/plugins', '')
|
||||
.replace('/index', '/README.md')
|
||||
.replace(/\/index$/, '/README.md')
|
||||
}];
|
||||
|
||||
})
|
||||
|
||||
@@ -22,8 +22,24 @@ module.exports = function jekyll(renderDocsProcessor) {
|
||||
doc.URL = doc.outputPath.replace('docs//', 'docs/')
|
||||
.replace('/index.md', '')
|
||||
.replace('content/', '');
|
||||
// add trailing slash to plugin pages
|
||||
if(!doc.URL.endsWith("/") && !doc.URL.endsWith(".html")) {
|
||||
doc.URL = doc.URL+'/';
|
||||
}
|
||||
});
|
||||
|
||||
const betaDocs = [];
|
||||
|
||||
docs = docs.filter(doc => {
|
||||
if (doc.beta === true) {
|
||||
betaDocs.push(doc);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
docs = docs.concat(betaDocs);
|
||||
|
||||
// add side menu
|
||||
docs.push({
|
||||
docType: 'nativeMenu',
|
||||
|
||||
@@ -6,5 +6,6 @@ module.exports = [
|
||||
{'name': 'usage'},
|
||||
{'name': 'hidden'}, // hide from docs
|
||||
{'name': 'classes'}, // related classes
|
||||
{'name': 'interfaces'} // related interfaces
|
||||
{'name': 'interfaces'}, // related interfaces
|
||||
{'name': 'paid', transforms: (doc, tag, value) => typeof value !== 'undefined'} // paid plugin, set value to true
|
||||
];
|
||||
|
||||
42
scripts/docs/templates/common.template.html
vendored
42
scripts/docs/templates/common.template.html
vendored
@@ -44,7 +44,7 @@ docType: "<$ doc.docType $>"
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro githubViewLink(doc) -@>
|
||||
<a href="https://github.com/driftyco/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a>
|
||||
<a href="https://github.com/ionic-team/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro paramTable(params, isDirective) -@>
|
||||
@@ -127,7 +127,7 @@ docType: "<$ doc.docType $>"
|
||||
|
||||
<@- macro documentClass(doc) @>
|
||||
<@- if doc.statics.length -@>
|
||||
<h2>Static Members</h2>
|
||||
<h2><a class="anchor" name="static-members" href="#static-members"></a>Static Members</h2>
|
||||
<@ for method in doc.statics -@>
|
||||
<$ documentMethod(method) $>
|
||||
<@ endfor -@>
|
||||
@@ -136,7 +136,7 @@ docType: "<$ doc.docType $>"
|
||||
<# --- methods in class --- #>
|
||||
<@- if doc.members and doc.members.length @>
|
||||
|
||||
<h2>Instance Members</h2>
|
||||
<h2><a class="anchor" name="instance-members" href="#instance-members"></a>Instance Members</h2>
|
||||
<@ for method in doc.members -@>
|
||||
<$ documentMethod(method) $>
|
||||
<@- endfor @>
|
||||
@@ -147,9 +147,12 @@ docType: "<$ doc.docType $>"
|
||||
<@- if doc.beta == true -@>
|
||||
<span class="beta" title="beta">β</span>
|
||||
<@- endif -@>
|
||||
<@- if doc.paid == true -@>
|
||||
<span class="paid" title="paid">Paid</span>
|
||||
<@- endif -@>
|
||||
</h1>
|
||||
|
||||
<a class="improve-v2-docs" href="http://github.com/driftyco/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
|
||||
<a class="improve-v2-docs" href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
|
||||
Improve this doc
|
||||
</a>
|
||||
|
||||
@@ -163,23 +166,36 @@ docType: "<$ doc.docType $>"
|
||||
href="<$ prop.repo $>/issues">plugin repo</a>.
|
||||
</p>
|
||||
<@ endif @>
|
||||
<@ if doc.paid == true @>
|
||||
<p class="paid-notice">
|
||||
This plugin might require a paid license, or might take a share of your app's earnings.
|
||||
Check the <a target="_blank" rel="nofollow" href="<$ prop.repo $>">plugin's repo</a> for more information.
|
||||
</p>
|
||||
<@ endif @>
|
||||
|
||||
<# --- Plugin description --- #>
|
||||
<$ doc.description | marked $>
|
||||
|
||||
<# --- Install commands --- #>
|
||||
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
|
||||
$ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
</code></pre>
|
||||
<p>Repo:
|
||||
<a href="<$ prop.repo $>">
|
||||
<$ prop.repo $>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<# --- Plugin description --- #>
|
||||
<$ doc.description | marked $>
|
||||
<# --- Install commands --- #>
|
||||
<h2><a class="anchor" name="installation" href="#installation"></a>Installation</h2>
|
||||
<ol class="installation">
|
||||
<li>Install the Cordova and Ionic Native plugins:<br>
|
||||
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install | replace('<', '<').replace('>', '>') $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
|
||||
$ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
</code></pre>
|
||||
</li>
|
||||
<li><a href="https://ionicframework.com/docs/native/#Add_Plugins_to_Your_App_Module">Add this plugin to your app's module</a></li>
|
||||
</ol>
|
||||
|
||||
<# --- Plugin supported platforms --- #>
|
||||
<@ if prop.platforms @>
|
||||
<h2>Supported platforms</h2>
|
||||
<h2><a class="anchor" name="platforms" href="#platforms"></a>Supported platforms</h2>
|
||||
<ul>
|
||||
<@ for platform in prop.platforms -@>
|
||||
<li><$ platform $></li>
|
||||
@@ -191,13 +207,13 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
|
||||
<# --- Plugin usage --- #>
|
||||
<@ if doc.usage @>
|
||||
<h2>Usage</h2>
|
||||
<h2><a class="anchor" name="usage" href="#usage"></a>Usage</h2>
|
||||
<$ doc.usage | marked $>
|
||||
<@ endif @>
|
||||
|
||||
<# --- Plugin attributes --- #>
|
||||
<@- if doc.properties -@>
|
||||
<h2>Attributes:</h2>
|
||||
<h2><a class="anchor" name="attributes" href="#attributes"></a>Attributes:</h2>
|
||||
<table class="table" style="margin:0;">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
@@ -4,11 +4,7 @@
|
||||
<li class="capitalize {% if page.id == 'mocking' %}active{% endif %}">
|
||||
<a href="/docs/native/browser.html">Browser Usage</a>
|
||||
</li>
|
||||
<@- for doc in docs @><@ if doc.URL and doc.private != true and doc.beta != true @>
|
||||
<@- for doc in docs @><@ if doc.URL and doc.private != true @>
|
||||
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
|
||||
<a href="/<$ doc.URL $>"><$ doc.name $></a>
|
||||
</li><@ endif @><@ endfor @>
|
||||
<@- for doc in docs @><@ if doc.URL and doc.private != true and doc.beta == true @>
|
||||
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
|
||||
<a href="/<$ doc.URL $>"><$ doc.name $> <span class="beta">β</span></a>
|
||||
<a href="/<$ doc.URL $>"><$ doc.name $><@ if doc.paid == true @> <span class="paid">Paid</span><@ endif @><@ if doc.beta == true @> <span class="beta">β</span><@ endif @></a>
|
||||
</li><@ endif @><@ endfor @>
|
||||
|
||||
2
scripts/docs/templates/readme.template.md
vendored
2
scripts/docs/templates/readme.template.md
vendored
@@ -1,4 +1,4 @@
|
||||
<a style="float:right;font-size:12px;" href="http://github.com/driftyco/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
|
||||
<a style="float:right;font-size:12px;" href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
|
||||
Improve this doc
|
||||
</a>
|
||||
|
||||
|
||||
@@ -31,11 +31,11 @@ function run {
|
||||
if [ $CHANGED -eq 0 ];
|
||||
then
|
||||
echo "-- No changes detected for the following commit, docs not updated."
|
||||
echo "https://github.com/driftyco/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
|
||||
echo "https://github.com/ionic-team/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
|
||||
else
|
||||
git config --global user.email "hi@ionicframework.com"
|
||||
git config --global user.name "Ionitron"
|
||||
git commit -am "Automated build of native docs driftyco/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
|
||||
git commit -am "Automated build of native docs ionic-team/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
|
||||
# in case a different commit was pushed to ionic-site during doc/demo gen,
|
||||
# try to rebase around it before pushing
|
||||
git fetch
|
||||
|
||||
@@ -18,12 +18,12 @@ function run {
|
||||
if [ -z "$CHANGED" ];
|
||||
then
|
||||
echo "-- No changes detected for the following commit, docs not updated."
|
||||
echo "https://github.com/driftyco/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
|
||||
echo "https://github.com/ionic-team/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
|
||||
else
|
||||
git config --global user.email "hi@ionicframework.com"
|
||||
git config --global user.name "Ionitron"
|
||||
git add -A
|
||||
git commit -am "Automated build of native readmes for driftyco/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
|
||||
git commit -am "Automated build of native readmes for ionic-team/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
|
||||
# in case a different commit was pushed to ionic-site during doc/demo gen,
|
||||
# try to rebase around it before pushing
|
||||
git fetch
|
||||
|
||||
@@ -21,7 +21,7 @@ function run {
|
||||
git config --global user.email "hi@ionicframework.com"
|
||||
git config --global user.name "Ionitron"
|
||||
|
||||
git clone git@github.com:driftyco/$REPOSITORY.git $DIRECTORY $ARGS
|
||||
git clone git@github.com:ionic-team/$REPOSITORY.git $DIRECTORY $ARGS
|
||||
cd $DIRECTORY
|
||||
git fetch origin --tags
|
||||
cd ../
|
||||
|
||||
2
scripts/git/config.sh
Normal file
2
scripts/git/config.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
git config --global user.email "hi@ionicframework.com"
|
||||
git config --global user.name "Ionitron"
|
||||
@@ -1,12 +1,26 @@
|
||||
import { Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
/**
|
||||
* This is a template for new plugin wrappers
|
||||
*
|
||||
* TODO:
|
||||
* - Add/Change information below
|
||||
* - Document usage (importing, executing main functionality)
|
||||
* - Remove any imports that you are not using
|
||||
* - Add this file to /src/index.ts (follow style of other plugins)
|
||||
* - Remove all the comments included in this template, EXCEPT the @Plugin wrapper docs and any other docs you added
|
||||
* - Remove this note
|
||||
*
|
||||
*/
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
/**
|
||||
* @name {{ Plugin_Name }}
|
||||
* @description
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
|
||||
*
|
||||
*
|
||||
@@ -15,16 +29,33 @@ import { Injectable } from '@angular/core';
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.{{ pluginName }}.functionName('Hello', 123)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: '{{ PluginName }}',
|
||||
plugin: '',
|
||||
pluginRef: '',
|
||||
repo: '',
|
||||
platforms: []
|
||||
plugin: '', // npm package name, example: cordova-plugin-camera
|
||||
pluginRef: '', // the variable reference to call the plugin, example: navigator.geolocation
|
||||
repo: '', // the github repository URL for the plugin
|
||||
install: '', // OPTIONAL install command, in case the plugin requires variables
|
||||
installVariables: [], // OPTIONAL the plugin requires variables
|
||||
platforms: [] // Array of platforms supported, example: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class {{ PluginName }} extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* This function does something
|
||||
* @param arg1 {string} Some param to configure something
|
||||
* @param arg2 {number} Another param to configure something
|
||||
* @return {Promise<any>} Returns a promise that resolves when something happens
|
||||
*/
|
||||
@Cordova()
|
||||
functionName(arg1: string, arg2: number): Promise<any> {
|
||||
return; // We add return; here to avoid any IDE / Compiler errors
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
|
||||
*
|
||||
*
|
||||
@@ -40,8 +40,9 @@ import { Observable } from 'rxjs/Observable';
|
||||
plugin: '', // npm package name, example: cordova-plugin-camera
|
||||
pluginRef: '', // the variable reference to call the plugin, example: navigator.geolocation
|
||||
repo: '', // the github repository URL for the plugin
|
||||
platforms: [], // Array of platforms supported, example: ['Android', 'iOS']
|
||||
install: '', // OPTIONAL install command, in case the plugin requires variables
|
||||
installVariables: [], // OPTIONAL the plugin requires variables
|
||||
platforms: [] // Array of platforms supported, example: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class {{ PluginName }} extends IonicNativePlugin {
|
||||
|
||||
@@ -2,6 +2,7 @@ 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';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
declare const window: any;
|
||||
|
||||
@@ -24,7 +25,8 @@ class TestObject {
|
||||
pluginName: 'TestPlugin',
|
||||
pluginRef: 'testPlugin',
|
||||
repo: '',
|
||||
plugin: 'cordova-plugin-my-plugin'
|
||||
plugin: 'cordova-plugin-my-plugin',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
class TestPlugin extends IonicNativePlugin {
|
||||
|
||||
@@ -46,6 +48,17 @@ class TestPlugin extends IonicNativePlugin {
|
||||
return new TestObject(TestPlugin.getPlugin().create());
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
destruct: true
|
||||
})
|
||||
destructPromise(): Promise<any> { return; }
|
||||
|
||||
@Cordova({
|
||||
destruct: true,
|
||||
observable: true
|
||||
})
|
||||
destructObservable(): Observable<any> { return; }
|
||||
|
||||
}
|
||||
|
||||
function definePlugin() {
|
||||
@@ -58,7 +71,9 @@ function definePlugin() {
|
||||
this.ping = (success: Function, error: Function) => success('pong');
|
||||
this.name = 'John Smith';
|
||||
return this;
|
||||
}
|
||||
},
|
||||
destructPromise: (success: Function) => success('hello', 'world'),
|
||||
destructObservable: (success: Function) => success('hello', 'world')
|
||||
};
|
||||
}
|
||||
|
||||
@@ -85,6 +100,10 @@ describe('Regular Decorators', () => {
|
||||
expect(TestPlugin.getPlugin()).toEqual(window.testPlugin);
|
||||
});
|
||||
|
||||
it('should return supported platforms', () => {
|
||||
expect(TestPlugin.getSupportedPlatforms()).toEqual(['Android', 'iOS']);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Cordova', () => {
|
||||
@@ -172,6 +191,30 @@ describe('Regular Decorators', () => {
|
||||
|
||||
});
|
||||
|
||||
describe('CordovaOptions', () => {
|
||||
|
||||
describe('destruct', () => {
|
||||
|
||||
it('should destruct values returned by a Promise', (done) => {
|
||||
plugin.destructPromise()
|
||||
.then((args: any[]) => {
|
||||
expect(args).toEqual(['hello', 'world']);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should destruct values returned by an Observable', (done) => {
|
||||
plugin.destructObservable()
|
||||
.subscribe((args: any[]) => {
|
||||
expect(args).toEqual(['hello', 'world']);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Instance Decorators', () => {
|
||||
|
||||
@@ -37,6 +37,7 @@ export interface PluginConfig {
|
||||
}
|
||||
|
||||
export interface CordovaOptions {
|
||||
destruct?: boolean;
|
||||
/**
|
||||
* Set to true if the wrapped method is a sync function
|
||||
*/
|
||||
@@ -104,17 +105,6 @@ export interface CordovaCheckOptions {
|
||||
observable?: boolean;
|
||||
}
|
||||
|
||||
export interface CordovaFiniteObservableOptions extends CordovaOptions {
|
||||
/**
|
||||
* Function that gets a result returned from plugin's success callback, and decides whether it is last value and observable should complete.
|
||||
*/
|
||||
resultFinalPredicate?: (result: any) => boolean;
|
||||
/**
|
||||
* Function that gets called after resultFinalPredicate, and removes service data that indicates end of stream from the result.
|
||||
*/
|
||||
resultTransform?: (result: any) => any;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
@@ -135,7 +125,8 @@ export function InstanceCheck(opts: CordovaCheckOptions = {}) {
|
||||
return getPromise(() => { });
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -159,12 +150,12 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
|
||||
}
|
||||
return Promise.reject(check && check.error);
|
||||
}
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
*
|
||||
@@ -239,7 +230,8 @@ export function Cordova(opts: CordovaOptions = {}) {
|
||||
return {
|
||||
value: function(...args: any[]) {
|
||||
return wrap(this, methodName, opts).apply(this, args);
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -249,12 +241,13 @@ export function Cordova(opts: CordovaOptions = {}) {
|
||||
*
|
||||
* Wrap an instance method
|
||||
*/
|
||||
export function CordovaInstance(opts: any = {}) {
|
||||
export function CordovaInstance(opts: CordovaOptions = {}) {
|
||||
return (target: Object, methodName: string) => {
|
||||
return {
|
||||
value: function(...args: any[]) {
|
||||
return wrapInstance(this, methodName, opts).apply(this, args);
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -312,43 +305,9 @@ export function CordovaFunctionOverride(opts: any = {}) {
|
||||
return {
|
||||
value: function(...args: any[]) {
|
||||
return overrideFunction(this, methodName, opts);
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
*
|
||||
* Wraps method that returns an observable that can be completed. Provided opts.resultFinalPredicate dictates when the observable completes.
|
||||
*
|
||||
*/
|
||||
export function CordovaFiniteObservable(opts: CordovaFiniteObservableOptions = {}) {
|
||||
if (opts.observable === false) {
|
||||
throw new Error('CordovaFiniteObservable decorator can only be used on methods that returns observable. Please provide correct option.');
|
||||
}
|
||||
opts.observable = true;
|
||||
return (target: Object, methodName: string, descriptor: TypedPropertyDescriptor<any>) => {
|
||||
return {
|
||||
value: function(...args: any[]) {
|
||||
let wrappedObservable: Observable<any> = wrap(this, methodName, opts).apply(this, args);
|
||||
return new Observable<any>((observer) => {
|
||||
let wrappedSubscription = wrappedObservable.subscribe({
|
||||
next: (x) => {
|
||||
observer.next(opts.resultTransform ? opts.resultTransform(x) : x);
|
||||
if (opts.resultFinalPredicate && opts.resultFinalPredicate(x)) {
|
||||
observer.complete();
|
||||
}
|
||||
},
|
||||
error: (err) => { observer.error(err); },
|
||||
complete: () => { observer.complete(); }
|
||||
});
|
||||
return () => {
|
||||
wrappedSubscription.unsubscribe();
|
||||
};
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
69
src/@ionic-native/core/ionic-native-plugin.spec.ts
Normal file
69
src/@ionic-native/core/ionic-native-plugin.spec.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
// This is to verify that new (FileTransfer.getPlugin)() works
|
||||
|
||||
import { Plugin, CordovaInstance } from './decorators';
|
||||
import { checkAvailability } from './plugin';
|
||||
import { IonicNativePlugin } from './ionic-native-plugin';
|
||||
|
||||
class FT {
|
||||
hello(): string {
|
||||
return 'world';
|
||||
}
|
||||
}
|
||||
|
||||
(window as any).FileTransfer = () => new FT();
|
||||
|
||||
@Plugin({
|
||||
plugin: 'cordova-plugin-file-transfer',
|
||||
pluginRef: 'FileTransfer',
|
||||
repo: '',
|
||||
pluginName: 'FileTransfer'
|
||||
})
|
||||
export class FileTransfer extends IonicNativePlugin {
|
||||
create(): FileTransferObject {
|
||||
let instance: any;
|
||||
if (checkAvailability(FileTransfer.getPluginRef(), null, FileTransfer.getPluginName()) === true) {
|
||||
instance = new (FileTransfer.getPlugin())();
|
||||
}
|
||||
return new FileTransferObject(instance);
|
||||
}
|
||||
}
|
||||
|
||||
export class FileTransferObject {
|
||||
|
||||
constructor(public _objectInstance: any) {
|
||||
console.info('Creating a new FileTransferObject with instance: ', _objectInstance);
|
||||
}
|
||||
|
||||
@CordovaInstance({ sync: true })
|
||||
hello(): string { return; }
|
||||
|
||||
}
|
||||
|
||||
describe('Mock FileTransfer Plugin', () => {
|
||||
|
||||
let plugin: FileTransfer,
|
||||
instance: FileTransferObject;
|
||||
|
||||
beforeAll(() => {
|
||||
plugin = new FileTransfer();
|
||||
instance = plugin.create();
|
||||
});
|
||||
|
||||
it('should create a new FileTransfer plugin instance', () => {
|
||||
expect(plugin instanceof FileTransfer).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should create new FileTransferObject instance', () => {
|
||||
expect(instance instanceof FileTransferObject).toBeTruthy();
|
||||
});
|
||||
|
||||
it('FileTransferObject instance should have _objectInstance property', () => {
|
||||
expect(instance._objectInstance).toBeDefined();
|
||||
});
|
||||
|
||||
it('FileTransferObject.hello should return world', () => {
|
||||
console.info('instance hello is', instance.hello());
|
||||
expect(instance.hello()).toEqual('world');
|
||||
});
|
||||
|
||||
});
|
||||
@@ -38,4 +38,9 @@ export class IonicNativePlugin {
|
||||
*/
|
||||
static getPluginInstallName(): string { return; }
|
||||
|
||||
/**
|
||||
* Returns the plugin's supported platforms
|
||||
*/
|
||||
static getSupportedPlatforms(): string[] { return; }
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { get, getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
|
||||
import { getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
|
||||
import { checkReady } from './bootstrap';
|
||||
import { CordovaOptions } from './decorators';
|
||||
|
||||
@@ -136,7 +136,11 @@ function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts
|
||||
function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
|
||||
let pluginResult: any, rej: Function;
|
||||
const p = getPromise((resolve: Function, reject: Function) => {
|
||||
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
|
||||
if (opts.destruct) {
|
||||
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
|
||||
} else {
|
||||
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
|
||||
}
|
||||
rej = reject;
|
||||
});
|
||||
// Angular throws an error on unhandled rejection, but in this case we have already printed
|
||||
@@ -166,7 +170,14 @@ function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts:
|
||||
|
||||
function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
|
||||
return new Observable(observer => {
|
||||
let pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
|
||||
let pluginResult;
|
||||
|
||||
if (opts.destruct) {
|
||||
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
|
||||
} else {
|
||||
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
|
||||
}
|
||||
|
||||
if (pluginResult && pluginResult.error) {
|
||||
observer.error(pluginResult.error);
|
||||
observer.complete();
|
||||
@@ -177,11 +188,11 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
|
||||
if (opts.clearWithArgs) {
|
||||
return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
|
||||
}
|
||||
return get(window, pluginObj.constructor.getPluginRef())[opts.clearFunction].call(pluginObj, pluginResult);
|
||||
return callCordovaPlugin(pluginObj, opts.clearFunction, []);
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
|
||||
console.error(e);
|
||||
console.warn(e);
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -219,7 +230,7 @@ export function wrapEventObservable(event: string, element: any = window): Obser
|
||||
export function overrideFunction(pluginObj: any, methodName: string, args: any[], opts: any = {}): Observable<any> {
|
||||
return new Observable(observer => {
|
||||
|
||||
const availabilityCheck = checkAvailability(pluginObj, methodName);
|
||||
const availabilityCheck = checkAvailability(pluginObj, null, pluginObj.constructor.getPluginName());
|
||||
|
||||
if (availabilityCheck === true) {
|
||||
const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());
|
||||
@@ -266,7 +277,14 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
|
||||
} else if (opts.observable) {
|
||||
|
||||
return new Observable(observer => {
|
||||
let pluginResult = callInstance(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
|
||||
|
||||
let pluginResult;
|
||||
|
||||
if (opts.destruct) {
|
||||
pluginResult = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
|
||||
} else {
|
||||
pluginResult = callInstance(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
|
||||
}
|
||||
|
||||
if (pluginResult && pluginResult.error) {
|
||||
observer.error(pluginResult.error);
|
||||
@@ -276,38 +294,51 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
|
||||
return () => {
|
||||
try {
|
||||
if (opts.clearWithArgs) {
|
||||
return pluginObj._objectInstance[opts.clearFunction].apply(pluginObj._objectInstance, args);
|
||||
return callInstance(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
|
||||
}
|
||||
return pluginObj._objectInstance[opts.clearFunction].call(pluginObj, pluginResult);
|
||||
return callInstance(pluginObj, opts.clearFunction, []);
|
||||
} catch (e) {
|
||||
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
|
||||
console.error(e);
|
||||
console.warn(e);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
} else if (opts.otherPromise) {
|
||||
|
||||
return getPromise((resolve: Function, reject: Function) => {
|
||||
let result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
if (result && !result.error) {
|
||||
let result;
|
||||
if (opts.destruct) {
|
||||
result = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
|
||||
} else {
|
||||
result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
}
|
||||
if (result && !!result.then) {
|
||||
result.then(resolve, reject);
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
let pluginResult: any, rej: Function;
|
||||
const p = getPromise((resolve: Function, reject: Function) => {
|
||||
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
if (opts.destruct) {
|
||||
pluginResult = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
|
||||
} else {
|
||||
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
}
|
||||
rej = reject;
|
||||
});
|
||||
// Angular throws an error on unhandled rejection, but in this case we have already printed
|
||||
// a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason
|
||||
// to error
|
||||
if (pluginResult && pluginResult.error) {
|
||||
p.catch(() => { });
|
||||
typeof rej === 'function' && rej(pluginResult.error);
|
||||
}
|
||||
return p;
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ export const getPromise = (callback: Function): Promise<any> => {
|
||||
callback(resolve, reject);
|
||||
});
|
||||
} 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 or on a recent browser.');
|
||||
}
|
||||
};
|
||||
|
||||
@@ -51,7 +51,7 @@ export const pluginWarn = (pluginName: string, plugin?: string, method?: string)
|
||||
console.warn('Native: tried accessing the ' + pluginName + ' plugin but it\'s not installed.');
|
||||
}
|
||||
if (plugin) {
|
||||
console.warn('Install the ' + pluginName + ' plugin: \'ionic plugin add ' + plugin + '\'');
|
||||
console.warn('Install the ' + pluginName + ' plugin: \'ionic cordova plugin add ' + plugin + '\'');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
export interface ActionSheetOptions {
|
||||
|
||||
@@ -51,7 +51,7 @@ export interface ActionSheetOptions {
|
||||
/**
|
||||
* Choose if destructive button will be the last
|
||||
*/
|
||||
destructiveButtonLast: boolean;
|
||||
destructiveButtonLast?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -94,18 +94,26 @@ export interface ActionSheetOptions {
|
||||
plugin: 'cordova-plugin-actionsheet',
|
||||
pluginRef: 'plugins.actionsheet',
|
||||
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-actionsheet',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Browser']
|
||||
platforms: ['Android', 'Browser', 'iOS', 'Windows', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class ActionSheet extends IonicNativePlugin {
|
||||
|
||||
@CordovaProperty
|
||||
/**
|
||||
* Convenience property to select an Android theme value
|
||||
*/
|
||||
ANDROID_THEMES: {
|
||||
THEME_TRADITIONAL: number;
|
||||
THEME_HOLO_DARK: number;
|
||||
THEME_HOLO_LIGHT: number;
|
||||
THEME_DEVICE_DEFAULT_DARK: number;
|
||||
THEME_DEVICE_DEFAULT_LIGHT: number;
|
||||
} = {
|
||||
THEME_TRADITIONAL: 1,
|
||||
THEME_HOLO_DARK: 2,
|
||||
THEME_HOLO_LIGHT: 3,
|
||||
THEME_DEVICE_DEFAULT_DARK: 4,
|
||||
THEME_DEVICE_DEFAULT_LIGHT: 5
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -96,6 +96,14 @@ export interface AdMobFreeRewardVideoConfig {
|
||||
*
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* AdMobFreeBannerConfig
|
||||
* AdMobFreeInterstitialConfig
|
||||
* AdMobFreeRewardVideoConfig
|
||||
* @classes
|
||||
* AdMobFreeBanner
|
||||
* AdMobFreeInterstitial
|
||||
* AdMobFreeRewardVideo
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
@@ -108,9 +116,10 @@ export interface AdMobFreeRewardVideoConfig {
|
||||
export class AdMobFree extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Convenience constructor to get event names
|
||||
* Convenience object to get event names
|
||||
* @type {Object}
|
||||
*/
|
||||
events = {
|
||||
events: any = {
|
||||
BANNER_LOAD: 'admob.banner.events.LOAD',
|
||||
BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
|
||||
BANNER_OPEN: 'admob.banner.events.OPEN',
|
||||
@@ -142,19 +151,19 @@ export class AdMobFree extends IonicNativePlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns the AdMobFreeBanner object
|
||||
* @type {AdMobFreeBanner}
|
||||
*/
|
||||
banner: AdMobFreeBanner = new AdMobFreeBanner();
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns the AdMobFreeInterstitial object
|
||||
* @type {AdMobFreeInterstitial}
|
||||
*/
|
||||
interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
|
||||
|
||||
/**
|
||||
*
|
||||
* Returns the AdMobFreeRewardVideo object
|
||||
* @type {AdMobFreeRewardVideo}
|
||||
*/
|
||||
rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
|
||||
@@ -183,28 +192,28 @@ export class AdMobFreeBanner {
|
||||
* Hide the banner.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
hide(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Create banner.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
prepare(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Remove the banner.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
remove(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Show the banner.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
@@ -231,21 +240,21 @@ export class AdMobFreeInterstitial {
|
||||
* Check if interstitial is ready
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
isReady(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Prepare interstitial
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
prepare(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Show the interstitial
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
@@ -272,21 +281,21 @@ export class AdMobFreeRewardVideo {
|
||||
* Check if reward video is ready
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
isReady(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Prepare reward video
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
prepare(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Show the reward video
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ export interface AdMobOptions {
|
||||
overlap?: boolean;
|
||||
|
||||
/**
|
||||
* Position of banner ad. Defaults to `TOP_CENTER`. You can use the `AdMob.AD_POSITION` property to select other values.
|
||||
* Position of banner ad. Defaults to `TOP_CENTER`. You can use the `AdMobPro.AD_POSITION` property to select other values.
|
||||
*/
|
||||
position?: number;
|
||||
|
||||
@@ -90,15 +90,18 @@ export interface AdExtras {
|
||||
}
|
||||
|
||||
/**
|
||||
* @name AdMob
|
||||
* @paid
|
||||
* @name AdMob Pro
|
||||
* @description
|
||||
* 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.
|
||||
*
|
||||
* IMPORTANT NOTICE: this plugin takes a percentage out of your earnings if you profit more than $1,000. Read more about this on the plugin's repo. For a completely free alternative, see [AdMobPro Free](../admob-free).
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AdMob } from '@ionic-native/admob';
|
||||
* import { AdMobPro } from '@ionic-native/admob-pro';
|
||||
* import { Platform } from 'ionic-angular';
|
||||
*
|
||||
* constructor(private admob: AdMob, private platform: Platform ) { }
|
||||
* constructor(private admob: AdMobPro, private platform: Platform ) { }
|
||||
*
|
||||
* ionViewDidLoad() {
|
||||
* this.admob.onAdDismiss()
|
||||
@@ -123,14 +126,14 @@ export interface AdExtras {
|
||||
* AdExtras
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AdMob',
|
||||
pluginName: 'AdMob Pro',
|
||||
plugin: 'cordova-plugin-admobpro',
|
||||
pluginRef: 'AdMob',
|
||||
repo: 'https://github.com/floatinghotpot/cordova-admob-pro',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class AdMob extends IonicNativePlugin {
|
||||
export class AdMobPro extends IonicNativePlugin {
|
||||
|
||||
AD_POSITION: {
|
||||
NO_CHANGE: number;
|
||||
@@ -176,7 +179,7 @@ export class AdMob extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Show banner at position
|
||||
* @param position {number} Position. Use `AdMob.AD_POSITION` to set values.
|
||||
* @param position {number} Position. Use `AdMobPro.AD_POSITION` to set values.
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
@@ -101,16 +101,17 @@ export interface AlipayOrder {
|
||||
plugin: 'cordova-alipay-base',
|
||||
pluginRef: 'Alipay.Base',
|
||||
repo: 'https://github.com/xueron/cordova-alipay-base',
|
||||
platforms: ['Android', 'iOS'],
|
||||
install: 'ionic plugin add https://github.com/xueron/cordova-alipay-base --variable APP_ID=your_app_id'
|
||||
install: 'ionic cordova plugin add cordova-alipay-base --variable ALI_PID=your_app_id',
|
||||
installVariables: ['ALI_PID'],
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class Alipay extends IonicNativePlugin {
|
||||
/**
|
||||
* Open Alipay to perform App pay
|
||||
* @param order { AlipayOrder } alipay options
|
||||
* @param order { AlipayOrder | string } alipay options
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error.
|
||||
*/
|
||||
@Cordova()
|
||||
pay(order: AlipayOrder): Promise<any> { return; }
|
||||
pay(order: AlipayOrder | string): Promise<any> { return; }
|
||||
}
|
||||
|
||||
273
src/@ionic-native/plugins/android-exoplayer/index.ts
Normal file
273
src/@ionic-native/plugins/android-exoplayer/index.ts
Normal file
@@ -0,0 +1,273 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
export type AndroidExoPlayerAspectRatio = 'FILL_SCREEN' | 'FIT_SCREEN';
|
||||
|
||||
export interface AndroidExoPlayerParams {
|
||||
/**
|
||||
* Url of the video to play.
|
||||
*/
|
||||
url: string;
|
||||
|
||||
/**
|
||||
* Set the user agent. Default is `ExoPlayerPlugin`
|
||||
*/
|
||||
userAgent?: string;
|
||||
|
||||
/**
|
||||
* Set the player aspect ratio.
|
||||
*/
|
||||
aspectRatio?: AndroidExoPlayerAspectRatio;
|
||||
|
||||
/**
|
||||
* Hide controls after this many milliseconds, default is `5000`.
|
||||
*/
|
||||
hideTimeout?: number;
|
||||
|
||||
/**
|
||||
* When set to false stream will not automatically start.
|
||||
*/
|
||||
autoPlay?: boolean;
|
||||
|
||||
/**
|
||||
* Start playback at this many milliseconds into video, default is `0`.
|
||||
*/
|
||||
seekTo?: number;
|
||||
|
||||
/**
|
||||
* Amount of time in milliseconds to use when skipping forward, default is `1000`.
|
||||
*/
|
||||
forwardTime?: number;
|
||||
|
||||
/**
|
||||
* Amount of time in milliseconds to use when skipping backward, default is `1000`.
|
||||
*/
|
||||
rewindTime?: number;
|
||||
|
||||
/**
|
||||
* Only play audio in the backgroud, default is `false`.
|
||||
* If you pass in `audioOnly: true`, make sure to manually close the player on some event (like escape button) since the plugin won't be detecting keypresses when playing audio in the background.
|
||||
*/
|
||||
audioOnly?: true;
|
||||
|
||||
/**
|
||||
* Optional subtitle url to display over the video.
|
||||
* We currently support .srt and .vtt subtitle formats. Subtitles are not supported on all stream types, as ExoPlayer has requirement that both video and subtitle "must have the same number of periods, and must not have any dynamic windows", which means for simple mp4s it should work, but on more complex HLS/Dash setups it might not.
|
||||
*/
|
||||
subtitleUrl?: string;
|
||||
|
||||
/**
|
||||
* okhttp connect timeout in milliseconds (default is `0`)
|
||||
*/
|
||||
connectTimeout?: number;
|
||||
|
||||
/**
|
||||
* okhttp read timeout in milliseconds (default is `0`)
|
||||
*/
|
||||
readTimeout?: number;
|
||||
|
||||
/**
|
||||
* okhttp write timeout in milliseconds (default is `0`)
|
||||
*/
|
||||
writeTimeout?: number;
|
||||
|
||||
/**
|
||||
* okhttp socket ping interval in milliseconds (default is `0` or disabled)
|
||||
*/
|
||||
pingInterval?: number;
|
||||
|
||||
/**
|
||||
* Number of times datasource will retry the stream before giving up (default is `3`)
|
||||
*/
|
||||
retryCount?: number;
|
||||
|
||||
/**
|
||||
* If this object is not present controller will not be visible.
|
||||
*/
|
||||
controller?: AndroidExoPlayerControllerConfig;
|
||||
}
|
||||
|
||||
export interface AndroidExoplayerState {
|
||||
[s: string]: string;
|
||||
}
|
||||
|
||||
export interface AndroidExoPlayerControllerConfig {
|
||||
/**
|
||||
* Image in the controller.
|
||||
*/
|
||||
streamImage: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
streamTitle: string;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
streamDescription: string;
|
||||
|
||||
/**
|
||||
* Hide entire progress bar.
|
||||
*/
|
||||
hideProgress?: true;
|
||||
|
||||
/**
|
||||
* If progress bar is visible hide current position from it
|
||||
*/
|
||||
hidePosition: false;
|
||||
|
||||
/**
|
||||
* If progress bar is visible Hide stream duration from it
|
||||
*/
|
||||
hideDuration: false;
|
||||
|
||||
/**
|
||||
* Override the player control button icons.
|
||||
*/
|
||||
controlIcons?: {
|
||||
/**
|
||||
* Rewind button icon.
|
||||
*/
|
||||
exo_rew: string;
|
||||
|
||||
/**
|
||||
* Play button icon.
|
||||
*/
|
||||
exo_play: string;
|
||||
|
||||
/**
|
||||
* Payse button icon.
|
||||
*/
|
||||
exo_pause: string;
|
||||
|
||||
/**
|
||||
* Fast forward button icon.
|
||||
*/
|
||||
exo_ffwd: string;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Android ExoPlayer
|
||||
* @description
|
||||
* Cordova media player plugin using Google's ExoPlayer framework.
|
||||
*
|
||||
* https://github.com/google/ExoPlayer
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AndroidExoPlayer } from '@ionic-native/android-exoplayer';
|
||||
*
|
||||
* constructor(private androidExoPlayer: AndroidExoPlayer) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.androidExoPlayer.show({url: 'http://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube'});
|
||||
*
|
||||
* ```
|
||||
*
|
||||
* @interfaces
|
||||
* AndroidExoPlayerParams
|
||||
* AndroidExoplayerState
|
||||
* AndroidExoPlayerControllerConfig
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AndroidExoPlayer',
|
||||
plugin: 'cordova-plugin-exoplayer',
|
||||
pluginRef: 'ExoPlayer',
|
||||
repo: 'https://github.com/frontyard/cordova-plugin-exoplayer',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidExoplayer extends IonicNativePlugin {
|
||||
/**
|
||||
* Show the player.
|
||||
* @param parameters {AndroidExoPlayerParams} Parameters
|
||||
* @return {Observable<AndroidExoplayerState>}
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
clearFunction: 'close',
|
||||
clearWithArgs: false,
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
show(parameters: AndroidExoPlayerParams): Observable<AndroidExoplayerState> { return; }
|
||||
|
||||
/**
|
||||
* Switch stream without disposing of the player.
|
||||
* @param url {string} The url of the new stream.
|
||||
* @param controller {AndroidExoPlayerControllerConfig} Configuration of the controller.
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setStream(url: string, controller: AndroidExoPlayerControllerConfig): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Will pause if playing and play if paused
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
playPause(): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Stop playing.
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
stop(): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Jump to a particular position.
|
||||
* @param milliseconds {number} Position in stream in milliseconds
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
seekTo(milliseconds: number): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Jump to a particular time relative to the current position.
|
||||
* @param milliseconds {number} Time in milliseconds
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
seekBy(milliseconds: number): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Get the current player state.
|
||||
* @return {Promise<AndroidExoplayerState>}
|
||||
*/
|
||||
@Cordova()
|
||||
getState(): Promise<AndroidExoplayerState> { return; }
|
||||
|
||||
/**
|
||||
* Show the controller.
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
showController(): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Hide the controller.
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
hideController(): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Update the controller configuration.
|
||||
* @param controller {AndroidExoPlayerControllerConfig} Configuration of the controller.
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setController(controller: AndroidExoPlayerControllerConfig): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Close and dispose of player, call before destroy.
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
close(): Promise<void> { return; }
|
||||
}
|
||||
@@ -192,7 +192,7 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
|
||||
* @returns {Promise<any>} Returns a Promise that resolves if fingerprint auth is available on the device
|
||||
*/
|
||||
@Cordova()
|
||||
isAvailable(): Promise<{ isAvailable: boolean }> { return; }
|
||||
isAvailable(): Promise<{ isAvailable: boolean, isHardwareDetected: boolean, hasEnrolledFingerprints: boolean }> { return; }
|
||||
|
||||
/**
|
||||
* Delete the cipher used for encryption and decryption by username
|
||||
|
||||
@@ -1,6 +1,35 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* Bit flag values for setSystemUiVisibility()
|
||||
* @see https://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)
|
||||
*/
|
||||
export enum AndroidSystemUiFlags {
|
||||
/** View has requested the system UI (status bar) to be visible (the default). SYSTEM_UI_FLAG_VISIBLE */
|
||||
Visible = 0,
|
||||
/** View has requested the system UI to enter an unobtrusive "low profile" mode. SYSTEM_UI_FLAG_LOW_PROFILE */
|
||||
LowProfile = 1,
|
||||
/** View has requested that the system navigation be temporarily hidden. SYSTEM_UI_FLAG_HIDE_NAVIGATION */
|
||||
HideNavigation = 2,
|
||||
/** View has requested to go into the normal fullscreen mode so that its content can take over the screen while still allowing the user to interact with the application. SYSTEM_UI_FLAG_FULLSCREEN */
|
||||
Fullscreen = 4,
|
||||
/** Requests the navigation bar to draw in a mode that is compatible with light navigation bar backgrounds. SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR */
|
||||
LightNavigationBar = 16,
|
||||
/** When using other layout flags, we would like a stable view of the content insets given to fitSystemWindows(Rect). SYSTEM_UI_FLAG_LAYOUT_STABLE */
|
||||
LayoutStable = 256,
|
||||
/** View would like its window to be laid out as if it has requested SYSTEM_UI_FLAG_HIDE_NAVIGATION, even if it currently hasn't. SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION */
|
||||
LayoutHideNavigation = 512,
|
||||
/** View would like its window to be laid out as if it has requested SYSTEM_UI_FLAG_FULLSCREEN, even if it currently hasn't. SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN */
|
||||
LayoutFullscreen = 1024,
|
||||
/** View would like to remain interactive when hiding the navigation bar with SYSTEM_UI_FLAG_HIDE_NAVIGATION. SYSTEM_UI_FLAG_IMMERSIVE */
|
||||
Immersive = 2048,
|
||||
/** View would like to remain interactive when hiding the status bar with SYSTEM_UI_FLAG_FULLSCREEN and/or hiding the navigation bar with SYSTEM_UI_FLAG_HIDE_NAVIGATION. SYSTEM_UI_FLAG_IMMERSIVE_STICKY */
|
||||
ImmersiveSticky = 4096,
|
||||
/** Requests the status bar to draw in a mode that is compatible with light status bar backgrounds. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR */
|
||||
LightStatusBar = 8192
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Android Full Screen
|
||||
* @description
|
||||
@@ -92,4 +121,13 @@ export class AndroidFullScreen extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova()
|
||||
immersiveMode(): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Manually set the the system UI to a custom mode. This mirrors the Android method of the same name. (Android 4.4+ only).
|
||||
* @see https://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)
|
||||
* @param {AndroidSystemUiFlags} visibility Bitwise-OR of flags in AndroidSystemUiFlags
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setSystemUiVisibility(visibility: AndroidSystemUiFlags): Promise<void> { return; }
|
||||
}
|
||||
|
||||
@@ -18,13 +18,15 @@ import { Injectable } from '@angular/core';
|
||||
* ...
|
||||
*
|
||||
* this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
|
||||
* success => console.log('Permission granted'),
|
||||
* err => this.androidPermissions.requestPermissions(this.androidPermissions.PERMISSION.CAMERA)
|
||||
* result => console.log('Has permission?',result.hasPermission),
|
||||
* err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)
|
||||
* );
|
||||
*
|
||||
* this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.CAMERA, this.androidPermissions.PERMISSION.GET_ACCOUNTS]);
|
||||
*
|
||||
* ```
|
||||
*
|
||||
* Android 26 and above: due to Android 26's changes to permissions handling (permissions are requested at time of use rather than at runtime,) if your app does not include any functions (eg. other Ionic Native plugins) that utilize a particular permission, then `requestPermission()` and `requestPermissions()` will resolve immediately with no prompt shown to the user. Thus, you must include a function utilizing the feature you would like to use before requesting permission for it.
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AndroidPermissions',
|
||||
|
||||
@@ -8,23 +8,23 @@ import { Injectable } from '@angular/core';
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Platfrom } from 'ionic-angular';
|
||||
* import { AppMinimize } from '@ionic-native/app-minimize';
|
||||
*
|
||||
*
|
||||
* constructor(private appMinimize: AppMinimize) { }
|
||||
* constructor(private platform: Platform, private appMinimize: AppMinimize) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.plugin.minimize().then(
|
||||
* success => console.log('Closed'),
|
||||
* err => console.log('Something went wrong')
|
||||
* );
|
||||
* this.platform.registerBackButtonAction(() => {
|
||||
* this.appMinimize.minimize();
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppMinimize',
|
||||
plugin: 'https://github.com/tomloprod/cordova-plugin-appminimize.git',
|
||||
plugin: 'cordova-plugin-appminimize',
|
||||
pluginRef: 'plugins.appMinimize',
|
||||
repo: 'https://github.com/tomloprod/cordova-plugin-appminimize',
|
||||
platforms: ['Android']
|
||||
|
||||
@@ -25,7 +25,7 @@ import { Injectable } from '@angular/core';
|
||||
plugin: 'cordova-plugin-app-preferences',
|
||||
pluginRef: 'plugins.appPreferences',
|
||||
repo: 'https://github.com/apla/me.apla.cordova.app-preferences',
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'OS X', 'Windows 8', 'Windows Phone']
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'macOS', 'Windows 8', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppPreferences extends IonicNativePlugin {
|
||||
|
||||
@@ -23,10 +23,15 @@ export interface AppRatePreferences {
|
||||
*/
|
||||
usesUntilPrompt?: number;
|
||||
|
||||
/**
|
||||
* Simple Mode to display the rate dialog directly and bypass negative feedback filtering flow
|
||||
*/
|
||||
simpleMode?: boolean;
|
||||
|
||||
/**
|
||||
* leave app or no when application page opened in app store (now supported only for iOS). Defaults to `false`
|
||||
*/
|
||||
openStoreInApp?: boolean;
|
||||
inAppReview?: boolean;
|
||||
|
||||
/**
|
||||
* use custom view for rate dialog. Defaults to `false`
|
||||
@@ -61,6 +66,10 @@ export interface AppRateCallbacks {
|
||||
* call back function. called when rate-dialog showing
|
||||
*/
|
||||
onRateDialogShow?: Function;
|
||||
/**
|
||||
* call back function. called when user clicked on negative feedback
|
||||
*/
|
||||
handleNegativeFeedback?: Function;
|
||||
|
||||
}
|
||||
|
||||
@@ -140,7 +149,7 @@ export interface AppUrls {
|
||||
plugin: 'cordova-plugin-apprate',
|
||||
pluginRef: 'AppRate',
|
||||
repo: 'https://github.com/pushandplay/cordova-plugin-apprate',
|
||||
platforms: ['Android', 'iOS', 'Windows (experimental)']
|
||||
platforms: ['Android', 'BlackBerry 10', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppRate extends IonicNativePlugin {
|
||||
@@ -159,4 +168,10 @@ export class AppRate extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
promptForRating(immediately: boolean): void { };
|
||||
|
||||
/**
|
||||
* Immediately send the user to the app store rating page
|
||||
*/
|
||||
@Cordova()
|
||||
navigateToAppStore(): void { };
|
||||
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-app-version',
|
||||
pluginRef: 'cordova.getAppVersion',
|
||||
repo: 'https://github.com/whiteoctober/cordova-plugin-app-version',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppVersion extends IonicNativePlugin {
|
||||
|
||||
327
src/@ionic-native/plugins/apple-pay/index.ts
Normal file
327
src/@ionic-native/plugins/apple-pay/index.ts
Normal file
@@ -0,0 +1,327 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
import {Observable} from 'rxjs/Observable';
|
||||
import {
|
||||
Plugin,
|
||||
Cordova,
|
||||
IonicNativePlugin
|
||||
} from '@ionic-native/core';
|
||||
|
||||
export type IMakePayments = 'This device can make payments and has a supported card' | 'This device cannot make payments.' | 'This device can make payments but has no supported cards';
|
||||
export type IShippingType = 'shipping' | 'delivery' | 'store' | 'service';
|
||||
export type IBillingRequirement = 'none' | 'all' | 'postcode' | 'name' | 'email' | 'phone';
|
||||
export type ITransactionStatus = 'success' | 'failure' | 'invalid-billing-address' | 'invalid-shipping-address' | 'invalid-shipping-contact' | 'require-pin' | 'incorrect-pin' | 'locked-pin';
|
||||
export type ICompleteTransaction = 'Payment status applied.';
|
||||
export type IUpdateItemsAndShippingStatus = 'Updated List Info' | 'Did you make a payment request?';
|
||||
|
||||
export interface IPaymentResponse {
|
||||
billingNameFirst?: string;
|
||||
billingNameMiddle?: string;
|
||||
billingNameLast?: string;
|
||||
billingEmailAddress?: string;
|
||||
billingSupplementarySubLocality?: string;
|
||||
billingAddressStreet?: string;
|
||||
billingAddressCity?: string;
|
||||
billingAddressState?: string;
|
||||
billingPostalCode?: string;
|
||||
billingCountry?: string;
|
||||
billingISOCountryCode?: string;
|
||||
|
||||
shippingNameFirst?: string;
|
||||
shippingNameMiddle?: string;
|
||||
shippingNameLast?: string;
|
||||
shippingEmailAddress?: string;
|
||||
shippingPhoneNumber?: string;
|
||||
shippingSupplementarySubLocality?: string;
|
||||
shippingAddressStreet?: string;
|
||||
shippingAddressCity?: string;
|
||||
shippingAddressState?: string;
|
||||
shippingPostalCode?: string;
|
||||
shippingCountry?: string;
|
||||
shippingISOCountryCode?: string;
|
||||
|
||||
paymentData: string;
|
||||
transactionIdentifier: string;
|
||||
paymentMethodDisplayName?: string;
|
||||
paymentMethodNetwork?: string;
|
||||
paymentMethodTypeCard?: string;
|
||||
}
|
||||
|
||||
export interface IOrderItem {
|
||||
label: string;
|
||||
amount: number;
|
||||
}
|
||||
export interface IShippingMethod {
|
||||
identifier: string;
|
||||
label: string;
|
||||
detail: string;
|
||||
amount: number;
|
||||
}
|
||||
export interface IOrderItemsAndShippingMethods {
|
||||
items: IOrderItem[];
|
||||
shippingMethods?: IShippingMethod[];
|
||||
}
|
||||
|
||||
export interface IOrder extends IOrderItemsAndShippingMethods {
|
||||
merchantIdentifier: string;
|
||||
currencyCode: string;
|
||||
countryCode: string;
|
||||
billingAddressRequirement?: IBillingRequirement | IBillingRequirement[];
|
||||
shippingAddressRequirement?: IBillingRequirement | IBillingRequirement[];
|
||||
shippingType?: IShippingType;
|
||||
}
|
||||
|
||||
export interface ISelectedShippingContact {
|
||||
shippingAddressCity: string;
|
||||
shippingAddressState: string;
|
||||
shippingPostalCode: string;
|
||||
shippingISOCountryCode: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Apple Pay
|
||||
* @description
|
||||
* A dependency free Cordova plugin to provide Apple Pay functionality.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { ApplePay } from '@ionic-native/apple-pay';
|
||||
*
|
||||
*
|
||||
* constructor(private applePay: ApplePay) { }
|
||||
*
|
||||
* ...
|
||||
* async applePay() {
|
||||
* // This block is optional -- only if you need to update order items/shipping
|
||||
* // methods in response to shipping method selections
|
||||
* this.applePay.startListeningForShippingContactSelection()
|
||||
* .subscribe(async selection => {
|
||||
* try {
|
||||
* await this.applePay.updateItemsAndShippingMethods({
|
||||
* items: getFromSelection(selection),
|
||||
* shippingMethods: getFromSelection(selection),
|
||||
* });
|
||||
* }
|
||||
* catch {
|
||||
* // handle update items error
|
||||
* }
|
||||
* });
|
||||
*
|
||||
* try {
|
||||
* const applePayTransaction = await this.applePay.makePaymentRequest({
|
||||
* items,
|
||||
* shippingMethods,
|
||||
* merchantIdentifier,
|
||||
* currencyCode,
|
||||
* countryCode,
|
||||
* billingAddressRequirement: ['name', 'email', 'phone'],
|
||||
* shippingAddressRequirement: 'none',
|
||||
* shippingType: 'shipping'
|
||||
* });
|
||||
*
|
||||
* const transactionStatus = await completeTransactionWithMerchant(applePayTransaction);
|
||||
* await this.applePay.completeLastTransaction(transactionStatus);
|
||||
* } catch {
|
||||
* // handle payment request error
|
||||
* // Can also handle stop complete transaction but these should normally not occur
|
||||
* }
|
||||
*
|
||||
* // only if you started listening before
|
||||
* await this.applePay.stopListeningForShippingContactSelection();
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'ApplePay',
|
||||
plugin: 'cordova-plugin-applepay',
|
||||
pluginRef: 'ApplePay',
|
||||
repo: 'https://github.com/samkelleher/cordova-plugin-applepay',
|
||||
platforms: ['iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class ApplePay extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Detects if the current device supports Apple Pay and has any capable cards registered.
|
||||
* @return {Promise<IMakePayments>} Returns a promise
|
||||
*
|
||||
* @usage
|
||||
* try {
|
||||
* const message = await this.applePay.canMakePayments();
|
||||
* // Apple Pay is enabled and a supported card is setup. Expect:
|
||||
* // 'This device can make payments and has a supported card'
|
||||
* } catch (message) {
|
||||
* // There is an issue, examine the message to see the details, will be:
|
||||
* // 'This device cannot make payments.''
|
||||
* // 'This device can make payments but has no supported cards'
|
||||
* }
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
})
|
||||
canMakePayments(): Promise<IMakePayments> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts listening for shipping contact selection changes
|
||||
* Any time the user selects shipping contact, this callback will fire.
|
||||
* You *must* call `updateItemsAndShippingMethods` in response or else the
|
||||
* user will not be able to process payment.
|
||||
* @return {Observable<ISelectedShippingContact>} emits with shipping contact information on
|
||||
* shipping contact selection changes
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
clearFunction: 'stopListeningForShippingContactSelection'
|
||||
})
|
||||
startListeningForShippingContactSelection(): Observable<ISelectedShippingContact> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops listening for shipping contact selection changes
|
||||
* @return {Promise} whether stop listening was successful. This should
|
||||
* really only fail if this is called without starting listening
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
})
|
||||
stopListeningForShippingContactSelection(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the list of pay sheet items and shipping methods in response to
|
||||
* a shipping contact selection event. This *must* be called in response to
|
||||
* any shipping contact selection event or else the user will not be able
|
||||
* to complete a transaction on the pay sheet. Do not call without
|
||||
* subscribing to shipping contact selection events first
|
||||
* @returns {Promise}
|
||||
*
|
||||
* @param {Object} including `items` and `shippingMethods` properties.
|
||||
*
|
||||
* @usage
|
||||
* this.applePay.startListeningForShippingContactSelection().pluck('shippingAddressState').subscribe(shippingAddressState => {
|
||||
* let shippingMethods;
|
||||
* if ('AK' === shippingAddressState) {
|
||||
* shippingMethods = [{
|
||||
* identifier: 'Alaska',
|
||||
* label: 'Alaska',
|
||||
* detail: 'For shipping to Alaska',
|
||||
* amount: 9.99
|
||||
* },];
|
||||
* } else {
|
||||
* shippingMethods = [{
|
||||
* identifier: 'Continental',
|
||||
* label: 'Continental',
|
||||
* detail: 'For shipping Continentally',
|
||||
* amount: 5.99
|
||||
* }];
|
||||
* }
|
||||
* this.paySheetItems.shippingCost = {
|
||||
* label: 'Shipping Cost',
|
||||
* amount: shippingMethod[0].amount
|
||||
* };
|
||||
* this.applePay.updateItemsAndShippingMethods(this.paySheetItems, shippingMethods);
|
||||
* });
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
})
|
||||
updateItemsAndShippingMethods(list: IOrderItemsAndShippingMethods): Promise<IUpdateItemsAndShippingStatus> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request a payment with Apple Pay
|
||||
* @return {Promise<IPaymentResponse>} Returns a promise that resolves when something happens
|
||||
*
|
||||
* @param order {IOrder}
|
||||
*
|
||||
* @usage
|
||||
* try {
|
||||
* const paymentResponse = this.applePay.makePaymentRequest({
|
||||
* items: [
|
||||
* {
|
||||
* label: '3 x Basket Items',
|
||||
* amount: 49.99
|
||||
* },
|
||||
* {
|
||||
* label: 'Next Day Delivery',
|
||||
* amount: 3.99
|
||||
* },
|
||||
* {
|
||||
* label: 'My Fashion Company',
|
||||
* amount: 53.98
|
||||
* }
|
||||
* ],
|
||||
* shippingMethods: [
|
||||
* {
|
||||
* identifier: 'NextDay',
|
||||
* label: 'NextDay',
|
||||
* detail: 'Arrives tomorrow by 5pm.',
|
||||
* amount: 3.99
|
||||
* },
|
||||
* {
|
||||
* identifier: 'Standard',
|
||||
* label: 'Standard',
|
||||
* detail: 'Arrive by Friday.',
|
||||
* amount: 4.99
|
||||
* },
|
||||
* {
|
||||
* identifier: 'SaturdayDelivery',
|
||||
* label: 'Saturday',
|
||||
* detail: 'Arrive by 5pm this Saturday.',
|
||||
* amount: 6.99
|
||||
* }
|
||||
* ],
|
||||
* merchantIdentifier: 'merchant.apple.test',
|
||||
* currencyCode: 'GBP',
|
||||
* countryCode: 'GB',
|
||||
* billingAddressRequirement: 'none',
|
||||
* shippingAddressRequirement: 'none',
|
||||
* shippingType: 'shipping',
|
||||
* });
|
||||
*
|
||||
* // The user has authorized the payment.
|
||||
*
|
||||
* // Handle the token, asynchronously, i.e. pass to your merchant bank to
|
||||
* // action the payment, then once finished, depending on the outcome:
|
||||
*
|
||||
* // Here is an example implementation:
|
||||
*
|
||||
* const captureStatus = await MyPaymentProvider.authorizeApplePayToken(paymentResponse.paymentData);
|
||||
* await this.applePay.completeLastTransaction('success');
|
||||
* }
|
||||
* catch (err) {
|
||||
* if (isPaymentAuthError(err)) {
|
||||
* this.completeLastTransaction('failure');
|
||||
* }
|
||||
* else {
|
||||
* // Failed to open pay sheet or user canceled payment
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
})
|
||||
makePaymentRequest(order: IOrder): Promise<IPaymentResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Once the makePaymentRequest has been resolved successfully, the device will be waiting for a completion event.
|
||||
* This means, that the application must proceed with the token authorisation and return a success, failure,
|
||||
* or other validation error. Once this has been passed back, the Apple Pay sheet will be dismissed via an animation.
|
||||
* @return {Promise<ICompleteTransaction>} Returns a promise that resolves after confirmation of payment authorization completion
|
||||
*
|
||||
* @param complete {ITransactionStatus}
|
||||
*
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
})
|
||||
completeLastTransaction(complete: ITransactionStatus): Promise<ICompleteTransaction> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -22,9 +22,9 @@ import { Injectable } from '@angular/core';
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Appodeal',
|
||||
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin',
|
||||
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
|
||||
pluginRef: 'Appodeal',
|
||||
repo: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
|
||||
repo: 'https://github.com/appodeal/appodeal-cordova-plugin',
|
||||
platforms: ['iOS', 'Android']
|
||||
})
|
||||
@Injectable()
|
||||
|
||||
@@ -125,7 +125,7 @@ export interface BackgroundGeolocationConfig {
|
||||
startForeground?: boolean;
|
||||
|
||||
/**
|
||||
* ANDROID, WP8 ONLY
|
||||
* ANDROID ONLY
|
||||
* When using BackgroundGeolocation.LocationProvider.ANDROID_DISTANCE_FILTER_PROVIDER:
|
||||
* The minimum time interval between location updates in milliseconds.
|
||||
* @see Android docs (http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long,%20float,%20android.location.Criteria,%20android.app.PendingIntent))
|
||||
@@ -264,7 +264,7 @@ export interface BackgroundGeolocationConfig {
|
||||
* BackgroundGeolocation must be called within app.ts and or before Geolocation. Otherwise the platform will not ask you for background tracking permission.
|
||||
*
|
||||
* ```typescript
|
||||
* import { BackgroundGeolocation, BackgroundGeolocationConfig } from '@ionic-native/background-geolocation';
|
||||
* import { BackgroundGeolocation, BackgroundGeolocationConfig, BackgroundGeolocationResponse } from '@ionic-native/background-geolocation';
|
||||
*
|
||||
* constructor(private backgroundGeolocation: BackgroundGeolocation) { }
|
||||
*
|
||||
@@ -306,7 +306,7 @@ export interface BackgroundGeolocationConfig {
|
||||
plugin: 'cordova-plugin-mauron85-background-geolocation',
|
||||
pluginRef: 'backgroundGeolocation',
|
||||
repo: 'https://github.com/mauron85/cordova-plugin-background-geolocation',
|
||||
platforms: ['iOS', 'Android', 'Windows Phone 8']
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
@@ -391,7 +391,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
finish(): Promise<any> { return; }
|
||||
|
||||
@@ -401,7 +401,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
changePace(isMoving: boolean): Promise<any> { return; }
|
||||
|
||||
@@ -420,7 +420,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<Location>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
getStationaryLocation(): Promise<BackgroundGeolocationResponse> { return; }
|
||||
|
||||
@@ -430,7 +430,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
onStationary(): Promise<any> { return; }
|
||||
|
||||
|
||||
@@ -19,14 +19,14 @@ export interface BackgroundModeConfiguration {
|
||||
text?: String;
|
||||
|
||||
/**
|
||||
* This will look for <icon name>.png in platforms/android/res/drawable|mipmap
|
||||
* This will look for `<icon name>.png` in platforms/android/res/drawable|mipmap
|
||||
*/
|
||||
icon?: string;
|
||||
|
||||
color?: string;
|
||||
|
||||
/**
|
||||
* By default the app will come to foreground when taping on the notification. If false, plugin wont come to foreground when tapped.
|
||||
* By default the app will come to foreground when taping on the notification. If false, plugin won't come to foreground when tapped.
|
||||
*/
|
||||
resume?: boolean;
|
||||
|
||||
@@ -50,7 +50,7 @@ export interface BackgroundModeConfiguration {
|
||||
* @name Background Mode
|
||||
* @description
|
||||
* Cordova plugin to prevent the app from going to sleep while in background.
|
||||
* Requires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, vist: https://github.com/katzer/cordova-plugin-background-mode
|
||||
* Requires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, visit: https://github.com/katzer/cordova-plugin-background-mode
|
||||
*@usage
|
||||
* ```typescript
|
||||
* import { BackgroundMode } from '@ionic-native/background-mode';
|
||||
@@ -70,7 +70,7 @@ export interface BackgroundModeConfiguration {
|
||||
plugin: 'cordova-plugin-background-mode',
|
||||
pluginRef: 'cordova.plugins.backgroundMode',
|
||||
repo: 'https://github.com/katzer/cordova-plugin-background-mode',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8']
|
||||
platforms: ['AmazonFire OS', 'Android', 'Browser', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class BackgroundMode extends IonicNativePlugin {
|
||||
@@ -179,7 +179,7 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
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+.
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android'],
|
||||
|
||||
@@ -27,7 +27,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-badge',
|
||||
pluginRef: 'cordova.plugins.notification.badge',
|
||||
repo: 'https://github.com/katzer/cordova-plugin-badge',
|
||||
platforms: ['Android', 'iOS', 'Browser', 'Windows', 'Amazon FireOS', 'Windows Phone 8']
|
||||
platforms: ['Android', 'Browser', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class Badge extends IonicNativePlugin {
|
||||
|
||||
@@ -92,7 +92,7 @@ export interface BarcodeScanResult {
|
||||
plugin: 'phonegap-plugin-barcodescanner',
|
||||
pluginRef: 'cordova.plugins.barcodeScanner',
|
||||
repo: 'https://github.com/phonegap/phonegap-plugin-barcodescanner',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows 10', 'Windows 8', 'BlackBerry 10', 'Browser']
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class BarcodeScanner extends IonicNativePlugin {
|
||||
|
||||
45
src/@ionic-native/plugins/base64/index.ts
Normal file
45
src/@ionic-native/plugins/base64/index.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @beta
|
||||
* @name Base64
|
||||
* @description
|
||||
* This Plugin is used to encode base64 of any file, it uses js code for iOS, but in case of android it uses native code to handle android versions lower than v.3
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Base64 } from '@ionic-native/base64';
|
||||
*
|
||||
* constructor(private base64: Base64) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* let filePath: string = 'file:///...';
|
||||
* this.base64.encodeFile(filePath).then((base64File: string) => {
|
||||
* console.log(base64File);
|
||||
* }, (err) => {
|
||||
* console.log(err);
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Base64',
|
||||
plugin: 'com-badrit-base64',
|
||||
pluginRef: 'plugins.Base64',
|
||||
repo: 'https://github.com/hazemhagrass/phonegap-base64',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class Base64 extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* This function encodes base64 of any file
|
||||
* @param {string} filePath Absolute file path
|
||||
* @return {Promise<string>} Returns a promise that resolves when the file is successfully encoded
|
||||
*/
|
||||
@Cordova()
|
||||
encodeFile(filePath: string): Promise<string> { return; }
|
||||
|
||||
}
|
||||
@@ -49,7 +49,7 @@ export interface BatteryStatusResponse {
|
||||
plugin: 'cordova-plugin-battery-status',
|
||||
pluginRef: 'navigator.battery',
|
||||
repo: 'https://github.com/apache/cordova-plugin-battery-status',
|
||||
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
|
||||
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class BatteryStatus extends IonicNativePlugin {
|
||||
|
||||
@@ -173,7 +173,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
plugin: 'cordova-plugin-ble-central',
|
||||
pluginRef: 'ble',
|
||||
repo: 'https://github.com/don/cordova-plugin-ble-central',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class BLE extends IonicNativePlugin {
|
||||
@@ -417,6 +417,33 @@ export class BLE extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
isEnabled(): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Register to be notified when Bluetooth state changes on the device.
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* BLE.startStateNotifications().subscribe(state => {
|
||||
* console.log("Bluetooth is " + state);
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* @return Returns an Observable that notifies when the Bluetooth is enabled or disabled on the device.
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
clearFunction: 'stopStateNotifications',
|
||||
clearWithArgs: false
|
||||
})
|
||||
startStateNotifications(): Observable<any> { return; }
|
||||
|
||||
/**
|
||||
* Stop state notifications.
|
||||
*
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
stopStateNotifications(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Open System Bluetooth settings (Android only).
|
||||
*
|
||||
@@ -441,7 +468,7 @@ export class BLE extends IonicNativePlugin {
|
||||
*@returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
static readRSSI(
|
||||
readRSSI(
|
||||
deviceId: string,
|
||||
): Promise<any> { return; }
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
|
||||
/**
|
||||
* @name Bluetooth Serial
|
||||
* @description This plugin enables serial communication over Bluetooth. It was written for communicating between Android or iOS and an Arduino.
|
||||
* @description This plugin enables serial communication over Bluetooth. It was written for communicating between Android or iOS and an Arduino (not Android to Android or iOS to iOS).
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { BluetoothSerial } from '@ionic-native/bluetooth-serial';
|
||||
@@ -35,7 +35,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
repo: 'https://github.com/don/BluetoothSerial',
|
||||
plugin: 'cordova-plugin-bluetooth-serial',
|
||||
pluginRef: 'bluetoothSerial',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone', 'Browser']
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class BluetoothSerial extends IonicNativePlugin {
|
||||
|
||||
250
src/@ionic-native/plugins/braintree/index.ts
Normal file
250
src/@ionic-native/plugins/braintree/index.ts
Normal file
@@ -0,0 +1,250 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* Options for the setupApplePay method.
|
||||
*/
|
||||
export interface ApplePayOptions {
|
||||
/**
|
||||
* Apple Merchant ID - can be obtained from the Apple Developer Portal.
|
||||
*/
|
||||
merchantId: string;
|
||||
|
||||
/**
|
||||
* The currency in which to receive payment.
|
||||
* This is a 3 letter currency code (ISO-4217) - e.g. "GBP", "USD", "MXN", etc.
|
||||
*/
|
||||
currency: string;
|
||||
|
||||
/**
|
||||
* The locale in which payment is accepted.
|
||||
* This is a 2 letter country code (ISO-3166-1) - e.g. "GB", "US", "MX"
|
||||
*/
|
||||
country: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Options for the presentDropInPaymentUI method.
|
||||
*/
|
||||
export interface PaymentUIOptions {
|
||||
/**
|
||||
* The amount of the transaction to show in the drop-in UI on the
|
||||
* summary row as well as the call-to-action button, as a string.
|
||||
* If not provided, this value will default to "0.00", e.g. free.
|
||||
* Unless you are simply capturing authorizations, you probably
|
||||
* want to fill this value in!
|
||||
*/
|
||||
amount?: string;
|
||||
|
||||
/**
|
||||
* The description of the transaction to show in the drop-in UI on the summary row.
|
||||
* Defaults to empty string.
|
||||
*/
|
||||
primaryDescription?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Successful callback result for the presentDropInPaymentUI method.
|
||||
*/
|
||||
export interface PaymentUIResult {
|
||||
/**
|
||||
* Indicates if the user used the cancel button to close the dialog without
|
||||
* completing the payment.
|
||||
*/
|
||||
userCancelled: boolean;
|
||||
|
||||
/**
|
||||
* The nonce returned for the payment transaction (if a payment was completed).
|
||||
*/
|
||||
nonce: string;
|
||||
|
||||
/**
|
||||
* The payment type (if a payment was completed) (credit card, check, paypal, etc).
|
||||
*/
|
||||
type: string;
|
||||
|
||||
/**
|
||||
* A description of the payment method (if a payment was completed).
|
||||
*/
|
||||
localizedDescription: string;
|
||||
|
||||
/**
|
||||
* Information about the credit card used to complete a payment (if a credit card was used).
|
||||
*/
|
||||
card: {
|
||||
/**
|
||||
* The last two digits of the credit card used.
|
||||
*/
|
||||
lastTwo: string;
|
||||
|
||||
/**
|
||||
* An enumerated value used to indicate the type of credit card used.
|
||||
*
|
||||
* Can be one of the following values:
|
||||
*
|
||||
* BTCardNetworkUnknown
|
||||
* BTCardNetworkAMEX
|
||||
* BTCardNetworkDinersClub
|
||||
* BTCardNetworkDiscover
|
||||
* BTCardNetworkMasterCard
|
||||
* BTCardNetworkVisa
|
||||
* BTCardNetworkJCB
|
||||
* BTCardNetworkLaser
|
||||
* BTCardNetworkMaestro
|
||||
* BTCardNetworkUnionPay
|
||||
* BTCardNetworkSolo
|
||||
* BTCardNetworkSwitch
|
||||
* BTCardNetworkUKMaestro
|
||||
*/
|
||||
network: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Information about the PayPal account used to complete a payment (if a PayPal account was used).
|
||||
*/
|
||||
payPalAccount: {
|
||||
email: string;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
phone: string;
|
||||
billingAddress: string;
|
||||
shippingAddress: string;
|
||||
clientMetadataId: string;
|
||||
payerId: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Information about the Apple Pay card used to complete a payment (if Apple Pay was used).
|
||||
*/
|
||||
applePaycard: {
|
||||
};
|
||||
|
||||
/**
|
||||
* Information about 3D Secure card used to complete a payment (if 3D Secure was used).
|
||||
*/
|
||||
threeDSecureCard: {
|
||||
liabilityShifted: boolean;
|
||||
liabilityShiftPossible: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* Information about Venmo account used to complete a payment (if a Venmo account was used).
|
||||
*/
|
||||
venmoAccount: {
|
||||
username: string;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Braintree
|
||||
* @description
|
||||
* This plugin enables the use of the Braintree Drop-In Payments UI in your Ionic applications on Android and iOS, using the native Drop-In UI for each platform (not the Javascript SDK).
|
||||
*
|
||||
* Ionic Native utilizes [a maintaned fork](https://github.com/taracque/cordova-plugin-braintree) of the original `cordova-plugin-braintree`
|
||||
*
|
||||
* For information on how to use Apple Pay with this plugin, please refer to the [plugin documentation](https://github.com/Taracque/cordova-plugin-braintree#apple-pay-ios-only)
|
||||
*
|
||||
* **NOTE**: This is not a complete payments solution. All of the Braintree client-side UIs simply generate a payment nonce that must then be processed by your server to complete the payment.
|
||||
* See the [Braintree Node server documentation](https://developers.braintreepayments.com/start/hello-server/node) for details and a [sample Express server](https://github.com/braintree/braintree_express_example) that implements the required functionality.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Braintree, ApplePayOptions, PaymentUIOptions } from '@ionic-native/braintree';
|
||||
*
|
||||
* constructor(private braintree: Braintree) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* // Your Braintree `Tokenization Key` from the Braintree dashboard.
|
||||
* // Alternatively you can also generate this token server-side
|
||||
* // using a client ID in order to allow users to use stored payment methods.
|
||||
* // See the [Braintree Client Token documentation](https://developers.braintreepayments.com/reference/request/client-token/generate/node#customer_id) for details.
|
||||
* const BRAINTREE_TOKEN = '<YOUR_BRAINTREE_TOKEN>';
|
||||
*
|
||||
* // NOTE: Do not provide this unless you have configured your Apple Developer account
|
||||
* // as well as your Braintree merchant account, otherwise the Braintree module will fail.
|
||||
* const appleOptions: ApplePayOptions = {
|
||||
* merchantId: '<YOUR MERCHANT ID>',
|
||||
* currency: 'USD',
|
||||
* country: 'US'
|
||||
* };
|
||||
*
|
||||
* const paymentOptions: PaymentUIOptions = {
|
||||
* amount: '14.99',
|
||||
* primaryDescription: 'Your product or service (per /item, /month, /week, etc)',
|
||||
* };
|
||||
*
|
||||
* this.braintree.initialize(BRAINTREE_TOKEN)
|
||||
* .then(() => this.braintree.setupApplePay(appleOptions))
|
||||
* .then(() => this.braintree.presentDropInPaymentUI(paymentOptions))
|
||||
* .then((result: PaymentUIResult) => {
|
||||
* if (result.userCancelled) {
|
||||
* console.log("User cancelled payment dialog.");
|
||||
* } else {
|
||||
* console.log("User successfully completed payment!");
|
||||
* console.log("Payment Nonce: " + result.nonce);
|
||||
* console.log("Payment Result.", result);
|
||||
* }
|
||||
* })
|
||||
* .catch((error: string) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*
|
||||
* @interfaces
|
||||
* ApplePayOptions
|
||||
* PaymentUIOptions
|
||||
* PaymentUIResult
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Braintree',
|
||||
plugin: 'cordova-plugin-braintree',
|
||||
pluginRef: 'BraintreePlugin',
|
||||
repo: 'https://github.com/taracque/cordova-plugin-braintree',
|
||||
platforms: ['Android', 'iOS'],
|
||||
install: 'ionic cordova plugin add https://github.com/taracque/cordova-plugin-braintree',
|
||||
installVariables: [],
|
||||
})
|
||||
@Injectable()
|
||||
export class Braintree extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Used to initialize the Braintree client. This function must be called before other methods can be used.
|
||||
* As the initialize code is async, be sure you call all Braintree related methods after the initialize promise has resolved.
|
||||
*
|
||||
* @param token {string} The client token or tokenization key to use with the Braintree client.
|
||||
* @return {Promise<undefined | string>} Returns a promise that resolves with undefined on successful initialization, or rejects with a string message describing the failure.
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
initialize(token: string): Promise<undefined | string> { return; }
|
||||
|
||||
/**
|
||||
* Used to configure Apple Pay on iOS.
|
||||
* In order for Apple Pay payments to appear on the Drop-In Payments UI, you must initialize the Apple Pay framework before using the Drop-In Payments UI.
|
||||
*
|
||||
* Do not turn on Apple Pay in Braintree if you don't have Apple Pay entitlements - the Braintree module will reject the attempt to set up Apple Pay.
|
||||
* Please refer to the [Braintree Merchant Documentation](https://developers.braintreepayments.com/guides/apple-pay/configuration/ios/v4#apple-pay-certificate-request-and-provisioning) to set up a Merchant Account.
|
||||
*
|
||||
* Calling this function on Android is a `noop` so you can call it without having to check which cordova platform you are on! :D
|
||||
*
|
||||
* @param options {ApplePayOptions} The options used to configure Apple Pay.
|
||||
* @return {Promise<undefined | string>} Returns a promise that resolves with undefined on successful initialization, or rejects with a string message describing the failure.
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS'],
|
||||
})
|
||||
setupApplePay(options: ApplePayOptions): Promise<undefined | string> { return; }
|
||||
|
||||
/**
|
||||
* Shows Braintree's Drop-In Payments UI.
|
||||
* Apple Pay is only shown in the Drop In UI if you have previously called `setupApplePay`.
|
||||
*
|
||||
* @param options {PaymentUIOptions} An optional argument used to configure the payment UI; see type definition for parameters. If not provided, the UI will show "0.00" as the price and an empty description.
|
||||
* @return {Promise<PaymentUIResult | string>} Returns a promise that resolves with a PaymentUIResult object on successful payment (or the user cancels), or rejects with a string message describing the failure.
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
presentDropInPaymentUI(options?: PaymentUIOptions): Promise<PaymentUIResult | string> { return; }
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
* @name Call Number
|
||||
* @description
|
||||
* Call a number directly from your Cordova/Ionic application.
|
||||
* **NOTE**: The iOS Simulator (and maybe Android Simulators) do not provide access to the phone subsystem.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
@@ -14,7 +15,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.callNumber.callNumber(18001010101, true)
|
||||
* this.callNumber.callNumber("18001010101", true)
|
||||
* .then(() => console.log('Launched dialer!'))
|
||||
* .catch(() => console.log('Error launching dialer'));
|
||||
*
|
||||
@@ -25,7 +26,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
plugin: 'call-number',
|
||||
pluginRef: 'plugins.CallNumber',
|
||||
repo: 'https://github.com/Rohfosho/CordovaCallNumberPlugin',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class CallNumber extends IonicNativePlugin {
|
||||
@@ -43,4 +44,14 @@ export class CallNumber extends IonicNativePlugin {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if call feature is available
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
isCallSupported(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,9 @@ export interface CameraPreviewOptions {
|
||||
|
||||
/** Alpha channel of the preview box, float, [0,1], default 1 */
|
||||
alpha?: number;
|
||||
|
||||
/** Tap to set specific focus point. Note, this assumes the camera is full-screen. default false */
|
||||
tapToFocus?: boolean;
|
||||
}
|
||||
|
||||
export interface CameraPreviewPictureOptions {
|
||||
|
||||
@@ -85,6 +85,42 @@ export interface CameraPopoverOptions {
|
||||
arrowDir: number;
|
||||
}
|
||||
|
||||
export enum DestinationType {
|
||||
DATA_URL = 0,
|
||||
FILE_URL,
|
||||
NATIVE_URI
|
||||
}
|
||||
|
||||
export enum EncodingType {
|
||||
JPEG = 0,
|
||||
PNG
|
||||
}
|
||||
|
||||
export enum MediaType {
|
||||
PICTURE = 0,
|
||||
VIDEO,
|
||||
ALLMEDIA
|
||||
}
|
||||
|
||||
export enum PictureSourceType {
|
||||
PHOTOLIBRARY = 0,
|
||||
CAMERA,
|
||||
SAVEDPHOTOALBUM
|
||||
}
|
||||
|
||||
export enum PopoverArrowDirection {
|
||||
ARROW_UP = 1,
|
||||
ARROW_DOWN,
|
||||
ARROW_LEFT,
|
||||
ARROW_RIGHT,
|
||||
ARROW_ANY
|
||||
}
|
||||
|
||||
export enum Direction {
|
||||
BACK = 0,
|
||||
FRONT
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Camera
|
||||
* @description
|
||||
@@ -125,7 +161,7 @@ export interface CameraPopoverOptions {
|
||||
plugin: 'cordova-plugin-camera',
|
||||
pluginRef: 'navigator.camera',
|
||||
repo: 'https://github.com/apache/cordova-plugin-camera',
|
||||
platforms: ['Android', 'BlackBerry', 'Browser', 'Firefox', 'FireOS', 'iOS', 'Windows', 'Windows Phone 8', 'Ubuntu']
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class Camera extends IonicNativePlugin {
|
||||
|
||||
@@ -133,6 +133,11 @@ export interface CardIOResponse {
|
||||
* @name Card IO
|
||||
* @description
|
||||
* @usage
|
||||
* Note: For use with iOS 10 + When building your app with the iOS 10 SDK +, you have to add some info to the info.plist file. This is due to increased security in iOS 10. Go to your app directory and search for the <your app name>Info.plist file. Add the following lines in the main <dict> element.
|
||||
* ```xml
|
||||
*<key>NSCameraUsageDescription</key>
|
||||
*<string>To scan credit cards.</string>
|
||||
*```
|
||||
* ```typescript
|
||||
* import { CardIO } from '@ionic-native/card-io';
|
||||
*
|
||||
@@ -147,7 +152,7 @@ export interface CardIOResponse {
|
||||
* if(res){
|
||||
* let options = {
|
||||
* requireExpiry: true,
|
||||
* requireCCV: false,
|
||||
* requireCVV: false,
|
||||
* requirePostalCode: false
|
||||
* };
|
||||
* CardIO.scan(options);
|
||||
@@ -164,7 +169,7 @@ export interface CardIOResponse {
|
||||
plugin: 'card.io.cordova.mobilesdk',
|
||||
pluginRef: 'CardIO',
|
||||
repo: 'https://github.com/card-io/card.io-Cordova-Plugin',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class CardIO extends IonicNativePlugin {
|
||||
|
||||
@@ -5,8 +5,6 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
* @description
|
||||
* Clipboard management plugin for Cordova that supports iOS, Android, and Windows Phone 8.
|
||||
*
|
||||
* Requires Cordova plugin: https://github.com/VersoSolutions/CordovaClipboard
|
||||
* For more info, please see the [Clipboard plugin docs](https://github.com/VersoSolutions/CordovaClipboard.git).
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
@@ -31,10 +29,10 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Clipboard',
|
||||
plugin: 'https://github.com/VersoSolutions/CordovaClipboard.git',
|
||||
plugin: 'cordova-clipboard',
|
||||
pluginRef: 'cordova.plugins.clipboard',
|
||||
repo: 'https://github.com/VersoSolutions/CordovaClipboard',
|
||||
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
|
||||
repo: 'https://github.com/ihadeed/cordova-clipboard',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class Clipboard extends IonicNativePlugin {
|
||||
|
||||
@@ -294,7 +294,7 @@ export class ContactFindOptions implements IContactFindOptions {
|
||||
plugin: 'cordova-plugin-contacts',
|
||||
pluginRef: 'navigator.contacts',
|
||||
repo: 'https://github.com/apache/cordova-plugin-contacts',
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows 8', 'Windows Phone']
|
||||
platforms: ['Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class Contacts extends IonicNativePlugin {
|
||||
|
||||
@@ -10,20 +10,111 @@ import { Injectable } from '@angular/core';
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { CouchbaseLite } from '@ionic-native/couchbase-lite';
|
||||
*
|
||||
* constructor(private couchbase: CouchbaseLite) {
|
||||
*
|
||||
* couchbase.getURL()
|
||||
* .then(url => console.log(url))
|
||||
* .catch(error => console.error(error));
|
||||
*
|
||||
* import { Http } from '@angular/http';
|
||||
* import { Observable } from 'rxjs/Observable'
|
||||
* constructor(private couchbase: CouchbaseLite, private platform:Platform,private _http:Http) {
|
||||
* this.initMethod();
|
||||
* }
|
||||
* url:string;
|
||||
* initMethod() {
|
||||
* this.couchbase.getURL().then((url)=> {
|
||||
* this.url = url;
|
||||
* })
|
||||
* }
|
||||
* getUrl() {
|
||||
* return this.url;
|
||||
* }
|
||||
* // DATABASES //
|
||||
* createDatabase(database_name:string) {
|
||||
* let url = this.getUrl();
|
||||
* url = url+database_name;
|
||||
* return this._http
|
||||
* .put(url)
|
||||
* .map(data => { this.results = data['results'] })
|
||||
* .catch((error:any) => {
|
||||
* return Observable.throw(error.json() || 'Couchbase Lite error');
|
||||
* })
|
||||
* }
|
||||
* deleteDatabase(database_name:string) {
|
||||
* let url = this.getUrl();
|
||||
* url = url+database_name;
|
||||
* return this._http
|
||||
* .delete(url)
|
||||
* .map(data => { this.results = data['results'] })
|
||||
* .catch((error:any) => {
|
||||
* return Observable.throw(error.json() || 'Couchbase Lite error');
|
||||
* })
|
||||
* }
|
||||
* getAllDbs() {
|
||||
* let url = this.getUrl();
|
||||
* url = url+'_all_dbs';
|
||||
* return this._http
|
||||
* .get(url)
|
||||
* .map(data => { this.results = data['results'] })
|
||||
* .catch((error:any) => {
|
||||
* return Observable.throw(error.json() || 'Couchbase Lite error');
|
||||
* })
|
||||
* }
|
||||
* // DOCUMENTS //
|
||||
* getAllDocuments(database_name:string){
|
||||
* let url = this.getUrl();
|
||||
* // include_docs=true will include a doc inside response, it is false by default
|
||||
* url = url + database_name + '/_all_docs?include_docs=true';
|
||||
* return this._http
|
||||
* .get(url)
|
||||
* .map(data => { this.results = data['results'] })
|
||||
* .catch((error:any) => {
|
||||
* return Observable.throw(error.json() || 'Couchbase Lite error');
|
||||
* }) .
|
||||
* }
|
||||
* createDocument(database_name:string,document){
|
||||
* let url = this.getUrl();
|
||||
* url = url + database_name;
|
||||
* return this._http
|
||||
* .post(url,document)
|
||||
* .map(data => { this.results = data['results'] })
|
||||
* .catch((error:any) => {
|
||||
* return Observable.throw(error.json() || 'Couchbase Lite error');
|
||||
* }) .
|
||||
* }
|
||||
* let document = {
|
||||
* _id:'You can either specify the document ID (must be string) else couchbase generates one for your doc',
|
||||
* data:{name:'sandman',age:25,city:pune}
|
||||
* }
|
||||
* createDocument('justbe', document);
|
||||
* // successful response
|
||||
* { "id": "string","rev": "string","ok": true }
|
||||
* updateDocument(database_name:string,document){
|
||||
* let url = this.getUrl();
|
||||
* url = url + database_name + '/' + document._id;
|
||||
* return this._http
|
||||
* .put(url,document)
|
||||
* .map(data => { this.results = data['results'] })
|
||||
* .catch((error:any) => {
|
||||
* return Observable.throw(error.json() || 'Couchbase Lite error');
|
||||
* }) .
|
||||
* }
|
||||
* // for updation of document your document must contain most recent rev(revision) id.
|
||||
* // for each updation of document new rev id is get generated
|
||||
* // successful response
|
||||
* { "id": "string","rev": "string(new revision id)","ok": true }
|
||||
* deleteDocument(database_name:string,document){
|
||||
* let url = this.getUrl();
|
||||
* url = url + database_name + '/' + document._id +'?rev='+doc._rev;
|
||||
* return this._http
|
||||
* .delete(url)
|
||||
* .map(data => { this.results = data['results'] })
|
||||
* .catch((error:any) => {
|
||||
* return Observable.throw(error.json() || 'Couchbase Lite error');
|
||||
* }) .
|
||||
* }
|
||||
*
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'CouchbaseLite',
|
||||
plugin: 'https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin',
|
||||
plugin: 'couchbase-lite-phonegap-plugin',
|
||||
pluginRef: 'cblite',
|
||||
repo: 'https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin',
|
||||
platforms: ['Android', 'iOS']
|
||||
|
||||
@@ -39,7 +39,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
plugin: 'cordova-plugin-dbmeter',
|
||||
pluginRef: 'DBMeter',
|
||||
repo: 'https://github.com/akofman/cordova-plugin-dbmeter',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class DBMeter extends IonicNativePlugin {
|
||||
|
||||
@@ -23,6 +23,13 @@ export interface DeeplinkMatch {
|
||||
|
||||
}
|
||||
|
||||
export interface DeeplinkOptions {
|
||||
/**
|
||||
* Set the matched route as root page using `navCtrl.setRoot()` method.
|
||||
*/
|
||||
root: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Deeplinks
|
||||
* @description This plugin handles deeplinks on iOS and Android for both custom URL scheme links
|
||||
@@ -49,7 +56,7 @@ export interface DeeplinkMatch {
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* Alternatively, if you're using Ionic 2, there's a convenience method that takes a reference to a `NavController` and handles
|
||||
* Alternatively, if you're using Ionic, there's a convenience method that takes a reference to a `NavController` and handles
|
||||
* the actual navigation for you:
|
||||
*
|
||||
* ```typescript
|
||||
@@ -67,7 +74,7 @@ export interface DeeplinkMatch {
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* See the [Ionic 2 Deeplinks Demo](https://github.com/driftyco/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
|
||||
* See the [Ionic Deeplinks Demo](https://github.com/ionic-team/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
|
||||
* retrieve the `NavController` reference at runtime.
|
||||
*
|
||||
* @interfaces
|
||||
@@ -77,10 +84,10 @@ export interface DeeplinkMatch {
|
||||
pluginName: 'Deeplinks',
|
||||
plugin: 'ionic-plugin-deeplinks',
|
||||
pluginRef: 'IonicDeeplink',
|
||||
repo: 'https://github.com/driftyco/ionic-plugin-deeplinks',
|
||||
platforms: ['iOS', 'Android', 'Browser'],
|
||||
install: 'ionic plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/',
|
||||
installVariables: ['URL_SCHEME', 'DEEPLINK_SCHEME', 'DEEPLINK_HOST', 'ANDROID_PATH_PREFIX']
|
||||
repo: 'https://github.com/ionic-team/ionic-plugin-deeplinks',
|
||||
install: 'ionic cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/',
|
||||
installVariables: ['URL_SCHEME', 'DEEPLINK_SCHEME', 'DEEPLINK_HOST', 'ANDROID_PATH_PREFIX'],
|
||||
platforms: ['Android', 'Browser', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class Deeplinks extends IonicNativePlugin {
|
||||
@@ -103,7 +110,7 @@ export class Deeplinks extends IonicNativePlugin {
|
||||
/**
|
||||
*
|
||||
* This is a convenience version of `route` that takes a reference to a NavController
|
||||
* from Ionic 2, or a custom class that conforms to this protocol:
|
||||
* from Ionic, or a custom class that conforms to this protocol:
|
||||
*
|
||||
* NavController.push = function(View, Params){}
|
||||
*
|
||||
@@ -116,6 +123,8 @@ export class Deeplinks extends IonicNativePlugin {
|
||||
* promise result which you can then use to navigate in the app as you see fit.
|
||||
*
|
||||
* @param {Object} paths
|
||||
*
|
||||
* @param {DeeplinkOptions} options
|
||||
*
|
||||
* @returns {Observable<DeeplinkMatch>} Returns an Observable that resolves each time a deeplink comes through, and
|
||||
* errors if a deeplink comes through that does not match a given path.
|
||||
@@ -123,6 +132,6 @@ export class Deeplinks extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
routeWithNavController(navController: any, paths: any): Observable<DeeplinkMatch> { return; }
|
||||
routeWithNavController(navController: any, paths: any, options?: DeeplinkOptions): Observable<DeeplinkMatch> { return; }
|
||||
|
||||
}
|
||||
|
||||
@@ -22,9 +22,9 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'DeviceAccounts',
|
||||
plugin: 'https://github.com/loicknuchel/cordova-device-accounts.git',
|
||||
plugin: 'cordova-device-accounts',
|
||||
pluginRef: 'plugins.DeviceAccounts',
|
||||
repo: 'https://github.com/loicknuchel/cordova-device-accounts',
|
||||
repo: 'https://github.com/danielsogl/cordova-device-accounts',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
|
||||
@@ -72,7 +72,7 @@ export interface DeviceMotionAccelerometerOptions {
|
||||
plugin: 'cordova-plugin-device-motion',
|
||||
pluginRef: 'navigator.accelerometer',
|
||||
repo: 'https://github.com/apache/cordova-plugin-device-motion',
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class DeviceMotion extends IonicNativePlugin {
|
||||
|
||||
@@ -77,7 +77,7 @@ export interface DeviceOrientationCompassOptions {
|
||||
plugin: 'cordova-plugin-device-orientation',
|
||||
pluginRef: 'navigator.compass',
|
||||
repo: 'https://github.com/apache/cordova-plugin-device-orientation',
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class DeviceOrientation extends IonicNativePlugin {
|
||||
|
||||
@@ -24,7 +24,7 @@ declare const window: any;
|
||||
plugin: 'cordova-plugin-device',
|
||||
pluginRef: 'device',
|
||||
repo: 'https://github.com/apache/cordova-plugin-device',
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'macOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class Device extends IonicNativePlugin {
|
||||
|
||||
@@ -125,6 +125,16 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
POWERING_OFF: string;
|
||||
};
|
||||
|
||||
@CordovaProperty
|
||||
motionStatus: {
|
||||
NOT_REQUESTED: string;
|
||||
GRANTED: string;
|
||||
DENIED: string;
|
||||
RESTRICTED: string;
|
||||
NOT_AVAILABLE: string;
|
||||
NOT_DETERMINED: string;
|
||||
UNKNOWN: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Checks if app is able to access device location.
|
||||
@@ -162,7 +172,7 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
/**
|
||||
* Displays the device location settings to allow user to enable location services/change location mode.
|
||||
*/
|
||||
@Cordova({ sync: true, platforms: ['Android', 'Windows 10'] })
|
||||
@Cordova({ sync: true, platforms: ['Android', 'Windows 10', 'iOS'] })
|
||||
switchToLocationSettings(): void { }
|
||||
|
||||
/**
|
||||
@@ -609,7 +619,26 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
})
|
||||
registerNFCStateChangeHandler(handler: Function): void { }
|
||||
|
||||
/**
|
||||
* Checks if the device data roaming setting is enabled.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isDataRoamingEnabled(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
* Checks if the device setting for ADB(debug) is switched on.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isADBModeEnabled(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
* Checks if the device is rooted.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isDeviceRooted(): Promise<boolean> { return; }
|
||||
|
||||
// IOS ONLY
|
||||
|
||||
@@ -640,7 +669,7 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* Checks if remote (push) notifications are enabled.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
@Cordova({ platforms: ['iOS', 'Android'] })
|
||||
isRemoteNotificationsEnabled(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
@@ -650,6 +679,14 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isRegisteredForRemoteNotifications(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
* Returns the authorization status for the application to use Remote Notifications.
|
||||
* Note: Works on iOS 10+ only (iOS 9 and below will invoke the error callback).
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
getRemoteNotificationsAuthorizationStatus(): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Indicates the current setting of notification types for the app in the Settings app.
|
||||
* Note: on iOS 8+, if "Allow Notifications" switch is OFF, all types will be returned as disabled.
|
||||
@@ -720,13 +757,23 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
isMotionRequestOutcomeAvailable(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
* Requests and checks motion authorization for the application: there is no way to independently request only or check only, so both must be done in one operation.
|
||||
* Requests motion tracking authorization for the application.
|
||||
*
|
||||
* Learn more about this method [here](https://github.com/dpa99c/cordova-diagnostic-plugin#requestandcheckmotionauthorization)
|
||||
* Learn more about this method [here](https://github.com/dpa99c/cordova-diagnostic-plugin#requestmotionauthorization)
|
||||
*
|
||||
* @return {Promise<any>}
|
||||
* @return {Promise<string>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
requestAndCheckMotionAuthorization(): Promise<any> { return; }
|
||||
requestMotionAuthorization(): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Checks motion authorization status for the application.
|
||||
*
|
||||
* Learn more about this method [here](https://github.com/dpa99c/cordova-diagnostic-plugin#getmotionauthorizationstatus)
|
||||
*
|
||||
* @return {Promise<string>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
getMotionAuthorizationStatus(): Promise<string> { return; }
|
||||
|
||||
}
|
||||
|
||||
@@ -45,8 +45,8 @@ export interface DialogsPromptCallback {
|
||||
pluginName: 'Dialogs',
|
||||
plugin: 'cordova-plugin-dialogs',
|
||||
pluginRef: 'navigator.notification',
|
||||
repo: 'https://github.com/apache/cordova-plugin-dialogs.git',
|
||||
platforms: ['Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
repo: 'https://github.com/apache/cordova-plugin-dialogs',
|
||||
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class Dialogs extends IonicNativePlugin {
|
||||
@@ -69,7 +69,7 @@ export class Dialogs extends IonicNativePlugin {
|
||||
* @param {string} message Dialog message.
|
||||
* @param {string} title Dialog title. (Optional, defaults to Confirm)
|
||||
* @param {Array<string>} buttonLabels Array of strings specifying button labels. (Optional, defaults to [OK,Cancel])
|
||||
* @returns {Promise<number>} Returns a promise that resolves the button index that was clicked. Note that the index use one-based indexing.
|
||||
* @returns {Promise<number>} Returns a promise that resolves the button index that was clicked, or 0 if the user has dismissed the dialog by clicking outside the dialog box. Note that the index use one-based indexing.
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
|
||||
40
src/@ionic-native/plugins/dns/index.ts
Normal file
40
src/@ionic-native/plugins/dns/index.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
/**
|
||||
* @name DNS
|
||||
* @description A plugin for Apache Cordova that enables applications to manually resolve hostnames into an underlying network address. This is mostly useful for determining whether there is a problem with the device's DNS server configuration.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { DNS } from '@ionic-native/dns';
|
||||
*
|
||||
*
|
||||
* constructor(private dns: DNS) { }
|
||||
*
|
||||
* ...
|
||||
* this.dns.resolve(hostname)
|
||||
* .then(
|
||||
* address => console.log('Resolved ' + hostname + ' to ' + address),
|
||||
* error => console.log('Failed to resolve ' + hostname + ': ' + error)
|
||||
* );
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'DNS',
|
||||
plugin: 'cordova-plugin-dns',
|
||||
pluginRef: 'cordova.plugins.dns',
|
||||
repo: 'https://bitbucket.org/zegeba/cordova-plugin-dns',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class DNS extends IonicNativePlugin {
|
||||
/**
|
||||
* Resolve hostnames into an underlying network address.
|
||||
* @param hostname
|
||||
* @returns {Promise<string>} Returns a promise that resolves with the resolution.
|
||||
*/
|
||||
@Cordova()
|
||||
resolve(hostname: string): Promise<string> { return; }
|
||||
}
|
||||
@@ -2,29 +2,29 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
export interface DocumentViewerOptions {
|
||||
title: string;
|
||||
documentView: {
|
||||
title?: string;
|
||||
documentView?: {
|
||||
closeLabel: string;
|
||||
};
|
||||
navigationView: {
|
||||
navigationView?: {
|
||||
closeLabel: string;
|
||||
};
|
||||
email: {
|
||||
email?: {
|
||||
enabled: boolean;
|
||||
};
|
||||
print: {
|
||||
print?: {
|
||||
enabled: boolean;
|
||||
};
|
||||
openWith: {
|
||||
openWith?: {
|
||||
enabled: boolean;
|
||||
};
|
||||
bookmarks: {
|
||||
bookmarks?: {
|
||||
enabled: boolean;
|
||||
};
|
||||
search: {
|
||||
search?: {
|
||||
enabled: boolean;
|
||||
};
|
||||
autoClose: {
|
||||
autoClose?: {
|
||||
onPause: boolean;
|
||||
};
|
||||
}
|
||||
@@ -90,13 +90,13 @@ export class DocumentViewer extends IonicNativePlugin {
|
||||
*
|
||||
* @param url {string} Url to the file
|
||||
* @param contentType {string} Content type of the file
|
||||
* @param options {Array<DocumentViewerOptions>} options
|
||||
* @param options {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 { }
|
||||
viewDocument(url: string, contentType: string, options: DocumentViewerOptions, onShow?: Function, onClose?: Function, onMissingApp?: Function, onError?: Function): void { }
|
||||
|
||||
}
|
||||
|
||||
@@ -1,28 +1,46 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
interface Cordova {
|
||||
plugins: CordovaPlugins & { email: any };
|
||||
}
|
||||
|
||||
declare const cordova: Cordova;
|
||||
|
||||
export interface EmailComposerOptions {
|
||||
|
||||
/**
|
||||
* App to send the email with
|
||||
*/
|
||||
app?: string;
|
||||
|
||||
/**
|
||||
* Email address(es) for To field
|
||||
*/
|
||||
to?: string | Array<string>;
|
||||
|
||||
/**
|
||||
* Email address(es) for CC field
|
||||
*/
|
||||
cc?: string | Array<string>;
|
||||
|
||||
/**
|
||||
* Email address(es) for BCC field
|
||||
*/
|
||||
bcc?: string | Array<string>;
|
||||
|
||||
attachments?: Array<any>;
|
||||
/**
|
||||
* File paths or base64 data streams
|
||||
*/
|
||||
attachments?: string[];
|
||||
|
||||
/**
|
||||
* Subject of the email
|
||||
*/
|
||||
subject?: string;
|
||||
|
||||
/**
|
||||
* Email body (for HTML, set isHtml to true)
|
||||
*/
|
||||
body?: string;
|
||||
|
||||
/**
|
||||
* Indicates if the body is HTML or plain text
|
||||
*/
|
||||
isHtml?: boolean;
|
||||
|
||||
}
|
||||
@@ -67,17 +85,28 @@ export interface EmailComposerOptions {
|
||||
*
|
||||
* // Send a text message using default options
|
||||
* this.emailComposer.open(email);
|
||||
* ```
|
||||
*
|
||||
* You can also assign aliases to email apps
|
||||
* ```ts
|
||||
* // add alias
|
||||
* this.email.addAlias('gmail', 'com.google.android.gm');
|
||||
*
|
||||
* // then use alias when sending email
|
||||
* this.email.open({
|
||||
* app: 'gmail',
|
||||
* ...
|
||||
* });
|
||||
* ```
|
||||
* @interfaces
|
||||
* EmailComposerOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'EmailComposer',
|
||||
plugin: 'cordova-plugin-email',
|
||||
plugin: 'cordova-plugin-email-composer',
|
||||
pluginRef: 'cordova.plugins.email',
|
||||
repo: 'https://github.com/hypery2k/cordova-email-plugin',
|
||||
platforms: ['Android', 'iOS']
|
||||
repo: 'https://github.com/katzer/cordova-plugin-email-composer',
|
||||
platforms: ['Amazon Fire OS', 'Android', 'Browser', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class EmailComposer extends IonicNativePlugin {
|
||||
@@ -92,7 +121,7 @@ export class EmailComposer extends IonicNativePlugin {
|
||||
isAvailable(app?: string): Promise<any> {
|
||||
return new Promise<boolean>((resolve, reject) => {
|
||||
if (app) {
|
||||
cordova.plugins.email.isAvailable(app, (isAvailable: boolean) => {
|
||||
EmailComposer.getPlugin().isAvailable(app, (isAvailable: boolean) => {
|
||||
if (isAvailable) {
|
||||
resolve();
|
||||
} else {
|
||||
@@ -100,7 +129,7 @@ export class EmailComposer extends IonicNativePlugin {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
cordova.plugins.email.isAvailable((isAvailable: boolean) => {
|
||||
EmailComposer.getPlugin().isAvailable((isAvailable: boolean) => {
|
||||
if (isAvailable) {
|
||||
resolve();
|
||||
} else {
|
||||
@@ -111,6 +140,26 @@ export class EmailComposer extends IonicNativePlugin {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Request permission to access email accounts information
|
||||
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 0,
|
||||
errorIndex: 2
|
||||
})
|
||||
requestPermission(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
* Checks if the app has a permission to access email accounts information
|
||||
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 0,
|
||||
errorIndex: 2
|
||||
})
|
||||
hasPermission(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
* Adds a new mail app alias.
|
||||
*
|
||||
|
||||
@@ -44,7 +44,7 @@ export interface EstimoteBeaconRegion {
|
||||
plugin: 'cordova-plugin-estimote',
|
||||
pluginRef: 'estimote.beacons',
|
||||
repo: 'https://github.com/evothings/phonegap-estimotebeacons',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class EstimoteBeacons extends IonicNativePlugin {
|
||||
@@ -512,4 +512,3 @@ export class EstimoteBeacons extends IonicNativePlugin {
|
||||
writeConnectedMinor(minor: number): Promise<any> { return; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Extended Device Information
|
||||
* @description
|
||||
* Retrieves additional device information that is not provided by other plugins
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { ExtendedDeviceInformation } from '@ionic-native/extended-device-information';
|
||||
*
|
||||
*
|
||||
* constructor(private extendedDeviceInformation: ExtendedDeviceInformation) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* console.log('The Memory is: ' + this.extendedDeviceInformation.memory);
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'ExtendedDeviceInformation',
|
||||
plugin: 'cordova-plugin-extended-device-information',
|
||||
pluginRef: 'extended-device-information',
|
||||
repo: 'https://github.com/danielehrhardt/cordova-plugin-extended-device-information',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class ExtendedDeviceInformation extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Get the device's memory size
|
||||
*/
|
||||
@CordovaProperty
|
||||
memory: number;
|
||||
|
||||
/**
|
||||
* Get the device's CPU mhz
|
||||
*/
|
||||
@CordovaProperty
|
||||
cpumhz: string;
|
||||
|
||||
/**
|
||||
* Get the total storage
|
||||
*/
|
||||
@CordovaProperty
|
||||
totalstorage: string;
|
||||
|
||||
}
|
||||
@@ -43,7 +43,7 @@ export interface FacebookLoginResponse {
|
||||
* Then type in the following command in your Terminal, where APP_ID and APP_NAME are the values from the Facebook Developer portal.
|
||||
*
|
||||
* ```bash
|
||||
* ionic plugin add cordova-plugin-facebook4 --save --variable APP_ID="123456789" --variable APP_NAME="myApplication"
|
||||
* ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"
|
||||
* ```
|
||||
*
|
||||
* After, you'll need to add the native platforms you'll be using to your app in the Facebook Developer portal under your app's Settings:
|
||||
@@ -114,9 +114,9 @@ export interface FacebookLoginResponse {
|
||||
plugin: 'cordova-plugin-facebook4',
|
||||
pluginRef: 'facebookConnectPlugin',
|
||||
repo: 'https://github.com/jeduan/cordova-plugin-facebook4',
|
||||
install: 'ionic plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
|
||||
install: 'ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
|
||||
installVariables: ['APP_ID', 'APP_NAME'],
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS', 'Browser']
|
||||
})
|
||||
@Injectable()
|
||||
export class Facebook extends IonicNativePlugin {
|
||||
|
||||
@@ -25,32 +25,32 @@ export interface NotificationData {
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { FCM } from 'ionic-native';
|
||||
* import { FCM } from '@ionic-native/fcm';
|
||||
*
|
||||
* constructor(private fcm: FCM) {}
|
||||
*
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* fcm.subscribeToTopic('marketing');
|
||||
*
|
||||
*
|
||||
* fcm.getToken().then(token=>{
|
||||
* backend.registerToken(token);
|
||||
* })
|
||||
*
|
||||
*
|
||||
* fcm.onNotification().subscribe(data=>{
|
||||
* if(data.wasPressed){
|
||||
* if(data.wasTapped){
|
||||
* console.log("Received in background");
|
||||
* } else {
|
||||
* console.log("Received in foreground");
|
||||
* };
|
||||
* })
|
||||
*
|
||||
*
|
||||
* fcm.onTokenRefresh().subscribe(token=>{
|
||||
* backend.registerToken(token);
|
||||
* })
|
||||
*
|
||||
*
|
||||
* fcm.unsubscribeFromTopic('marketing');
|
||||
*
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* NotificationData
|
||||
@@ -60,14 +60,14 @@ export interface NotificationData {
|
||||
plugin: 'cordova-plugin-fcm',
|
||||
pluginRef: 'FCMPlugin',
|
||||
repo: 'https://github.com/fechanique/cordova-plugin-fcm',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@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()
|
||||
@@ -75,7 +75,7 @@ export class FCM extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Event firing on the token refresh
|
||||
*
|
||||
*
|
||||
* @returns {Observable<string>} Returns an Observable that notifies with the change of device's registration id
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -85,9 +85,9 @@ export class FCM extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* 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()
|
||||
@@ -95,9 +95,9 @@ export class FCM extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* 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()
|
||||
@@ -105,7 +105,7 @@ export class FCM extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Watch for incoming notifications
|
||||
*
|
||||
*
|
||||
* @returns {Observable<any>} returns an object with data from the notification
|
||||
*/
|
||||
@Cordova({
|
||||
|
||||
@@ -23,9 +23,9 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'FileChooser',
|
||||
plugin: 'https://github.com/don/cordova-filechooser.git',
|
||||
plugin: 'cordova-plugin-filechooser',
|
||||
pluginRef: 'fileChooser',
|
||||
repo: 'https://github.com/don/cordova-filechooser',
|
||||
repo: 'https://github.com/ihadeed/cordova-filechooser',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CordovaInstance, Plugin, InstanceCheck, checkAvailability, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
declare const FileTransfer: any;
|
||||
|
||||
export interface FileUploadOptions {
|
||||
|
||||
/**
|
||||
@@ -109,21 +107,21 @@ export interface FileTransferError {
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Transfer
|
||||
* @name File Transfer
|
||||
*
|
||||
* @description
|
||||
* This plugin allows you to upload and download files.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Transfer, FileUploadOptions, TransferObject } from '@ionic-native/transfer';
|
||||
* import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
|
||||
* import { File } from '@ionic-native/file';
|
||||
*
|
||||
* constructor(private transfer: Transfer, private file: File) { }
|
||||
* constructor(private transfer: FileTransfer, private file: File) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* const fileTransfer: TransferObject = this.transfer.create();
|
||||
* const fileTransfer: FileTransferObject = this.transfer.create();
|
||||
*
|
||||
* // Upload a file:
|
||||
* fileTransfer.upload(..).then(..).catch(..);
|
||||
@@ -170,16 +168,17 @@ export interface FileTransferError {
|
||||
* FileUploadResult
|
||||
* FileTransferError
|
||||
* @classes
|
||||
* TransferObject
|
||||
* FileTransferObject
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'FileTransfer',
|
||||
plugin: 'cordova-plugin-file-transfer',
|
||||
pluginRef: 'FileTransfer',
|
||||
repo: 'https://github.com/apache/cordova-plugin-file-transfer'
|
||||
repo: 'https://github.com/apache/cordova-plugin-file-transfer',
|
||||
platforms: ['Amazon Fire OS', 'Android', 'Browser', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class Transfer extends IonicNativePlugin {
|
||||
export class FileTransfer extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Error code rejected from upload with FileTransferError
|
||||
@@ -201,10 +200,10 @@ export class Transfer extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Creates a new FileTransfer object
|
||||
* @return {TransferObject}
|
||||
* @return {FileTransferObject}
|
||||
*/
|
||||
create(): TransferObject {
|
||||
return new TransferObject();
|
||||
create(): FileTransferObject {
|
||||
return new FileTransferObject();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -216,12 +215,12 @@ export class Transfer extends IonicNativePlugin {
|
||||
plugin: 'cordova-plugin-file-transfer',
|
||||
pluginName: 'FileTransfer'
|
||||
})
|
||||
export class TransferObject {
|
||||
export class FileTransferObject {
|
||||
private _objectInstance: any;
|
||||
|
||||
constructor() {
|
||||
if (checkAvailability('FileTransfer', null, 'FileTransfer') === true) {
|
||||
this._objectInstance = new FileTransfer();
|
||||
if (checkAvailability(FileTransfer.getPluginRef(), null, FileTransfer.getPluginName()) === true) {
|
||||
this._objectInstance = new (FileTransfer.getPlugin())();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,15 +237,13 @@ export class TransferObject {
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
upload(fileUrl: string, url: string, options?: FileUploadOptions, trustAllHosts?: boolean): Promise<FileUploadResult> {
|
||||
return;
|
||||
}
|
||||
upload(fileUrl: string, url: string, options?: FileUploadOptions, trustAllHosts?: boolean): Promise<FileUploadResult> { return; }
|
||||
|
||||
/**
|
||||
* Downloads a file from server.
|
||||
*
|
||||
* @param {string} source URL of the server to download the file, as encoded by encodeURI().
|
||||
* @param {stirng} target Filesystem url representing the file on the device. For backwards compatibility, this can also be the full path of the file on the device.
|
||||
* @param {string} target Filesystem url representing the file on the device. For backwards compatibility, this can also be the full path of the file on the device.
|
||||
* @param {boolean} trustAllHosts Optional parameter, defaults to false. If set to true, it accepts all security certificates. This is useful because Android rejects self-signed security certificates. Not recommended for production use. Supported on Android and iOS.
|
||||
* @param {object} Optional parameters, currently only supports headers (such as Authorization (Basic Authentication), etc).
|
||||
* @returns {Promise<any>} Returns a Promise that resolves to a FileEntry object.
|
||||
@@ -255,9 +252,7 @@ export class TransferObject {
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
download(source: string, target: string, trustAllHosts?: boolean, options?: { [s: string]: any; }): Promise<any> {
|
||||
return;
|
||||
}
|
||||
download(source: string, target: string, trustAllHosts?: boolean, options?: { [s: string]: any; }): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Registers a listener that gets called whenever a new chunk of data is transferred.
|
||||
@@ -275,5 +270,5 @@ export class TransferObject {
|
||||
@CordovaInstance({
|
||||
sync: true
|
||||
})
|
||||
abort(): void { }
|
||||
abort(): void {}
|
||||
}
|
||||
@@ -400,6 +400,7 @@ export interface RemoveResult {
|
||||
fileRemoved: Entry;
|
||||
}
|
||||
|
||||
/** @hidden */
|
||||
export declare class FileSaver extends EventTarget {
|
||||
/**
|
||||
* When the FileSaver constructor is called, the user agent must return a new FileSaver object with readyState set to INIT.
|
||||
@@ -489,6 +490,7 @@ export declare class FileSaver extends EventTarget {
|
||||
}
|
||||
|
||||
/**
|
||||
* @hidden
|
||||
* This interface expands on the FileSaver interface to allow for multiple write actions, rather than just saving a single Blob.
|
||||
*/
|
||||
export declare class FileWriter extends FileSaver {
|
||||
@@ -528,6 +530,7 @@ export interface IWriteOptions {
|
||||
truncate?: number; // if present, number of bytes to truncate file to before writing
|
||||
}
|
||||
|
||||
/** @hidden */
|
||||
export declare class FileError {
|
||||
constructor(code: number);
|
||||
static NOT_FOUND_ERR: number;
|
||||
@@ -547,6 +550,7 @@ export declare class FileError {
|
||||
message: string;
|
||||
}
|
||||
|
||||
/** @hidden */
|
||||
export declare class FileReader {
|
||||
static EMPTY: number;
|
||||
static LOADING: number;
|
||||
@@ -616,7 +620,7 @@ declare const window: Window;
|
||||
plugin: 'cordova-plugin-file',
|
||||
pluginRef: 'cordova.file',
|
||||
repo: 'https://github.com/apache/cordova-plugin-file',
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'macOS', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class File extends IonicNativePlugin {
|
||||
|
||||
@@ -17,6 +17,16 @@ export interface FingerprintOptions {
|
||||
* Disable 'use backup' option. Only for android (optional)
|
||||
*/
|
||||
disableBackup?: boolean;
|
||||
|
||||
/**
|
||||
* Title of fallback button. Only for iOS
|
||||
*/
|
||||
localizedFallbackTitle?: string;
|
||||
|
||||
/**
|
||||
* Description in authentication dialogue. Only for iOS
|
||||
*/
|
||||
localizedReason?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -36,7 +46,9 @@ export interface FingerprintOptions {
|
||||
* this.faio.show({
|
||||
* clientId: 'Fingerprint-Demo',
|
||||
* clientSecret: 'password', //Only necessary for Android
|
||||
* disableBackup:true //Only for Android(optional)
|
||||
* disableBackup:true, //Only for Android(optional)
|
||||
* localizedFallbackTitle: 'Use Pin', //Only for iOS
|
||||
* localizedReason: 'Please authenticate' //Only for iOS
|
||||
* })
|
||||
* .then((result: any) => console.log(result))
|
||||
* .catch((error: any) => console.log(error));
|
||||
|
||||
85
src/@ionic-native/plugins/firebase-analytics/index.ts
Normal file
85
src/@ionic-native/plugins/firebase-analytics/index.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @beta
|
||||
* @name Firebase Analytics
|
||||
* @description
|
||||
* Cordova plugin for Firebase Analytics
|
||||
*
|
||||
* Go to firebase console and export google-services.json and GoogleService-Info.plist. Put those files into the root of your cordova app folder.
|
||||
*
|
||||
* NOTE: on iOS in order to collect demographic, age, gender data etc. you should additionally include AdSupport.framework into your project.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { FirebaseAnalytics } from '@ionic-native/firebase-analytics';
|
||||
*
|
||||
*
|
||||
* constructor(private firebaseAnalytics: FirebaseAnalytics) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.firebaseAnalytics.logEvent('page_view', {page: "dashboard"})
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'FirebaseAnalytics',
|
||||
plugin: 'cordova-plugin-firebase-analytics',
|
||||
pluginRef: 'cordova.plugins.firebase.analytics',
|
||||
repo: 'https://github.com/chemerisuk/cordova-plugin-firebase-analytics',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class FirebaseAnalytics extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Logs an app event.
|
||||
* Be aware of automatically collected events.
|
||||
* @param name {string} The name of the event
|
||||
* @param params {any} Some param to configure something
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
logEvent(name: string, params: any): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Sets the user ID property.
|
||||
* This feature must be used in accordance with Google's Privacy Policy.
|
||||
* @param id {string} The user ID
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
setUserId(id: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* This feature must be used in accordance with Google's Privacy Policy.
|
||||
* Be aware of automatically collected user properties.
|
||||
* @param name {string} The property name
|
||||
* @param value {string} The property value
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
setUserProperty(name: string, value: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Sets whether analytics collection is enabled for this app on this device.
|
||||
* @param enabled {boolean}
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
setEnabled(enabled: boolean): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Sets the current screen name, which specifies the current visual context in your app.
|
||||
* This helps identify the areas in your app where users spend their time and how they interact with your app.
|
||||
* @param name {string} The name of the screen
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
setCurrentScreen(name: string): Promise<any> { return; }
|
||||
|
||||
}
|
||||
91
src/@ionic-native/plugins/firebase-dynamic-links/index.ts
Normal file
91
src/@ionic-native/plugins/firebase-dynamic-links/index.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
export interface DynamicLinksOptions {
|
||||
title: string;
|
||||
message: string;
|
||||
deepLink?: string;
|
||||
callToActionText?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @beta
|
||||
* @name Firebase Dynamic Links
|
||||
* @description
|
||||
* Cordova plugin for Firebase Invites and Firebase Dynamic Links
|
||||
*
|
||||
* Variables APP_DOMAIN and APP_PATH specify web URL where your app will start an activity to handle the link. They also used to setup support for App Indexing.
|
||||
* Variable REVERSED_CLIENT_ID can be found in your GoogleService-Info.plist under the same key name.
|
||||
* Variable PHOTO_LIBRARY_USAGE_DESCRIPTION specifies required value for NSPhotoLibraryUsageDescription on iOS.
|
||||
* Go to firebase console and export google-services.json and GoogleService-Info.plist. Put those files into the root of your cordova app folder.
|
||||
*
|
||||
* Preferences:
|
||||
*
|
||||
* Preferences GoogleIOSClientId and GoogleAndroidClientId are used to setup dynamic links when you have an app for several platforms.
|
||||
* You can find values at your GoogleService-Info.plist (key ANDROID_CLIENT_ID) and google-services.json (key client[0].oauth_client[0].client_id).
|
||||
*
|
||||
*config.xml:
|
||||
* ```xml
|
||||
* <platform name="android">
|
||||
* <preference name="GoogleIOSClientId" value="..." />
|
||||
* </platform>
|
||||
* <platform name="ios">
|
||||
* <preference name="GoogleAndroidClientId" value="..." />
|
||||
* </platform>
|
||||
* ```
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { FirebaseDynamicLinks } from '@ionic-native/firebase-dynamic-links';
|
||||
*
|
||||
*
|
||||
* constructor(private firebaseDynamicLinks: FirebaseDynamicLinks) { }
|
||||
*
|
||||
* ...
|
||||
* // The deepLink and callToActionText properties are optional
|
||||
* const options: DynamicLinksOptions = {
|
||||
* title: 'My Title';
|
||||
* message: 'My message';
|
||||
* deepLink: 'http://example.com/';
|
||||
* callToActionText: 'Message on button';
|
||||
* }
|
||||
*
|
||||
* this.firebaseDynamicLinks.sendInvitation(options)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* this.firebaseDynamicLinks.onDynamicLink()
|
||||
* .then((res: any) => console.log(res)) //Handle the logic here after opening the app with the Dynamic link
|
||||
* .catch((error:any) => console.log(error));
|
||||
* ```
|
||||
*
|
||||
* @interfaces
|
||||
* DynamicLinksOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'FirebaseDynamicLinks',
|
||||
plugin: ' cordova-plugin-firebase-dynamiclinks',
|
||||
pluginRef: 'cordova.plugins.firebase.dynamiclinks',
|
||||
repo: 'https://github.com/chemerisuk/cordova-plugin-firebase-dynamiclinks',
|
||||
install: 'ionic cordova plugin add cordova-plugin-firebase-dynamiclinks --save --variable APP_DOMAIN="example.com" --variable APP_PATH="/"',
|
||||
installVariables: ['APP_DOMAIN', 'APP_PATH'],
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class FirebaseDynamicLinks extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Registers callback that is triggered on each dynamic link click.
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
onDynamicLink(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Display invitation dialog.
|
||||
* @param options {DynamicLinksOptions} Some param to configure something
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
sendInvitation(options: DynamicLinksOptions): Promise<any> { return; }
|
||||
|
||||
}
|
||||
@@ -30,17 +30,18 @@ import { Observable } from 'rxjs/Observable';
|
||||
plugin: 'cordova-plugin-firebase',
|
||||
pluginRef: 'FirebasePlugin',
|
||||
repo: 'https://github.com/arnesson/cordova-plugin-firebase',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class Firebase extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Get the device token
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getToken(): Promise<any> { return; }
|
||||
getToken(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get notified when a token is refreshed
|
||||
@@ -49,7 +50,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
onTokenRefresh(): Observable<any> { return; }
|
||||
onTokenRefresh(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get notified when the user opens a notification
|
||||
@@ -58,7 +61,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
onNotificationOpen(): Observable<any> { return; }
|
||||
onNotificationOpen(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Grant permission to receive push notifications
|
||||
@@ -67,14 +72,18 @@ export class Firebase extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
platforms: ['iOS']
|
||||
})
|
||||
grantPermission(): Promise<any> { return; }
|
||||
grantPermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check permission to receive push notifications
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
* Check permission to receive push notifications
|
||||
* @return {Promise<{isEnabled: boolean}>}
|
||||
*/
|
||||
@Cordova()
|
||||
hasPermission(): Promise<any> { return; }
|
||||
hasPermission(): Promise<{ isEnabled: boolean }> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set icon badge number. Set to 0 to clear the badge.
|
||||
@@ -82,14 +91,18 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setBadgeNumber(badgeNumber: number): Promise<any> { return; }
|
||||
setBadgeNumber(badgeNumber: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get icon badge number
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getBadgeNumber(): Promise<any> { return; }
|
||||
getBadgeNumber(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Subscribe to a topic
|
||||
@@ -97,7 +110,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
subscribe(topic: string): Promise<any> { return; }
|
||||
subscribe(topic: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsubscribe from a topic
|
||||
@@ -105,7 +120,18 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
unsubscribe(topic: string): Promise<any> { return; }
|
||||
unsubscribe(topic: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregister from firebase, used to stop receiving push notifications.
|
||||
* Call this when you logout user from your app.
|
||||
*/
|
||||
@Cordova()
|
||||
unregister(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log an event using Analytics
|
||||
@@ -114,7 +140,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
logEvent(type: string, data: any): Promise<any> { return; }
|
||||
logEvent(type: string, data: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log an Error using FirebaseCrash
|
||||
@@ -122,7 +150,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
logError(message: string): Promise<any> { return; }
|
||||
logError(message: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name of the current screen in Analytics
|
||||
@@ -130,7 +160,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setScreenName(name: string): Promise<any> { return; }
|
||||
setScreenName(name: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a user id for use in Analytics
|
||||
@@ -138,7 +170,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setUserId(userId: string): Promise<any> { return; }
|
||||
setUserId(userId: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a user property for use in Analytics
|
||||
@@ -147,7 +181,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setUserProperty(name: string, value: string): Promise<any> { return; }
|
||||
setUserProperty(name: string, value: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch Remote Config parameter values for your app
|
||||
@@ -158,14 +194,18 @@ export class Firebase extends IonicNativePlugin {
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
fetch(cacheExpirationSeconds?: number): Promise<any> { return; }
|
||||
fetch(cacheExpirationSeconds?: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate the Remote Config fetched config
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
activateFetched(): Promise<any> { return; }
|
||||
activateFetched(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a Remote Config value
|
||||
@@ -177,7 +217,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
getValue(key: string, namespace?: string): Promise<any> { return; }
|
||||
getValue(key: string, namespace?: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a Remote Config byte array
|
||||
@@ -190,7 +232,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
getByteArray(key: string, namespace?: string): Promise<any> { return; }
|
||||
getByteArray(key: string, namespace?: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current state of the FirebaseRemoteConfig singleton object
|
||||
@@ -199,7 +243,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
getInfo(): Promise<any> { return; }
|
||||
getInfo(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the settings for the FirebaseRemoteConfig object's operations
|
||||
@@ -209,7 +255,9 @@ export class Firebase extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
setConfigSettings(settings: any): Promise<any> { return; }
|
||||
setConfigSettings(settings: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set defaults in the Remote Config
|
||||
@@ -222,6 +270,34 @@ export class Firebase extends IonicNativePlugin {
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
setDefaults(defaults: any, namespace: string): Promise<any> { return; }
|
||||
setDefaults(defaults: any, namespace: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an SMS to the user with the SMS verification code and returns the Verification ID required to sign in using phone authentication
|
||||
* @param phoneNumber {string}
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS']
|
||||
})
|
||||
getVerificationID(phoneNumber: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends an SMS to the user with the SMS verification code and returns the Verification ID required to sign in using phone authentication
|
||||
* @param phoneNumber {string} the phone number, including '+' and country code
|
||||
* @param timeoutDuration {number} the timeout in sec - no more SMS will be sent to this number until this timeout expires
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android'],
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
verifyPhoneNumber(phoneNumber: string, timeoutDuration: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
pluginName: 'Flashlight',
|
||||
plugin: 'cordova-plugin-flashlight',
|
||||
pluginRef: 'window.plugins.flashlight',
|
||||
repo: 'https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin.git',
|
||||
repo: 'https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
|
||||
@@ -72,6 +72,9 @@ export interface FlurryAnalyticsLocation {
|
||||
horizontalAccuracy?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
export class FlurryAnalyticsObject {
|
||||
|
||||
constructor(private _objectInstance: any) { }
|
||||
@@ -179,7 +182,7 @@ export class FlurryAnalyticsObject {
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { FlurryAnalytics, FlurryAnalyticsObject, FlurryAnalyticsOptions } from 'ionic-native/flurry-analytics';
|
||||
* import { FlurryAnalytics, FlurryAnalyticsObject, FlurryAnalyticsOptions } from '@ionic-native/flurry-analytics';
|
||||
*
|
||||
* constructor(private flurryAnalytics: FlurryAnalytics) { }
|
||||
*
|
||||
@@ -208,8 +211,8 @@ export class FlurryAnalyticsObject {
|
||||
pluginName: 'FlurryAnalytics',
|
||||
plugin: 'cordova-plugin-flurryanalytics',
|
||||
pluginRef: 'FlurryAnalytics',
|
||||
repo: 'https://github.com/blakgeek/cordova-plugin-flurryanalytics.git',
|
||||
platforms: ['Android', 'iOS', 'Browser']
|
||||
repo: 'https://github.com/blakgeek/cordova-plugin-flurryanalytics',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class FlurryAnalytics extends IonicNativePlugin {
|
||||
@@ -224,7 +227,7 @@ export class FlurryAnalytics extends IonicNativePlugin {
|
||||
let instance: any;
|
||||
|
||||
if (checkAvailability(FlurryAnalytics.pluginRef, null, FlurryAnalytics.pluginName) === true) {
|
||||
instance = new (window as any).FlurryAnalaytics(options);
|
||||
instance = new (window as any).FlurryAnalytics(options);
|
||||
}
|
||||
|
||||
return new FlurryAnalyticsObject(instance);
|
||||
|
||||
138
src/@ionic-native/plugins/ftp/index.ts
Normal file
138
src/@ionic-native/plugins/ftp/index.ts
Normal file
@@ -0,0 +1,138 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
/**
|
||||
* @name FTP
|
||||
* @description
|
||||
* This cordova plugin is created to use ftp (client) in web/js.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { FTP } from '@ionic-native/ftp';
|
||||
*
|
||||
*
|
||||
* constructor(private fTP: FTP) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.fTP.connect('ftp_host', 'ftp_user', 'ftp_password')
|
||||
* .then((res: any) => console.log('Login successful', res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'FTP',
|
||||
plugin: 'cordova-plugin-ftp',
|
||||
pluginRef: 'cordova.plugin.ftp',
|
||||
repo: 'https://github.com/xfally/cordova-plugin-ftp',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class FTP extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Connect to one ftp server.
|
||||
*
|
||||
* Just need to init the connection once. If success, you can do any ftp actions later.
|
||||
* @param hostname {string} The ftp server url. Like ip without protocol prefix, e.g. "192.168.1.1".
|
||||
* @param username {string} The ftp login username. If it and `password` are all blank/undefined, the default username "anonymous" is used.
|
||||
* @param password {string} The ftp login password. If it and `username` are all blank/undefined, the default password "anonymous@" is used.
|
||||
* @return {Promise<any>} The success callback. Notice: For iOS, if triggered, means `init` success, but NOT means the later action, e.g. `ls`... `download` will success!
|
||||
*/
|
||||
@Cordova()
|
||||
connect(hostname: string, username: string, password: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* List files (with info of `name`, `type`, `link`, `size`, `modifiedDate`) under one directory on the ftp server.
|
||||
* You can get one file's name using `fileList[x].name` (`x` is the location in array).
|
||||
*
|
||||
* Explain key:
|
||||
* - name: file name (utf-8).
|
||||
* - type: file type. number `0` means regular file, `1` means directory, `2` means symbolic link, `-1` means unknown type (maybe block dev, char dev...).
|
||||
* - link: if the file is a symbolic link, then this field store symbolic link information (utf-8), else it's a blank string.
|
||||
* - size: file size in bytes.
|
||||
* - modifiedDate: modified date of this file. date format is `yyyy-MM-dd HH:mm:ss zzz`, e.g "2015-12-01 20:45:00 GMT+8".
|
||||
*
|
||||
* @param path {string} The path on the ftp server. e.g. "/adf/123/".
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
ls(path: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Create one directory on the ftp server.
|
||||
*
|
||||
* @param path {string} The path on the ftp server. e.g. "/adf/123/".
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
mkdir(path: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Delete one directory on the ftp server.
|
||||
*
|
||||
* Tip: As many ftp server could not rm dir when it's not empty, so rm all files under the dir at first is recommended.
|
||||
*
|
||||
* @param path {string} The file (with full path) you want to delete. e.g. "/adf/123/newDir/myFile".
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
rmdir(path: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Delete one file on the ftp server.
|
||||
*
|
||||
* @param file {string} The file (with full path) you want to delete. e.g. "/adf/123/newDir/myFile".
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
rm(file: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Upload one local file to the ftp server.
|
||||
*
|
||||
* @param localFile {string} The file (with full path) you want to upload. e.g. "/local/path/to/localFile".
|
||||
* @param remoteFile {string} The file (with full path) you want to located on the ftp server. e.g. "/adf/123/newDir/remoteFile".
|
||||
* @return {Observable<any>} Returns an observable.
|
||||
* It will be triggered many times according the file's size.
|
||||
* The arg `0`, `0.1xx`, `0.2xx` ... `1` means the upload percent. When it reach `1`, means success.
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
upload(localFile: string, remoteFile: string): Observable<any> { return; }
|
||||
|
||||
/**
|
||||
* Download one remote file on the ftp server to local path.
|
||||
*
|
||||
* @param localFile {string} The file (with full path) you want to upload. e.g. "/local/path/to/localFile".
|
||||
* @param remoteFile {string} The file (with full path) you want to located on the ftp server. e.g. "/adf/123/newDir/remoteFile".
|
||||
* @return {Observable<any>} Returns an observable.
|
||||
* It will be triggered many times according the file's size.
|
||||
* The arg `0`, `0.1xx`, `0.2xx` ... `1` means the upload percent. When it reach `1`, means success.
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
download(localFile: string, remoteFile: string): Observable<any> { return; }
|
||||
|
||||
/**
|
||||
* Cancel all requests. Always success.
|
||||
*
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
cancel(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Disconnect from ftp server.
|
||||
*
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
disconnect(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
@@ -72,20 +72,20 @@ declare const window: any;
|
||||
* ### Troubleshooting ###
|
||||
* #### I get compile errors when I run `ionic build ios` or `ionic run ios`. ####
|
||||
* This could be caused by the Cordova project directory in `/platforms/ios` not being named correctly.
|
||||
* Try running `ionic platform rm <platform>` then run `ionic platform add <platform>` to recreate the
|
||||
* Try running `ionic cordova platform rm <platform>` then run `ionic cordova platform add <platform>` to recreate the
|
||||
* platform directories.
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Geofence',
|
||||
plugin: 'cordova-plugin-geofence',
|
||||
pluginRef: 'geofence',
|
||||
repo: 'https://github.com/cowbell/cordova-plugin-geofence/',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows Phone']
|
||||
repo: 'https://github.com/cowbell/cordova-plugin-geofence',
|
||||
platforms: ['Android', 'iOS', 'Windows', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class Geofence extends IonicNativePlugin {
|
||||
|
||||
public TransitionType = {
|
||||
TransitionType = {
|
||||
ENTER: 1,
|
||||
EXIT: 2,
|
||||
BOTH: 3
|
||||
@@ -96,7 +96,7 @@ export class Geofence extends IonicNativePlugin {
|
||||
* @return {Observable<any>}
|
||||
*/
|
||||
@CordovaFunctionOverride()
|
||||
onTrasitionReceived(): Observable<any> { return; };
|
||||
onTransitionReceived(): Observable<any> { return; };
|
||||
|
||||
/**
|
||||
* Initializes the plugin. User will be prompted to allow the app to use location and notifications.
|
||||
@@ -139,20 +139,6 @@ export class Geofence extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
getWatched(): Promise<string> { return; };
|
||||
|
||||
/**
|
||||
* Called when a geofence is crossed in the direction specified by `TransitType`.
|
||||
*
|
||||
* @returns {Observable<any>}
|
||||
*/
|
||||
onTransitionReceived(): Observable<any> {
|
||||
|
||||
return new Observable<any>((observer) => {
|
||||
window && window.geofence && (window.geofence.onTransitionReceived = observer.next.bind(observer));
|
||||
return () => window.geofence.onTransitionReceived = () => { };
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the user clicks a geofence notification. iOS and Android only.
|
||||
*
|
||||
|
||||
@@ -153,7 +153,9 @@ export interface GeolocationOptions {
|
||||
plugin: 'cordova-plugin-geolocation',
|
||||
pluginRef: 'navigator.geolocation',
|
||||
repo: 'https://github.com/apache/cordova-plugin-geolocation',
|
||||
platforms: ['Android', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
install: 'ionic cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="To locate you"',
|
||||
installVariables: ['GEOLOCATION_USAGE_DESCRIPTION'],
|
||||
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class Geolocation extends IonicNativePlugin {
|
||||
|
||||
@@ -26,7 +26,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-globalization',
|
||||
pluginRef: 'navigator.globalization',
|
||||
repo: 'https://github.com/apache/cordova-plugin-globalization',
|
||||
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Windows Phone 8', 'Widnows', 'Browser']
|
||||
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class Globalization extends IonicNativePlugin {
|
||||
|
||||
@@ -34,7 +34,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-google-analytics',
|
||||
pluginRef: 'ga',
|
||||
repo: 'https://github.com/danwilson/google-analytics-plugin',
|
||||
platforms: ['Android', 'iOS', 'Browser']
|
||||
platforms: ['Android', 'Browser', 'iOS', 'Windows Phone 8']
|
||||
})
|
||||
@Injectable()
|
||||
export class GoogleAnalytics extends IonicNativePlugin {
|
||||
@@ -102,7 +102,7 @@ export class GoogleAnalytics extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Track custom metric
|
||||
* @param key {string}
|
||||
* @param key {number}
|
||||
* @param value {any}
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@@ -110,7 +110,7 @@ export class GoogleAnalytics extends IonicNativePlugin {
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
trackMetric(key: string, value?: any): Promise<any> { return; }
|
||||
trackMetric(key: number, value?: number): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Track a screen
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
264
src/@ionic-native/plugins/google-play-games-services/index.ts
Normal file
264
src/@ionic-native/plugins/google-play-games-services/index.ts
Normal file
@@ -0,0 +1,264 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
export interface ScoreData {
|
||||
|
||||
/**
|
||||
* The score to submit.
|
||||
*/
|
||||
score: number;
|
||||
|
||||
/**
|
||||
* The leaderboard ID from Google Play Developer console.
|
||||
*/
|
||||
leaderboardId: string;
|
||||
|
||||
}
|
||||
|
||||
export interface LeaderboardData {
|
||||
|
||||
/**
|
||||
* The leaderboard ID from Goole Play Developer console.
|
||||
*/
|
||||
leaderboardId: string;
|
||||
|
||||
}
|
||||
|
||||
export interface AchievementData {
|
||||
|
||||
/**
|
||||
* The achievement ID from Google Play Developer console.
|
||||
*/
|
||||
achievementId: string;
|
||||
|
||||
}
|
||||
|
||||
export interface IncrementableAchievementData extends AchievementData {
|
||||
|
||||
/**
|
||||
* The amount to increment the achievement by.
|
||||
*/
|
||||
numSteps: number;
|
||||
|
||||
}
|
||||
|
||||
export interface SignedInResponse {
|
||||
|
||||
/**
|
||||
* True or false is the use is signed in.
|
||||
*/
|
||||
isSignedIn: boolean;
|
||||
|
||||
}
|
||||
|
||||
export interface Player {
|
||||
|
||||
/**
|
||||
* The players display name.
|
||||
*/
|
||||
displayName: string;
|
||||
|
||||
/**
|
||||
* The ID given to the player by Play Games Services.
|
||||
*/
|
||||
playerId: string;
|
||||
|
||||
/**
|
||||
* The title of the player based on their gameplay activity. Not
|
||||
* all players have this and it may change over time.
|
||||
*/
|
||||
title: string|null;
|
||||
|
||||
/**
|
||||
* Retrieves the URI for loading this player's icon-size profile image.
|
||||
* Returns null if the player has no profile image.
|
||||
*/
|
||||
iconImageUrl: string;
|
||||
|
||||
/**
|
||||
* Retrieves the URI for loading this player's hi-res profile image. Returns
|
||||
* null if the player has no profile image.
|
||||
*/
|
||||
hiResIconImageUrl: string;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Google Play Games Services
|
||||
* @description
|
||||
* A Cordova plugin that let's you interact with Google Play Games Services.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { GooglePlayGamesServices } from '@ionic-native/google-play-games-services';
|
||||
*
|
||||
*
|
||||
* constructor(private googlePlayGamesServices: GooglePlayGamesServices) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* // Authenticate with Play Games Services
|
||||
* this.googlePlayGamesServices.auth()
|
||||
* .then(() => console.log('Logged in to Play Games Services'))
|
||||
* .catch(e) => console.log('Error logging in Play Games Services', e);
|
||||
*
|
||||
* // Sign out of Play Games Services.
|
||||
* this.googlePlayGamesServices.signOut()
|
||||
* .then(() => console.log('Logged out of Play Games Services'))
|
||||
* .catch(e => console.log('Error logging out of Play Games Services', e);
|
||||
*
|
||||
* // Check auth status.
|
||||
* this.googlePlayGamesServices.isSignedIn()
|
||||
* .then((signedIn: SignedInResponse) => {
|
||||
* if (signedIn.isSignedIn) {
|
||||
* hideLoginButton();
|
||||
* }
|
||||
* });
|
||||
*
|
||||
* // Fetch currently authenticated user's data.
|
||||
* this.googlePlayGamesServices.showPlayer().then((data: Player) => {
|
||||
* console.log('Player data', data);
|
||||
* });
|
||||
*
|
||||
* // Submit a score.
|
||||
* this.googlePlayGamesServices.submitScore({
|
||||
* score: 100,
|
||||
* leaderboardId: 'SomeLeaderboardId'
|
||||
* });
|
||||
*
|
||||
* // Show the native leaderboards window.
|
||||
* this.googlePlayGamesServices.showAllLeaderboards()
|
||||
* .then(() => console.log('The leaderboard window is visible.'));
|
||||
*
|
||||
* // Show a signle native leaderboard window.
|
||||
* this.googlePlayGamesServices.showLeaderboard({
|
||||
* leaderboardId: 'SomeLeaderBoardId'
|
||||
* }).then(() => console.log('The leaderboard window is visible.'));
|
||||
*
|
||||
* // Unlock an achievement.
|
||||
* this.googlePlayGamesServices.unlockAchievement({
|
||||
* achievementId: 'SomeAchievementId'
|
||||
* }).then(() => console.log('Achievement unlocked'));
|
||||
*
|
||||
* // Incremement an achievement.
|
||||
* this.googlePlayGamesServices.incrementAchievement({
|
||||
* step: 1,
|
||||
* achievementId: 'SomeAchievementId'
|
||||
* }).then(() => console.log('Achievement incremented'));
|
||||
*
|
||||
* // Show the native achievements window.
|
||||
* this.googlePlayGamesServices.showAchivements()
|
||||
* .then(() => console.log('The achievements window is visible.'));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'GooglePlayGamesServices',
|
||||
plugin: 'cordova-plugin-play-games-service',
|
||||
pluginRef: 'plugins.playGamesServices',
|
||||
repo: 'https://github.com/artberri/cordova-plugin-play-games-services',
|
||||
platforms: ['Android'],
|
||||
install: 'ionic cordova plugin add cordova-plugin-play-games-service --variable APP_ID="YOUR_APP_ID',
|
||||
})
|
||||
@Injectable()
|
||||
export class GooglePlayGamesServices extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Initialise native Play Games Service login procedure.
|
||||
*
|
||||
* @return {Promise<any>} Returns a promise that resolves when the player
|
||||
* is authenticated with Play Games Services.
|
||||
*/
|
||||
@Cordova()
|
||||
auth(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Sign out of Google Play Games Services.
|
||||
*
|
||||
* @return {Promise<any>} Returns a promise that resolve when the player
|
||||
* successfully signs out.
|
||||
*/
|
||||
@Cordova()
|
||||
signOut(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Check if the user is signed in.
|
||||
*
|
||||
* @return {Promise<SignedInResponse>} Returns a promise that resolves with
|
||||
* the signed in response.
|
||||
*/
|
||||
@Cordova()
|
||||
isSignedIn(): Promise<SignedInResponse> { return; }
|
||||
|
||||
/**
|
||||
* Show the currently authenticated player.
|
||||
*
|
||||
* @return {Promise<Player>} Returns a promise that resolves when Play
|
||||
* Games Services returns the authenticated player.
|
||||
*/
|
||||
@Cordova()
|
||||
showPlayer(): Promise<Player> { return; }
|
||||
|
||||
/**
|
||||
* Submit a score to a leaderboard. You should ensure that you have a
|
||||
* successful return from auth() before submitting a score.
|
||||
*
|
||||
* @param data {ScoreData} The score data you want to submit.
|
||||
* @return {Promise<any>} Returns a promise that resolves when the
|
||||
* score is submitted.
|
||||
*/
|
||||
@Cordova()
|
||||
submitScore(data: ScoreData): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Launches the native Play Games leaderboard view controller to show all the
|
||||
* leaderboards.
|
||||
*
|
||||
* @return {Promise<any>} Returns a promise that resolves when the native
|
||||
* leaderboards window opens.
|
||||
*/
|
||||
@Cordova()
|
||||
showAllLeaderboards(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Launches the native Play Games leaderboard view controll to show the
|
||||
* specified leaderboard.
|
||||
*
|
||||
* @param data {LeaderboardData} The leaderboard you want to show.
|
||||
* @return {Promise<any>} Returns a promise that resolves when the native
|
||||
* leaderboard window opens.
|
||||
*/
|
||||
@Cordova()
|
||||
showLeaderboard(data: LeaderboardData): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Unlock an achievement.
|
||||
*
|
||||
* @param data {AchievementData}
|
||||
* @return {Promise<any>} Returns a promise that resolves when the
|
||||
* achievement is unlocked.
|
||||
*/
|
||||
@Cordova()
|
||||
unlockAchievement(data: AchievementData): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Increment an achievement.
|
||||
*
|
||||
* @param data {IncrementableAchievementData}
|
||||
* @return {Promise<any>} Returns a promise that resolves when the
|
||||
* achievement is incremented.
|
||||
*/
|
||||
@Cordova()
|
||||
incrementAchievement(data: IncrementableAchievementData): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Lauches the native Play Games achievements view controller to show
|
||||
* achievements.
|
||||
*
|
||||
* @return {Promise<any>} Returns a promise that resolves when the
|
||||
* achievement window opens.
|
||||
*/
|
||||
@Cordova()
|
||||
showAchievements(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
@@ -23,9 +23,9 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-googleplus',
|
||||
pluginRef: 'window.plugins.googleplus',
|
||||
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-googleplus',
|
||||
platforms: ['Web', 'Android', 'iOS'],
|
||||
install: 'ionic plugin add cordova-plugin-googleplus --variable REVERSED_CLIENT_ID=myreversedclientid',
|
||||
installVariables: ['REVERSED_CLIENT_ID']
|
||||
install: 'ionic cordova plugin add cordova-plugin-googleplus --variable REVERSED_CLIENT_ID=myreversedclientid',
|
||||
installVariables: ['REVERSED_CLIENT_ID'],
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class GooglePlus extends IonicNativePlugin {
|
||||
@@ -63,4 +63,11 @@ export class GooglePlus extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
disconnect(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* This will retrieve the Android signing certificate fingerprint which is required in the Google Developer Console.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getSigningCertificateFingerprint(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
|
||||
@@ -59,9 +59,9 @@ export interface HTTPResponse {
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'HTTP',
|
||||
plugin: 'cordova-plugin-http',
|
||||
pluginRef: 'cordovaHTTP',
|
||||
repo: 'https://github.com/wymsee/cordova-HTTP',
|
||||
plugin: 'cordova-plugin-advanced-http',
|
||||
pluginRef: 'cordova.plugin.http',
|
||||
repo: 'https://github.com/silkimen/cordova-plugin-advanced-http',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
@@ -92,6 +92,41 @@ export class HTTP extends IonicNativePlugin {
|
||||
@Cordova({ sync: true })
|
||||
setHeader(header: string, value: string): void { }
|
||||
|
||||
/**
|
||||
* Set the data serializer which will be used for all future POST and PUT requests. Takes a string representing the name of the serializer.
|
||||
* @param serializer {string} The name of the serializer. Can be urlencoded or json
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
setDataSerializer(serializer: string): void { }
|
||||
|
||||
/**
|
||||
* Clear all cookies
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
clearCookies(): void { }
|
||||
|
||||
/**
|
||||
* Remove cookies
|
||||
* @param url {string}
|
||||
* @param cb
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
removeCookies(url: string, cb: () => void): void { }
|
||||
|
||||
/**
|
||||
* Disable following redirects automatically
|
||||
* @param disable {boolean} Set to true to disable following redirects automatically
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
disableRedirect(disable: boolean): void { }
|
||||
|
||||
/**
|
||||
* Set request timeout
|
||||
* @param timeout {number} The timeout in seconds. Default 60
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
setRequestTimeout(timeout: number): void { }
|
||||
|
||||
/**
|
||||
* Enable or disable SSL Pinning. This defaults to false.
|
||||
*
|
||||
@@ -112,14 +147,6 @@ export class HTTP extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
acceptAllCerts(accept: boolean): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Whether or not to validate the domain name in the certificate. This defaults to true.
|
||||
* @param validate {boolean} Set to true to validate
|
||||
* @returns {Promise<void>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
validateDomainName(validate: boolean): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Make a POST request
|
||||
* @param url {string} The url to send the request to
|
||||
@@ -131,7 +158,7 @@ export class HTTP extends IonicNativePlugin {
|
||||
post(url: string, body: any, headers: any): Promise<HTTPResponse> { return; }
|
||||
|
||||
/**
|
||||
*
|
||||
* Make a GET request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
@@ -140,6 +167,46 @@ export class HTTP extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
get(url: string, parameters: any, headers: any): Promise<HTTPResponse> { return; }
|
||||
|
||||
/**
|
||||
* Make a PUT request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
put(url: string, body: any, headers: any): Promise<HTTPResponse> { return; }
|
||||
|
||||
/**
|
||||
* Make a PATCH request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
patch(url: string, body: any, headers: any): Promise<HTTPResponse> { return; }
|
||||
|
||||
/**
|
||||
* Make a DELETE request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
delete(url: string, parameters: any, headers: any): Promise<HTTPResponse> { return; }
|
||||
|
||||
/**
|
||||
* Make a HEAD request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
head(url: string, parameters: any, headers: any): Promise<HTTPResponse> { return; }
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
|
||||
@@ -49,10 +49,10 @@ export interface HttpdOptions {
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Httpd',
|
||||
plugin: 'https://github.com/floatinghotpot/cordova-httpd.git',
|
||||
plugin: 'cordova-plugin-httpd',
|
||||
pluginRef: 'cordova.plugins.CorHttpd',
|
||||
repo: 'https://github.com/floatinghotpot/cordova-httpd',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['Android', 'iOS', 'macOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class Httpd extends IonicNativePlugin {
|
||||
|
||||
180
src/@ionic-native/plugins/hyper-track/index.ts
Normal file
180
src/@ionic-native/plugins/hyper-track/index.ts
Normal file
@@ -0,0 +1,180 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @beta
|
||||
* @name HyperTrack
|
||||
* @description
|
||||
* HyperTrack cordova plugin wrapper for Ionic Native. Location-based services provider.
|
||||
* Make sure to include your publishable key at config.xml (see [HyperTrack Cordova Setup](https://docs.hypertrack.com/sdks/cordova/setup.html#step-2-configure-the-sdk)).
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { HyperTrack } from '@ionic-native/hyper-track';
|
||||
*
|
||||
* constructor(private hyperTrack: HyperTrack) { }
|
||||
*
|
||||
* // Check if app has location permissions enabled
|
||||
* this.hyperTrack.checkLocationPermission().then(response => {
|
||||
* // response (String) can be "true" or "false"
|
||||
* if (response != "true") {
|
||||
* // Ask for permissions
|
||||
* this.hyperTrack.requestPermissions().then(response => {}, error => {});
|
||||
* }
|
||||
* }, error => {});
|
||||
*
|
||||
* // Check if app has location services enabled
|
||||
* this.hyperTrack.checkLocationServices().then(response => {
|
||||
* // response (String) can be "true" or "false"
|
||||
* if (response != "true") {
|
||||
* // Request services to be enabled
|
||||
* this.hyperTrack.requestLocationServices().then(response => {}, error => {});
|
||||
* }
|
||||
* }, error => {});
|
||||
*
|
||||
* // First set the current user. This can be done via getOrCreateUser() or setUserId()
|
||||
* this.hyperTrack.setUserId("xxx").then(user => {
|
||||
* // user (String) is a String representation of a User's JSON
|
||||
*
|
||||
* this.hyperTrack.startTracking().then(userId => {}, trackingError => {});
|
||||
*
|
||||
* this.hyperTrack.createAndAssignAction('visit', 'lookupId','address', 20.12, -100.3).then(action => {
|
||||
* // Handle action. It's a String representation of the Action's JSON. For example:
|
||||
* // '{"eta":"Jul 17, 2017 12:50:03 PM","assigned_at":"Jul 17, 2017 12:34:38 PM",,"distance":"0.0",...}'
|
||||
* }, error => {});
|
||||
*
|
||||
* // You can complete an action with completeAction() or completeActionWithLookupId()
|
||||
* this.hyperTrack.completeAction('action-id').then(response => {
|
||||
* // Handle response (String). Should be "OK".
|
||||
* }, error => {});
|
||||
*
|
||||
* this.hyperTrack.getCurrentLocation().then(location => {
|
||||
* // Handle location. It's a String representation of a Location's JSON.For example:
|
||||
* // '{"mAccuracy":22.601,,"mLatitude":23.123456, "mLongitude":-100.1234567, ...}'
|
||||
* }, error => {});
|
||||
*
|
||||
* this.hyperTrack.stopTracking().then(success => {
|
||||
* // Handle success (String). Should be "OK".
|
||||
* }, error => {});
|
||||
*
|
||||
* }, error => {});*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'HyperTrack',
|
||||
plugin: 'cordova-plugin-hypertrack',
|
||||
pluginRef: 'cordova.plugins.HyperTrack',
|
||||
repo: 'https://github.com/hypertrack/hypertrack-cordova',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class HyperTrack extends IonicNativePlugin {
|
||||
/**
|
||||
* Returns given text. For testing purposes.
|
||||
* @param {String} text Given text to print
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the result text (which is the same as the given text) if successful, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
helloWorld(text: String): Promise<String> { return; }
|
||||
|
||||
/**
|
||||
* Create a new user to identify the current device or get a user from a lookup id.
|
||||
* @param {String} name User's name
|
||||
* @param {String} phone User's phone
|
||||
* @param {String} photo User's photo as URL or a Base64 converted string
|
||||
* @param {String} lookupId User's lookupId, which is used to check if a new user is to be created (in this case you could set it to an internal reference for the user that you can use later to identify it), or if one with an existing lookupId is to be used.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with a string representation of the User's JSON, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
getOrCreateUser(name: String, phone: String, photo: String, lookupId: String): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Set UserId for the SDK created using HyperTrack APIs. This is useful if you already have a user previously created.
|
||||
* @param {String} userId User's ID
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with an "OK" string if successful, or it gets rejected if an error ocurred. An "OK" response doesn't necessarily mean that the userId was found. It just means that it was set correctly.
|
||||
*/
|
||||
@Cordova()
|
||||
setUserId(userId: String): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Enable the SDK and start tracking. This will fail if there is no user set.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the userId (String) of the User being tracked if successful, or it gets rejected if an error ocurred. One example of an error is not setting a User with getOrCreateUser() or setUserId() before calling this function.
|
||||
*/
|
||||
@Cordova()
|
||||
startTracking(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Create and assign an action to the current user using specified parameters
|
||||
* @param {String} type The action type. Can be one from "pickup", "delivery", "dropoff", "visit", "stopover" or "task"
|
||||
* @param {String} lookupId The Action's desired lookupId
|
||||
* @param {String} expectedPlaceAddress The address of the Action
|
||||
* @param {Number} expectedPlaceLatitude The latitude of the Action
|
||||
* @param {Number} expectedPlaceLongitude The longitude of the Action
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with a string representation of the Action's JSON, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
createAndAssignAction(type: String, lookupId: String, expectedPlaceAddress: String, expectedPlaceLatitude: Number, expectedPlaceLongitude: Number): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Complete an action from the SDK by its ID
|
||||
* @param {String} actionId ID of the Action that will be marked as completed
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with an "OK" string if successful, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
completeAction(actionId: String): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Complete an action from the SDK using Action's lookupId as parameter
|
||||
* @param {String} lookupId Lookup ID of the Action that will be marked as completed
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with an "OK" string if successful, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
completeActionWithLookupId(lookupId: String): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Disable the SDK and stop tracking.
|
||||
* Needs user setting (via getOrCreateUser() or setUserId()) first.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the an "OK" string if successful, or it gets rejected if an error ocurred. One example of an error is not setting a User with getOrCreateUser() or setUserId() before calling this function.
|
||||
*/
|
||||
@Cordova()
|
||||
stopTracking(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Get user's current location from the SDK
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with a string representation of the Location's JSON, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
getCurrentLocation(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Check if Location permission has been granted to the app (for Android).
|
||||
* Returns "true" or "false" in success method accordingly.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if location permission was granted, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
checkLocationPermission(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Request user to grant Location access to the app (for Anrdoid).
|
||||
* For Android Marshmallow and above. In other platforms, the Promise is never resolved.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if Location access was given to the app, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
requestPermissions(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Check if Location services are enabled on the device (for Android).
|
||||
* Returns "true" or "false" in success method accordingly.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if location services are enabled, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
checkLocationServices(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Request user to enable Location services on the device.
|
||||
* For Android Marshmallow and above. In other platforms, the Promise is never resolved.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if Location services were enabled, or it gets rejected if an error ocurred.
|
||||
*/
|
||||
@Cordova()
|
||||
requestLocationServices(): Promise<any> { return; }
|
||||
}
|
||||
@@ -16,7 +16,7 @@ export interface Beacon {
|
||||
major: number;
|
||||
|
||||
/**
|
||||
* The beacon's major identifier number.
|
||||
* The beacon's minor identifier number.
|
||||
*/
|
||||
minor: number;
|
||||
|
||||
@@ -248,12 +248,12 @@ export interface IBeaconDelegate {
|
||||
* delegate.didRangeBeaconsInRegion()
|
||||
* .subscribe(
|
||||
* data => console.log('didRangeBeaconsInRegion: ', data),
|
||||
* error => console.error();
|
||||
* error => console.error()
|
||||
* );
|
||||
* delegate.didStartMonitoringForRegion()
|
||||
* .subscribe(
|
||||
* data => console.log('didStartMonitoringForRegion: ', data),
|
||||
* error => console.error();
|
||||
* error => console.error()
|
||||
* );
|
||||
* delegate.didEnterRegion()
|
||||
* .subscribe(
|
||||
@@ -636,7 +636,7 @@ export class IBeacon extends IonicNativePlugin {
|
||||
* native layer acknowledged the dispatch of the advertising request.
|
||||
*/
|
||||
@Cordova({ otherPromise: true })
|
||||
startAdvertising(region: Region, measuredPower: number): Promise<void> { return; }
|
||||
startAdvertising(region: Region, measuredPower?: number): Promise<void> { return; }
|
||||
|
||||
/**
|
||||
* Stop advertising as a beacon.
|
||||
|
||||
@@ -57,9 +57,11 @@ export interface ImagePickerOptions {
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'ImagePicker',
|
||||
plugin: 'https://github.com/Telerik-Verified-Plugins/ImagePicker',
|
||||
plugin: 'cordova-plugin-telerik-imagepicker',
|
||||
pluginRef: 'window.imagePicker',
|
||||
repo: 'https://github.com/Telerik-Verified-Plugins/ImagePicker',
|
||||
install: 'ionic cordova plugin add cordova-plugin-telerik-imagepicker --variable PHOTO_LIBRARY_USAGE_DESCRIPTION="your usage message"',
|
||||
installVariables: ['PHOTO_LIBRARY_USAGE_DESCRIPTION'],
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
|
||||
@@ -42,11 +42,6 @@ export interface ImageResizerOptions {
|
||||
* @description
|
||||
* Cordova Plugin For Image Resize
|
||||
*
|
||||
* Requires plugin `info.protonet.imageresizer` - use the Ionic CLI and type in the following command:
|
||||
* `ionic plugin add https://github.com/protonet/cordova-plugin-image-resizer.git`
|
||||
*
|
||||
* For more info, please see the https://github.com/protonet/cordova-plugin-image-resizer
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { ImageResizer, ImageResizerOptions } from '@ionic-native/image-resizer';
|
||||
@@ -74,9 +69,9 @@ export interface ImageResizerOptions {
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'ImageResizer',
|
||||
plugin: 'https://github.com/protonet/cordova-plugin-image-resizer.git',
|
||||
plugin: 'info.protonet.imageresizer',
|
||||
pluginRef: 'ImageResizer',
|
||||
repo: 'https://github.com/protonet/cordova-plugin-image-resizer',
|
||||
repo: 'https://github.com/JoschkaSchulz/cordova-plugin-image-resizer',
|
||||
platforms: ['Android', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
|
||||
@@ -181,7 +181,7 @@ export class InAppBrowserObject {
|
||||
plugin: 'cordova-plugin-inappbrowser',
|
||||
pluginRef: 'cordova.InAppBrowser',
|
||||
repo: 'https://github.com/apache/cordova-plugin-inappbrowser',
|
||||
platforms: ['Amazon', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
platforms: ['AmazonFire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'macOS', 'Ubuntu', 'Windows', 'Windows Phone']
|
||||
})
|
||||
@Injectable()
|
||||
export class InAppBrowser extends IonicNativePlugin {
|
||||
|
||||
429
src/@ionic-native/plugins/in-app-purchase-2/index.ts
Normal file
429
src/@ionic-native/plugins/in-app-purchase-2/index.ts
Normal file
@@ -0,0 +1,429 @@
|
||||
import { Plugin, IonicNativePlugin, Cordova, CordovaProperty } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
/**
|
||||
* @name In App Purchase 2
|
||||
* @description
|
||||
* In-App Purchase for Cordova on iOS, Android and Windows
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { InAppPurchase2 } from '@ionic-native/in-app-purchase-2';
|
||||
*
|
||||
* constructor(private store: InAppPurchase2) { }
|
||||
*
|
||||
* ...
|
||||
* ```
|
||||
*
|
||||
* * @advanced
|
||||
*
|
||||
* ```typescript
|
||||
* // After Platform Ready
|
||||
* this.store.verbosity = this.store.DEBUG;
|
||||
* this.store.register({
|
||||
* id: productId,
|
||||
* alias: productId,
|
||||
* type: this.store.NON_RENEWING_SUBSCRIPTION
|
||||
* });
|
||||
*
|
||||
* // Register Event Handlers for the specific product
|
||||
* this.store.when(productId).registered( (product: IAPProduct) => {
|
||||
* console.log('Registered: ' + JSON.stringify(product));
|
||||
* });
|
||||
*
|
||||
* // Updated
|
||||
* this.store.when(productId).updated( (product: IAPProduct) => {
|
||||
* console.log('Loaded' + JSON.stringify(product));
|
||||
* });
|
||||
*
|
||||
* // Issue with buying
|
||||
* this.store.when(productId).cancelled( (product) => {
|
||||
* alert('Purchase was Cancelled');
|
||||
* });
|
||||
*
|
||||
* // Track All Store Errors
|
||||
* this.store.error( (err) => {
|
||||
* alert('Store Error ' + JSON.stringify(err));
|
||||
* });
|
||||
*
|
||||
* this.store.ready().then((status) => {
|
||||
* console.log(JSON.stringify(this.store.get(productId)));
|
||||
* console.log('Store is Ready: ' + JSON.stringify(status));
|
||||
* console.log('Products: ' + JSON.stringify(this.store.products));
|
||||
* });
|
||||
*
|
||||
*
|
||||
* // Errors
|
||||
* this.store.when(productId).error( (error) => {
|
||||
* this.loader.dismiss();
|
||||
* alert('An Error Occured' + JSON.stringify(error));
|
||||
* });
|
||||
* // Refresh Starts Handlers
|
||||
* console.log('Refresh Store');
|
||||
* this.store.refresh();
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* // To Purchase
|
||||
* this.store.order(productId);
|
||||
*
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
|
||||
export interface IAPProductOptions {
|
||||
id: string;
|
||||
alias: string;
|
||||
type: string;
|
||||
}
|
||||
|
||||
export type IAPProducts = Array<IAPProduct> & {
|
||||
/**
|
||||
* Get product by ID
|
||||
*/
|
||||
byId: { [id: string]: IAPProduct; };
|
||||
/**
|
||||
* Get product by alias
|
||||
*/
|
||||
byAlias: { [alias: string]: IAPProduct; };
|
||||
/**
|
||||
* Remove all products (for testing only).
|
||||
*/
|
||||
reset: () => {};
|
||||
};
|
||||
|
||||
export type IAPQueryCallback = ((product: IAPProduct) => void) | ((error: IAPError) => void);
|
||||
|
||||
export interface IAPProduct {
|
||||
|
||||
id: string;
|
||||
|
||||
alias: string;
|
||||
|
||||
type: string;
|
||||
|
||||
state: string;
|
||||
|
||||
title: string;
|
||||
|
||||
description: string;
|
||||
|
||||
priceMicros: string;
|
||||
|
||||
price: string;
|
||||
|
||||
currency: string;
|
||||
|
||||
loaded: boolean;
|
||||
|
||||
valid: boolean;
|
||||
|
||||
canPurchase: boolean;
|
||||
|
||||
owned: boolean;
|
||||
|
||||
downloading: boolean;
|
||||
|
||||
downloaded: boolean;
|
||||
|
||||
additionalData: any;
|
||||
|
||||
transaction: any;
|
||||
|
||||
finish(): void;
|
||||
|
||||
verify(): any;
|
||||
|
||||
set(key: string, value: any): void;
|
||||
|
||||
stateChanged(): void;
|
||||
|
||||
on(event: string, callback: Function): void;
|
||||
|
||||
once(event: string, callback: Function): void;
|
||||
|
||||
off(callback: Function): void;
|
||||
|
||||
trigger(action: string, args: any): void;
|
||||
|
||||
}
|
||||
|
||||
export interface IAPProductEvents {
|
||||
loaded: (callback: IAPQueryCallback) => void;
|
||||
updated: (callback: IAPQueryCallback) => void;
|
||||
error: (callback: IAPQueryCallback) => void;
|
||||
approved: (callback: IAPQueryCallback) => void;
|
||||
owned: (callback: IAPQueryCallback) => void;
|
||||
cancelled: (callback: IAPQueryCallback) => void;
|
||||
refunded: (callback: IAPQueryCallback) => void;
|
||||
registered: (callback: IAPQueryCallback) => void;
|
||||
valid: (callback: IAPQueryCallback) => void;
|
||||
invalid: (callback: IAPQueryCallback) => void;
|
||||
requested: (callback: IAPQueryCallback) => void;
|
||||
initiated: (callback: IAPQueryCallback) => void;
|
||||
finished: (callback: IAPQueryCallback) => void;
|
||||
verified: (callback: IAPQueryCallback) => void;
|
||||
unverified: (callback: IAPQueryCallback) => void;
|
||||
expired: (callback: IAPQueryCallback) => void;
|
||||
downloading: (product: IAPProduct, progress: any, time_remaining: any) => void;
|
||||
downloaded: (callback: IAPQueryCallback) => void;
|
||||
}
|
||||
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
export class IAPError {
|
||||
code: number;
|
||||
message: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name In App Purchase 2
|
||||
* @description
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* import { InAppPurchase2 } from '@ionic-native/in-app-purchase-2';
|
||||
*
|
||||
*
|
||||
* constructor(private inAppPurchase2: InAppPurchase2) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'InAppPurchase2',
|
||||
plugin: 'cc.fovea.cordova.purchase',
|
||||
pluginRef: 'store',
|
||||
repo: 'https://github.com/j3k0/cordova-plugin-purchase',
|
||||
platforms: ['iOS', 'Android', 'Windows'],
|
||||
install: 'ionic cordova plugin add cc.fovea.cordova.purchase --variable BILLING_KEY="<ANDROID_BILLING_KEY>"'
|
||||
})
|
||||
@Injectable()
|
||||
export class InAppPurchase2 extends IonicNativePlugin {
|
||||
|
||||
@CordovaProperty
|
||||
QUIET: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERROR: number;
|
||||
|
||||
@CordovaProperty
|
||||
WARNING: number;
|
||||
|
||||
@CordovaProperty
|
||||
INFO: number;
|
||||
|
||||
@CordovaProperty
|
||||
DEBUG: number;
|
||||
|
||||
/**
|
||||
* Debug level. Use QUIET, ERROR, WARNING, INFO or DEBUG constants
|
||||
*/
|
||||
@CordovaProperty
|
||||
verbosity: number;
|
||||
|
||||
/**
|
||||
* Set to true to invoke the platform purchase sandbox. (Windows only)
|
||||
*/
|
||||
@CordovaProperty
|
||||
sandbox: boolean;
|
||||
|
||||
@CordovaProperty
|
||||
FREE_SUBSCRIPTION: string;
|
||||
|
||||
@CordovaProperty
|
||||
PAID_SUBSCRIPTION: string;
|
||||
|
||||
@CordovaProperty
|
||||
NON_RENEWING_SUBSCRIPTION: string;
|
||||
|
||||
@CordovaProperty
|
||||
CONSUMABLE: string;
|
||||
|
||||
@CordovaProperty
|
||||
NON_CONSUMABLE: string;
|
||||
|
||||
|
||||
@CordovaProperty
|
||||
ERR_SETUP: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_LOAD: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_PURCHASE: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_LOAD_RECEIPTS: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_CLIENT_INVALID: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_PAYMENT_CANCELLED: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_PAYMENT_INVALID: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_PAYMENT_NOT_ALLOWED: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_UNKNOWN: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_REFRESH_RECEIPTS: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_INVALID_PRODUCT_ID: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_FINISH: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_COMMUNICATION: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_SUBSCRIPTIONS_NOT_AVAILABLE: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_MISSING_TOKEN: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_VERIFICATION_FAILED: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_BAD_RESPONSE: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_REFRESH: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_PAYMENT_EXPIRED: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_DOWNLOAD: number;
|
||||
|
||||
@CordovaProperty
|
||||
ERR_SUBSCRIPTION_UPDATE_NOT_AVAILABLE: number;
|
||||
|
||||
|
||||
@CordovaProperty
|
||||
REGISTERED: string;
|
||||
|
||||
@CordovaProperty
|
||||
INVALID: string;
|
||||
|
||||
@CordovaProperty
|
||||
VALID: string;
|
||||
|
||||
@CordovaProperty
|
||||
REQUESTED: string;
|
||||
|
||||
@CordovaProperty
|
||||
INITIATED: string;
|
||||
|
||||
@CordovaProperty
|
||||
APPROVED: string;
|
||||
|
||||
@CordovaProperty
|
||||
FINISHED: string;
|
||||
|
||||
@CordovaProperty
|
||||
OWNED: string;
|
||||
|
||||
@CordovaProperty
|
||||
DOWNLOADING: string;
|
||||
|
||||
@CordovaProperty
|
||||
DOWNLOADED: string;
|
||||
|
||||
|
||||
@CordovaProperty
|
||||
INVALID_PAYLOAD: number;
|
||||
|
||||
@CordovaProperty
|
||||
CONNECTION_FAILED: number;
|
||||
|
||||
@CordovaProperty
|
||||
PURCHASE_EXPIRED: number;
|
||||
|
||||
@CordovaProperty
|
||||
products: IAPProducts;
|
||||
|
||||
@CordovaProperty
|
||||
validator: string | ((product: string | IAPProduct, callback: Function) => void);
|
||||
|
||||
@CordovaProperty
|
||||
log: {
|
||||
error: (message: string) => void;
|
||||
warn: (message: string) => void;
|
||||
info: (message: string) => void;
|
||||
debug: (message: string) => void;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get product by id or alias
|
||||
* @param idOrAlias
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
get(idOrAlias: string): IAPProduct { return; }
|
||||
|
||||
/**
|
||||
* Register error handler
|
||||
* @param onError {Function} function to call on error
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
error(onError: Function): void {}
|
||||
|
||||
/**
|
||||
* Add or register a product
|
||||
* @param product {IAPProductOptions}
|
||||
*/
|
||||
@Cordova({ sync: true})
|
||||
register(product: IAPProductOptions): void {}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param query
|
||||
* @param event
|
||||
* @param callback
|
||||
* @return {IAPProductEvents}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
when(query: string | IAPProduct, event?: string, callback?: IAPQueryCallback): IAPProductEvents { return; }
|
||||
|
||||
/**
|
||||
* Identical to `when`, but the callback will be called only once. After being called, the callback will be unregistered.
|
||||
* @param query {string | IAPProduct}
|
||||
* @param [event] {event}
|
||||
* @param [callback] {IAPQueryCallback}
|
||||
* @return {IAPProductEvents}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
once(query: string | IAPProduct, event?: string, callback?: IAPQueryCallback): IAPProductEvents { return; }
|
||||
|
||||
/**
|
||||
* Unregister a callback. Works for callbacks registered with ready, when, once and error.
|
||||
* @param callback {Function}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
off(callback: Function): void {}
|
||||
|
||||
@Cordova({ sync: true })
|
||||
order(product: string | IAPProduct, additionalData?: any): { then: Function; error: Function; } { return; }
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {Promise<any>} returns a promise that resolves when the store is ready
|
||||
*/
|
||||
@Cordova()
|
||||
ready(): Promise<void> { return; }
|
||||
|
||||
@Cordova({ sync: true })
|
||||
refresh(): void {}
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user