mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2026-02-04 00:06:19 +08:00
Compare commits
948 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f84249b13 | ||
|
|
80adfe0891 | ||
|
|
0550a4fcc1 | ||
|
|
e50ef18e10 | ||
|
|
b581a5b2b6 | ||
|
|
e640983340 | ||
|
|
a6c8045593 | ||
|
|
ecc698ee7a | ||
|
|
b66d27b794 | ||
|
|
c3a9296a36 | ||
|
|
565c766813 | ||
|
|
1684202629 | ||
|
|
d95a359719 | ||
|
|
12ddf96705 | ||
|
|
fead657fbd | ||
|
|
f1d8d3b255 | ||
|
|
6af01d2dc1 | ||
|
|
006ba4425f | ||
|
|
4f415892b1 | ||
|
|
713efd7206 | ||
|
|
3f9311090d | ||
|
|
28a1b83d1d | ||
|
|
956e644fa4 | ||
|
|
f62a123a34 | ||
|
|
8e1ca359ab | ||
|
|
61714ff7ca | ||
|
|
9f9a3461f7 | ||
|
|
22ffb4914f | ||
|
|
3ed896960e | ||
|
|
249d62d4ba | ||
|
|
1d71bdc284 | ||
|
|
189d66cc47 | ||
|
|
fe5b7ce0af | ||
|
|
98d44e6294 | ||
|
|
8d571989d4 | ||
|
|
e61d574849 | ||
|
|
fdd63153e0 | ||
|
|
9dd4ecde9c | ||
|
|
dd9ba0ad3f | ||
|
|
9f662b6a04 | ||
|
|
1dc48e943c | ||
|
|
15a334d87a | ||
|
|
4d742438b4 | ||
|
|
1013a7d38a | ||
|
|
c574428e0e | ||
|
|
ce3591200e | ||
|
|
fc088f8431 | ||
|
|
392bc5c80a | ||
|
|
31fc892b70 | ||
|
|
5794d249c4 | ||
|
|
3f8a6f2425 | ||
|
|
dd769b0226 | ||
|
|
8460e6838a | ||
|
|
03e6afbad4 | ||
|
|
be370a4f99 | ||
|
|
bb9c581f42 | ||
|
|
d988e12353 | ||
|
|
df254de88b | ||
|
|
5803c069a3 | ||
|
|
dfbbfc7bd5 | ||
|
|
16980f1b6a | ||
|
|
3311d73730 | ||
|
|
a4cc7f7ae1 | ||
|
|
e6b02b1875 | ||
|
|
c03b73f69c | ||
|
|
05423ce299 | ||
|
|
34aeb19628 | ||
|
|
d6a9ed134e | ||
|
|
a0183811f6 | ||
|
|
e6d4b41e7e | ||
|
|
400dbcb1fb | ||
|
|
ae6e28de88 | ||
|
|
58615f1cab | ||
|
|
7c355350fe | ||
|
|
defb276b22 | ||
|
|
e6db28123d | ||
|
|
714114d1e0 | ||
|
|
37ef2fc93f | ||
|
|
41a4a43c0c | ||
|
|
5f41ef1cbc | ||
|
|
cea1dc14d3 | ||
|
|
49ad2118a3 | ||
|
|
bfe5ae9cf2 | ||
|
|
47f739777e | ||
|
|
a1c54f36b4 | ||
|
|
22d5d92dd3 | ||
|
|
3fa2eff580 | ||
|
|
567f525837 | ||
|
|
24cd0a91c4 | ||
|
|
50c8c154e3 | ||
|
|
1bfe82959b | ||
|
|
35e5cfe102 | ||
|
|
a1e6befbc0 | ||
|
|
234b6ffd44 | ||
|
|
5387bc985a | ||
|
|
8b1bb3ba17 | ||
|
|
a6450c6d07 | ||
|
|
d68a0373e8 | ||
|
|
8cd2da1c5b | ||
|
|
633e9d8e9a | ||
|
|
30f5b71f4a | ||
|
|
5dede9b536 | ||
|
|
8be98a0cc1 | ||
|
|
36450e13cf | ||
|
|
d4c98362d9 | ||
|
|
ec69a0cbac | ||
|
|
f49d2a964e | ||
|
|
91d22c5211 | ||
|
|
300db62731 | ||
|
|
23b760bb01 | ||
|
|
84e0aa1f94 | ||
|
|
1d9c449b24 | ||
|
|
a3c46216f6 | ||
|
|
1be1d5b577 | ||
|
|
eb760a5136 | ||
|
|
8f1854c180 | ||
|
|
5d1c8c225b | ||
|
|
237ea0d90d | ||
|
|
bee3d639cb | ||
|
|
1cc7243ef9 | ||
|
|
87f8505d93 | ||
|
|
7e0b9a488d | ||
|
|
3e9e578781 | ||
|
|
06094c2b53 | ||
|
|
d598bf3416 | ||
|
|
624f94f9f6 | ||
|
|
e70885ca2f | ||
|
|
095a6c5cf7 | ||
|
|
38e7e65557 | ||
|
|
4ab4aaf178 | ||
|
|
fc9add88dc | ||
|
|
9e744e7c29 | ||
|
|
a235b2493f | ||
|
|
48ccc4c24e | ||
|
|
18da591f03 | ||
|
|
bca7f38bbf | ||
|
|
7f24f89fc4 | ||
|
|
62241105c8 | ||
|
|
1e8626c435 | ||
|
|
7520a96cc6 | ||
|
|
0af33923a8 | ||
|
|
9b83615af6 | ||
|
|
7f274ba9a3 | ||
|
|
1e539f8cd9 | ||
|
|
87ba4b4d32 | ||
|
|
7ed6ab894b | ||
|
|
e095eecf5b | ||
|
|
502203936c | ||
|
|
7cbe7a6287 | ||
|
|
376d16904c | ||
|
|
7a6b8ac917 | ||
|
|
64cbb6181a | ||
|
|
c26735f366 | ||
|
|
2e07a7c04e | ||
|
|
3bfc95ed78 | ||
|
|
4be721b8f5 | ||
|
|
15c73e46d0 | ||
|
|
dd4d35d9e0 | ||
|
|
d8f030b67d | ||
|
|
3f82cfa527 | ||
|
|
348dbb85b3 | ||
|
|
2fda70a3c6 | ||
|
|
5648bfc70f | ||
|
|
1c03c3ff3c | ||
|
|
31c696d59d | ||
|
|
eb1bcdd078 | ||
|
|
f7b5e2f15f | ||
|
|
2628798064 | ||
|
|
b3082bf5ac | ||
|
|
e6f6158b43 | ||
|
|
548860b1ff | ||
|
|
9aff5eaa13 | ||
|
|
67cf61d2a8 | ||
|
|
707ca8ea3c | ||
|
|
4cb28c41c8 | ||
|
|
e828100a40 | ||
|
|
439960092e | ||
|
|
a81a4d3edf | ||
|
|
859cbfcfc6 | ||
|
|
4b4eb76352 | ||
|
|
bc7bdc60b7 | ||
|
|
35ad7f6387 | ||
|
|
399055b963 | ||
|
|
3a286b0243 | ||
|
|
830b0e0ef9 | ||
|
|
cdabebd487 | ||
|
|
a38381d06c | ||
|
|
44e0e2483a | ||
|
|
a1ad658d05 | ||
|
|
7362a41b55 | ||
|
|
b65946b1a8 | ||
|
|
7a5bee914f | ||
|
|
84c9bfbca3 | ||
|
|
6be38328b0 | ||
|
|
e27009e7b5 | ||
|
|
fa1cb407dd | ||
|
|
6314c28aa8 | ||
|
|
7f55a8f963 | ||
|
|
25f158629d | ||
|
|
5c81ff4875 | ||
|
|
f33eaed266 | ||
|
|
40807b8c8c | ||
|
|
17a3ac1b70 | ||
|
|
c8bce6fef9 | ||
|
|
e231bf8507 | ||
|
|
50ac4e711e | ||
|
|
22cb2e3f45 | ||
|
|
3d081b5f60 | ||
|
|
2ae2a683d2 | ||
|
|
6d68167530 | ||
|
|
3bd6135730 | ||
|
|
0aaec10a3e | ||
|
|
761ac4a328 | ||
|
|
ff4a61d0ec | ||
|
|
3c6122e503 | ||
|
|
84cecf7841 | ||
|
|
37833fe41d | ||
|
|
8a2637789f | ||
|
|
b05c9a4f8b | ||
|
|
e5034bf827 | ||
|
|
8b8ccfbdc3 | ||
|
|
c2a62cd3c8 | ||
|
|
4497e00670 | ||
|
|
0e68bd91f2 | ||
|
|
df7f629127 | ||
|
|
0b1e8f9b9d | ||
|
|
560d708002 | ||
|
|
f700bb3817 | ||
|
|
e5b9d53b17 | ||
|
|
bf88f6ee51 | ||
|
|
11a402626c | ||
|
|
e27fbf47bd | ||
|
|
f1bf2fa151 | ||
|
|
1bedb49152 | ||
|
|
4948640db2 | ||
|
|
6862389651 | ||
|
|
247a1a1d74 | ||
|
|
571df3a251 | ||
|
|
1113bbad57 | ||
|
|
c99524c5ec | ||
|
|
33789b2d39 | ||
|
|
67ea61a3cb | ||
|
|
ab04cfe1d5 | ||
|
|
500888e839 | ||
|
|
1c27474776 | ||
|
|
a345e2c6f1 | ||
|
|
8dc5ad2ee6 | ||
|
|
f7184325a7 | ||
|
|
586c7e505f | ||
|
|
7c6b117643 | ||
|
|
a3f63a61b9 | ||
|
|
b61c442fd2 | ||
|
|
2e0ea0f50e | ||
|
|
2e2c5fe82b | ||
|
|
9aa73da537 | ||
|
|
a6b9a9237a | ||
|
|
9816ca6650 | ||
|
|
82bc6d914d | ||
|
|
292545dc6d | ||
|
|
39017df2e3 | ||
|
|
3841219dd5 | ||
|
|
ead0de9907 | ||
|
|
00e42438aa | ||
|
|
54e8b90cdb | ||
|
|
b9a254aa2b | ||
|
|
9cabbd9c69 | ||
|
|
0325d09472 | ||
|
|
973888726d | ||
|
|
a0a540c768 | ||
|
|
5e40f3412a | ||
|
|
c55998c5b6 | ||
|
|
dfcc281e56 | ||
|
|
0fe5102801 | ||
|
|
c8361841f4 | ||
|
|
09e7afb3b4 | ||
|
|
3d9703bfe1 | ||
|
|
76dee252aa | ||
|
|
6c938bfdb7 | ||
|
|
21ad4734fa | ||
|
|
7547a94c80 | ||
|
|
f607a03c9b | ||
|
|
9ae9f19717 | ||
|
|
72d78ec729 | ||
|
|
f795b4f917 | ||
|
|
dc5b58144c | ||
|
|
241f0733ee | ||
|
|
9cc3d8fd74 | ||
|
|
e58eb6e6b1 | ||
|
|
91288266cd | ||
|
|
7a31768f3d | ||
|
|
1cf3d7da82 | ||
|
|
50ae6f0888 | ||
|
|
1bd0b591b4 | ||
|
|
4fb73ca224 | ||
|
|
11f4d208ad | ||
|
|
020eec26b9 | ||
|
|
73d6fa1998 | ||
|
|
a9674f0348 | ||
|
|
2536ef2009 | ||
|
|
6066f9f8ad | ||
|
|
c421d43155 | ||
|
|
6fe3a5f90a | ||
|
|
d1d7404a09 | ||
|
|
c774466e62 | ||
|
|
b8e101de5a | ||
|
|
f3f83de008 | ||
|
|
a456738d15 | ||
|
|
428b36e948 | ||
|
|
57696a9ade | ||
|
|
91f66decab | ||
|
|
d3dece4c52 | ||
|
|
a8415dab39 | ||
|
|
658bb75b42 | ||
|
|
6dcebd03ef | ||
|
|
c4eed9f362 | ||
|
|
be02f835bc | ||
|
|
8d2681a9fc | ||
|
|
7cafebd0e8 | ||
|
|
d2261b6432 | ||
|
|
03c219936c | ||
|
|
a393e5c55d | ||
|
|
ac303d6f7f | ||
|
|
13765d2d6a | ||
|
|
5f88ff02f2 | ||
|
|
447f00a202 | ||
|
|
e345fed09f | ||
|
|
957f278738 | ||
|
|
11d516fb28 | ||
|
|
1546cec694 | ||
|
|
7961768803 | ||
|
|
7e1630f5e5 | ||
|
|
0f325ed772 | ||
|
|
2a18dbcf3e | ||
|
|
bd72bbc87f | ||
|
|
e44229471e | ||
|
|
b616e0f0bf | ||
|
|
50f40bc46b | ||
|
|
679ad2cefc | ||
|
|
270678fb55 | ||
|
|
504838556e | ||
|
|
1e0d5ce30d | ||
|
|
fc0338a1c5 | ||
|
|
1b237aa996 | ||
|
|
ff0008e7eb | ||
|
|
4bf55d3b1a | ||
|
|
bebc5c2a50 | ||
|
|
6d07cf1a84 | ||
|
|
95822aeac2 | ||
|
|
ec14e179c6 | ||
|
|
15bb350d8e | ||
|
|
e612c5fcc3 | ||
|
|
ee3a0c7c6a | ||
|
|
42fd1f2400 | ||
|
|
7e0300a75f | ||
|
|
2e711b94bb | ||
|
|
5fe579b2f3 | ||
|
|
af75b49aa4 | ||
|
|
1932f2dd66 | ||
|
|
8ece08379c | ||
|
|
f11be24f74 | ||
|
|
8b829101ff | ||
|
|
97d5d10c71 | ||
|
|
41e5a0f7fe | ||
|
|
19c0b5812d | ||
|
|
ee42cd3471 | ||
|
|
714bc46342 | ||
|
|
7be82a40b5 | ||
|
|
d50639fc55 | ||
|
|
84a8dbc9d2 | ||
|
|
f8e79cec5f | ||
|
|
7db5492816 | ||
|
|
04bdadedd8 | ||
|
|
61c0ecfa4f | ||
|
|
4b9cf17cbb | ||
|
|
76a644d122 | ||
|
|
954bd876de | ||
|
|
f419db5d80 | ||
|
|
c8ecee01d6 | ||
|
|
eaa87fae9b | ||
|
|
d0adae55cb | ||
|
|
61293c33cc | ||
|
|
e4dd8dcb89 | ||
|
|
e7968da7f4 | ||
|
|
6e58192630 | ||
|
|
288d6ed894 | ||
|
|
03fc978db2 | ||
|
|
4fc97037ac | ||
|
|
dbcb103adc | ||
|
|
a413cf02e4 | ||
|
|
9ebd92ecb9 | ||
|
|
8e9907dc53 | ||
|
|
9990df8953 | ||
|
|
98db2e710c | ||
|
|
23578de056 | ||
|
|
60d32be095 | ||
|
|
a82b2903d6 | ||
|
|
aa54444e33 | ||
|
|
292a9c3722 | ||
|
|
eb6aee2d69 | ||
|
|
e77bce67db | ||
|
|
ecc46bacf1 | ||
|
|
d256916621 | ||
|
|
5e77ed9317 | ||
|
|
6f7cdf6214 | ||
|
|
ac0015b91d | ||
|
|
35f6c15ad4 | ||
|
|
f43a657fdd | ||
|
|
c0c044bf89 | ||
|
|
8179805ad9 | ||
|
|
bfe9fadf5a | ||
|
|
2714bcae7e | ||
|
|
c309a3027f | ||
|
|
2da568616d | ||
|
|
adf10a301e | ||
|
|
e480d296fe | ||
|
|
995fd56894 | ||
|
|
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 | ||
|
|
e9580b46ef | ||
|
|
bfbbc2ee12 | ||
|
|
ba105be55f | ||
|
|
92d26eab94 | ||
|
|
ce6e412788 | ||
|
|
7243ed3960 | ||
|
|
264670211d | ||
|
|
847147a5fa | ||
|
|
4639bf9a94 | ||
|
|
abb77e3e08 | ||
|
|
975f08b7b5 | ||
|
|
773722b767 | ||
|
|
447aa56e3c | ||
|
|
8d22798278 | ||
|
|
30297fb81d | ||
|
|
ac777fca40 | ||
|
|
43b70a12b5 | ||
|
|
2c5aed9619 | ||
|
|
38eaeffe7e | ||
|
|
0daab8c31d | ||
|
|
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 | ||
|
|
3cb83831c1 | ||
|
|
ca7659378f | ||
|
|
4333bc950d | ||
|
|
ee4b61e405 | ||
|
|
975a65d619 | ||
|
|
d68618f878 | ||
|
|
e5aff0f5f0 | ||
|
|
e596825ee9 | ||
|
|
991f2f04d4 | ||
|
|
ecdff8c0e5 | ||
|
|
55071c0d65 | ||
|
|
7d63e808ad | ||
|
|
84551cac67 | ||
|
|
92ef4f0c33 | ||
|
|
d8eb621da4 | ||
|
|
6534283a6f | ||
|
|
f223481307 | ||
|
|
5145395dd7 | ||
|
|
dfd0514a43 | ||
|
|
d5919d1736 | ||
|
|
71f7051997 | ||
|
|
2858b4bad7 | ||
|
|
4c8deb2bed | ||
|
|
277b2b15e6 | ||
|
|
ebf402864b | ||
|
|
6b702973ec | ||
|
|
7d4e8acce8 | ||
|
|
31983d8317 | ||
|
|
8c842b00b6 | ||
|
|
c6feaafcca | ||
|
|
a7f7b26a76 | ||
|
|
d0dec7a17d | ||
|
|
7487293d33 | ||
|
|
4f6ec0cfcd | ||
|
|
b35417a017 | ||
|
|
adf9c5a323 | ||
|
|
7c797123f5 | ||
|
|
bd1794d7f5 | ||
|
|
46502cb864 | ||
|
|
02cc615c21 | ||
|
|
749fd8af43 | ||
|
|
e2acde5332 | ||
|
|
5203d026d4 | ||
|
|
362ae4422b | ||
|
|
965a90c52c | ||
|
|
a28de660bc | ||
|
|
fec19b734c | ||
|
|
6773ed341c | ||
|
|
23ad074d04 | ||
|
|
912668d8f8 | ||
|
|
cf531af244 | ||
|
|
a94651dc75 | ||
|
|
ad0680bd90 | ||
|
|
66a82dd5ce | ||
|
|
8ea8ac40e5 | ||
|
|
2d477ba9a0 | ||
|
|
f98f90a9a3 | ||
|
|
fba0ce2bb6 | ||
|
|
22d0260cde | ||
|
|
25aeb406ae | ||
|
|
385da017a0 | ||
|
|
efae1be116 | ||
|
|
7f919d5c90 | ||
|
|
00c156811f | ||
|
|
8512dd5d92 | ||
|
|
ad514bbf63 | ||
|
|
45108c4c18 | ||
|
|
17e166d04d | ||
|
|
dea9f42d5f | ||
|
|
e193baf1c1 | ||
|
|
10d61c21c2 | ||
|
|
7e322aadb8 | ||
|
|
4bd4f7fa84 | ||
|
|
89708781bf | ||
|
|
cf8d2e7f02 | ||
|
|
54b6659469 | ||
|
|
36d603bdd7 | ||
|
|
15cf751441 | ||
|
|
252c3e4a21 | ||
|
|
958380275c | ||
|
|
e35408adca | ||
|
|
c7400b1ab1 | ||
|
|
4e9b2d917b | ||
|
|
e04b7a4a24 | ||
|
|
46b4e25f7b | ||
|
|
12356d2d34 | ||
|
|
de320ac21c | ||
|
|
3d747d38b2 | ||
|
|
1379f6389a | ||
|
|
6855fe8f7d | ||
|
|
142525e133 | ||
|
|
af66a0dbec | ||
|
|
235f51a351 | ||
|
|
8fe4eecbb1 | ||
|
|
14959c1162 | ||
|
|
e84359b2b1 | ||
|
|
88f393288d | ||
|
|
eb30ad2fec | ||
|
|
ec85792a10 | ||
|
|
ce2cc1b815 | ||
|
|
5ee79b4672 | ||
|
|
ce72be76bc | ||
|
|
f96505f533 | ||
|
|
f6835dc9b8 | ||
|
|
302fa48e7c | ||
|
|
ed6044d4e8 | ||
|
|
aa9826f657 | ||
|
|
d25b2f16a9 | ||
|
|
14f38a0e28 | ||
|
|
c7111a3117 | ||
|
|
65a8095e5f | ||
|
|
70c9558d2b | ||
|
|
a5b2e981b3 | ||
|
|
21c9cd2e57 | ||
|
|
e35501d3e5 | ||
|
|
e6a647b08b | ||
|
|
a4151abebf | ||
|
|
6cc6393712 | ||
|
|
8330c92921 | ||
|
|
80af55100e | ||
|
|
8311aaf893 | ||
|
|
b2d07b43cc | ||
|
|
134eab2dcc | ||
|
|
aeea03478b | ||
|
|
4db902b9dd | ||
|
|
94bd82097c | ||
|
|
8a445e9a31 | ||
|
|
78e19e5f5b | ||
|
|
7738622976 | ||
|
|
d9cc959939 | ||
|
|
4835182ad5 | ||
|
|
49ac21145a | ||
|
|
8a81ee08e3 | ||
|
|
bf88b78c63 | ||
|
|
c600cd622e | ||
|
|
14a1cb9ee7 | ||
|
|
92468c9b84 | ||
|
|
6e2fdf98a2 | ||
|
|
84cd81dcaf | ||
|
|
c6f9fa356f | ||
|
|
a7c9abc449 | ||
|
|
748c6bd9be | ||
|
|
1a682bc3de | ||
|
|
58ad707dc3 | ||
|
|
36d101af02 | ||
|
|
8e65474c1d | ||
|
|
11dbe42a0d | ||
|
|
1123299274 | ||
|
|
4ca4f9443d | ||
|
|
83a3569155 | ||
|
|
f699c6d4b7 | ||
|
|
dd69810494 | ||
|
|
822be1c248 | ||
|
|
1d29ed38f6 | ||
|
|
bcb3c61fe0 |
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.
|
||||
|
||||
28
.github/ISSUE_TEMPLATE.md
vendored
Normal file
28
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
**I'm submitting a ...** (check one with "x")
|
||||
[ ] bug report
|
||||
[ ] feature request
|
||||
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or https://ionicworldwide.herokuapp.com/
|
||||
|
||||
**Current behavior:**
|
||||
<!-- Describe how the bug manifests. -->
|
||||
|
||||
**Expected behavior:**
|
||||
<!-- Describe what the behavior would be without the bug. -->
|
||||
|
||||
**Steps to reproduce:**
|
||||
<!-- If you are able to illustrate the bug or feature request with an example, please provide steps to reproduce. -->
|
||||
|
||||
**Related code:**
|
||||
|
||||
```
|
||||
insert any relevant code here
|
||||
```
|
||||
|
||||
**Other information:**
|
||||
<!-- List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to fix, Stack Overflow links, forum links, etc. -->
|
||||
|
||||
**Ionic info:** (run `ionic info` from a terminal/cmd prompt and paste output below):
|
||||
|
||||
```
|
||||
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/
|
||||
|
||||
1852
CHANGELOG.md
1852
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
11
CODE_OF_CONDUCT.md
Normal file
11
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Contributor Code of Conduct
|
||||
|
||||
As contributors and maintainers of the Ionic project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities.
|
||||
|
||||
Communication through any of Ionic's channels (GitHub, Slack, Forum, IRC, mailing lists, Twitter, etc.) must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
|
||||
|
||||
We promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the Ionic project to do the same.
|
||||
|
||||
If any member of the community violates this code of conduct, the maintainers of the Ionic project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate.
|
||||
|
||||
If you are subject to or witness unacceptable behavior, or have any other concerns, please email us at [hi@ionicframework.com](mailto:hi@ionicframework.com).
|
||||
17
DEVELOPER.md
17
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.
|
||||
|
||||
@@ -115,11 +115,11 @@ You need to run `npm run build` in the `ionic-native` project, this will create
|
||||
|
||||
### Cleaning the code
|
||||
|
||||
You need to run `npm run lint` to analyze the code and ensure it's consistency with the repository style. Fix any errors before submitting a PR.
|
||||
You need to run `npm run lint` to analyze the code and ensure its consistency with the repository style. Fix any errors before submitting a PR.
|
||||
|
||||
### 'Wrapping' Up
|
||||
|
||||
That's it! The only thing left to do is rigorously document the plugin and it's usage. Take a look at some of the other plugins for good documentation styles.
|
||||
That's it! The only thing left to do is rigorously document the plugin and its usage. Take a look at some of the other plugins for good documentation styles.
|
||||
|
||||
## Commit Message Format
|
||||
|
||||
@@ -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; }
|
||||
```
|
||||
|
||||
80
README.md
80
README.md
@@ -1,24 +1,24 @@
|
||||
[](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
|
||||
|
||||
Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic 2](http://ionicframework.com/) mobile app easy.
|
||||
Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](https://ionicframework.com/) mobile app easy.
|
||||
|
||||
Ionic Native wraps plugin callbacks in a Promise or Observable, providing a common interface for all plugins and making it easy to use plugins with Angular change detection.
|
||||
|
||||
## Installation
|
||||
|
||||
Run following command to install Ionic Native in your project.
|
||||
```
|
||||
```bash
|
||||
npm install @ionic-native/core --save
|
||||
```
|
||||
|
||||
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](http://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
|
||||
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](https://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
|
||||
|
||||
## Documentation
|
||||
|
||||
For the full Ionic Native documentation, please visit [http://ionicframework.com/docs/native/](http://ionicframework.com/docs/native/).
|
||||
For the full Ionic Native documentation, please visit [https://ionicframework.com/docs/native/](https://ionicframework.com/docs/native/).
|
||||
|
||||
### Basic Usage
|
||||
|
||||
@@ -47,43 +47,30 @@ export class AppModule { }
|
||||
import { Geolocation } from '@ionic-native/geolocation';
|
||||
import { Platform } from 'ionic-angular';
|
||||
|
||||
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(() => {
|
||||
this.platform.ready().then(() => {
|
||||
|
||||
// get position
|
||||
geolocation.getCurrentPosition().then(pos => {
|
||||
|
||||
this.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;
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
// to stop watching
|
||||
watch.unsubscribe();
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
@@ -95,13 +82,13 @@ To do this, you need to provide a mock implementation of the plugins you wish to
|
||||
|
||||
First import the `Camera` class in your `src/app/app.module.ts` file:
|
||||
|
||||
```ts
|
||||
```typescript
|
||||
import { Camera } from '@ionic-native/camera';
|
||||
```
|
||||
|
||||
Then create a new class that extends the `Camera` class with a mock implementation:
|
||||
|
||||
```ts
|
||||
```typescript
|
||||
class CameraMock extends Camera {
|
||||
getPicture(options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -113,7 +100,7 @@ class CameraMock extends Camera {
|
||||
|
||||
Finally, override the previous `Camera` class in your `providers` for this module:
|
||||
|
||||
```ts
|
||||
```typescript
|
||||
providers: [
|
||||
{ provide: Camera, useClass: CameraMock }
|
||||
]
|
||||
@@ -121,41 +108,44 @@ providers: [
|
||||
|
||||
Here's the full example:
|
||||
|
||||
```ts
|
||||
import { NgModule, ErrorHandler } from '@angular/core';
|
||||
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
|
||||
import { MyApp } from './app.component';
|
||||
import { HomePage } from '../pages/home/home';
|
||||
|
||||
```typescript
|
||||
import { ErrorHandler, NgModule } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { Camera } from '@ionic-native/camera';
|
||||
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
|
||||
|
||||
import { HomePage } from '../pages/home/home';
|
||||
import { MyApp } from './app.component';
|
||||
|
||||
class CameraMock extends Camera {
|
||||
getPicture(options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
resolve("BASE_64_ENCODED_DATA_GOES_HERE");
|
||||
})
|
||||
resolve('BASE_64_ENCODED_DATA_GOES_HERE');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
MyApp,
|
||||
MyApp,
|
||||
HomePage
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
IonicModule.forRoot(MyApp)
|
||||
],
|
||||
bootstrap: [IonicApp],
|
||||
entryComponents: [
|
||||
MyApp,
|
||||
MyApp,
|
||||
HomePage
|
||||
],
|
||||
providers: [
|
||||
{provide: ErrorHandler, useClass: IonicErrorHandler},
|
||||
{ provide: ErrorHandler, useClass: IonicErrorHandler },
|
||||
{ provide: Camera, useClass: CameraMock }
|
||||
]
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
```
|
||||
|
||||
|
||||
@@ -163,24 +153,26 @@ export class AppModule {}
|
||||
|
||||
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Ionic Native lets you know what the issue is and how you can resolve it.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 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 1/Angular 1 support
|
||||
## Ionic v1 (AngularJS, Angular 1.x) support
|
||||
|
||||
Ionic Native 3.x supports Ionic 2.x and above. For Ionic/Angular 1 support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/driftyco/ionic-native/blob/8cd648db5cddd7bdbe2bd78839b19c620cc8c04c/README.md) for usage information.
|
||||
For Ionic v1 (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
|
||||
|
||||
Ibby Hadeed - [@ihadeed](http://github.com/ihadeed)
|
||||
Ibby Hadeed - [@ihadeed](https://github.com/ihadeed)
|
||||
|
||||
Tim Lancina - [@timlancina](http://twitter.com/timlancina)
|
||||
Daniel Sogl - [@sogldaniel](https://twitter.com/sogldaniel)
|
||||
|
||||
Tim Lancina - [@timlancina](https://twitter.com/timlancina)
|
||||
|
||||
Mike Hartington - [@mhartington](https://twitter.com/mhartington)
|
||||
|
||||
Max Lynch - [@maxlynch](http://twitter.com/maxlynch)
|
||||
Max Lynch - [@maxlynch](https://twitter.com/maxlynch)
|
||||
|
||||
Rob Wormald - [@robwormald](https://twitter.com/robwormald)
|
||||
|
||||
21
circle.yml
21
circle.yml
@@ -3,16 +3,19 @@ jobs:
|
||||
build:
|
||||
working_directory: ~/ionic-native/
|
||||
docker:
|
||||
- image: node:7
|
||||
- image: node:8
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: ionic-site
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
- run:
|
||||
name: Prepare ionic-site repo
|
||||
command: ./scripts/docs/prepare.sh
|
||||
command: |
|
||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||
./scripts/docs/prepare.sh
|
||||
fi
|
||||
- save_cache:
|
||||
key: ionic-site
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
paths:
|
||||
- ~/ionic-site/
|
||||
- restore_cache:
|
||||
@@ -27,6 +30,16 @@ jobs:
|
||||
- run:
|
||||
name: Run tslint
|
||||
command: npm run lint
|
||||
- run: bash ./scripts/git/config.sh
|
||||
- run:
|
||||
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
|
||||
- add_ssh_keys
|
||||
- deploy:
|
||||
name: Update docs
|
||||
|
||||
13
gulpfile.js
13
gulpfile.js
@@ -4,7 +4,6 @@ const gulp = require('gulp'),
|
||||
minimist = require('minimist'),
|
||||
rename = require("gulp-rename"),
|
||||
tslint = require('gulp-tslint'),
|
||||
decamelize = require('decamelize'),
|
||||
replace = require('gulp-replace'),
|
||||
_ = require('lodash');
|
||||
|
||||
@@ -34,14 +33,16 @@ gulp.task('plugin:create', () => {
|
||||
|
||||
const src = flags.m ? './scripts/templates/wrap-min.tmpl':'./scripts/templates/wrap.tmpl',
|
||||
pluginName = flags.n,
|
||||
pluginNameSpaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1');
|
||||
spaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1'),
|
||||
kebabCase = _.kebabCase(pluginName);
|
||||
|
||||
return gulp.src(src)
|
||||
.pipe(replace('$PluginName', pluginName))
|
||||
.pipe(replace('$Plugin_Name', pluginNameSpaced))
|
||||
.pipe(replace('$pluginName', _.lowerFirst(pluginName)))
|
||||
.pipe(replace('{{ PluginName }}', pluginName))
|
||||
.pipe(replace('{{ Plugin_Name }}', spaced))
|
||||
.pipe(replace('{{ pluginName }}', _.lowerFirst(pluginName)))
|
||||
.pipe(replace('{{ plugin-name }}', kebabCase))
|
||||
.pipe(rename('index.ts'))
|
||||
.pipe(gulp.dest('./src/@ionic-native/plugins/' + _.kebabCase(pluginName)));
|
||||
.pipe(gulp.dest('./src/@ionic-native/plugins/' + kebabCase));
|
||||
|
||||
} else {
|
||||
console.log("Usage is: gulp plugin:create -n PluginName");
|
||||
|
||||
55
karma.conf.js
Normal file
55
karma.conf.js
Normal file
@@ -0,0 +1,55 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = config => {
|
||||
|
||||
const conf = {
|
||||
frameworks: [
|
||||
'jasmine',
|
||||
'karma-typescript'
|
||||
],
|
||||
|
||||
plugins: [
|
||||
'karma-typescript',
|
||||
'karma-jasmine',
|
||||
'karma-phantomjs-launcher'
|
||||
],
|
||||
|
||||
preprocessors: {
|
||||
'src/**/*.ts': ['karma-typescript']
|
||||
},
|
||||
|
||||
karmaTypescriptConfig: {
|
||||
bundlerOptions: {
|
||||
entrypoints: /\.spec\.ts$/,
|
||||
transforms: [
|
||||
require("karma-typescript-es6-transform")()
|
||||
]
|
||||
},
|
||||
compilerOptions: {
|
||||
lib: ['es2015', 'dom'],
|
||||
paths: {
|
||||
"@ionic-native/core": ["./src/@ionic-native/core"]
|
||||
},
|
||||
baseUrl: '.'
|
||||
}
|
||||
},
|
||||
|
||||
files: [
|
||||
{ pattern: 'src/**/*.ts', included: true, watched: true }
|
||||
],
|
||||
|
||||
reporters: ['progress'],
|
||||
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.INFO,
|
||||
autoWatch: true,
|
||||
browsers: [
|
||||
'PhantomJS'
|
||||
],
|
||||
singleRun: false
|
||||
};
|
||||
|
||||
config.set(conf);
|
||||
|
||||
};
|
||||
8107
package-lock.json
generated
Normal file
8107
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
55
package.json
55
package.json
@@ -1,18 +1,22 @@
|
||||
{
|
||||
"name": "ionic-native",
|
||||
"version": "3.6.0",
|
||||
"version": "4.10.0",
|
||||
"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.0.0",
|
||||
"@angular/compiler-cli": "4.0.0",
|
||||
"@angular/core": "4.0.0",
|
||||
"@angular/compiler": "4.4.4",
|
||||
"@angular/compiler-cli": "4.4.4",
|
||||
"@angular/core": "4.4.4",
|
||||
"@types/cordova": "0.0.34",
|
||||
"@types/jasmine": "^2.8.8",
|
||||
"@types/node": "^8.10.20",
|
||||
"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",
|
||||
"decamelize": "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",
|
||||
"dgeni": "0.4.7",
|
||||
"dgeni-packages": "0.16.10",
|
||||
"fs-extra": "2.0.0",
|
||||
@@ -21,18 +25,25 @@
|
||||
"gulp-rename": "1.2.2",
|
||||
"gulp-replace": "0.5.4",
|
||||
"gulp-tslint": "6.1.2",
|
||||
"jasmine-core": "^2.99.1",
|
||||
"karma": "^1.7.0",
|
||||
"karma-cli": "^1.0.1",
|
||||
"karma-jasmine": "^1.1.2",
|
||||
"karma-phantomjs-launcher": "^1.0.4",
|
||||
"karma-typescript": "^3.0.12",
|
||||
"karma-typescript-es6-transform": "^1.0.4",
|
||||
"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.11",
|
||||
"semver": "5.3.0",
|
||||
"tslint": "3.15.1",
|
||||
"tslint-ionic-rules": "0.0.7",
|
||||
"typescript": "2.2.1",
|
||||
"zone.js": "^0.8.4"
|
||||
"tslint-ionic-rules": "0.0.8",
|
||||
"typescript": "~2.4.2",
|
||||
"zone.js": "^0.8.26"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "npm run test:watch",
|
||||
@@ -44,7 +55,17 @@
|
||||
"shipit": "npm run build && gulp readmes && npm run npmpub",
|
||||
"npmpub": "node scripts/build/publish.js",
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
|
||||
"postchangelog": "git commit -am \"chore(): update changelog\""
|
||||
"postchangelog": "git commit -am \"chore(): update changelog\"",
|
||||
"test": "karma start karma.conf.js --single-run",
|
||||
"test:watch": "karma start karma.conf.js",
|
||||
"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.1.0',
|
||||
MIN_CORE_VERSION = '^4.2.0',
|
||||
IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
|
||||
|
||||
// package dependencies
|
||||
@@ -52,6 +52,16 @@ const PLUGINS = fs.readdirSync(PLUGINS_PATH);
|
||||
|
||||
// Build specific list of plugins to build from arguments, if any
|
||||
let pluginsToBuild = process.argv.slice(2);
|
||||
let ignoreErrors = false;
|
||||
let errors = [];
|
||||
|
||||
const index = pluginsToBuild.indexOf('ignore-errors');
|
||||
if (index > -1) {
|
||||
ignoreErrors = true;
|
||||
pluginsToBuild.splice(index, 1);
|
||||
console.log('Build will continue even if errors were thrown. Errors will be printed when build finishes.');
|
||||
}
|
||||
|
||||
if (!pluginsToBuild.length) {
|
||||
pluginsToBuild = PLUGINS;
|
||||
}
|
||||
@@ -102,10 +112,16 @@ const addPluginToQueue = pluginName => {
|
||||
exec(`${ROOT}/node_modules/.bin/ngc -p ${tsConfigPath}`, (err, stdout, stderr) => {
|
||||
|
||||
if (err) {
|
||||
// oops! something went wrong.
|
||||
callback(`\n\nBuilding ${pluginName} failed.`);
|
||||
console.log(err);
|
||||
return;
|
||||
|
||||
if (!ignoreErrors) {
|
||||
// oops! something went wrong.
|
||||
console.log(err);
|
||||
callback(`\n\nBuilding ${pluginName} failed.`);
|
||||
return;
|
||||
} else {
|
||||
errors.push(err);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// we're done with this plugin!
|
||||
@@ -125,7 +141,17 @@ pluginsToBuild.forEach(addPluginToQueue);
|
||||
QUEUE.start((err) => {
|
||||
|
||||
if (err) {
|
||||
console.log('Error building plugins. ', err);
|
||||
console.log('Error building plugins.');
|
||||
console.log(err);
|
||||
process.stderr.write(err);
|
||||
process.exit(1);
|
||||
} else if (errors.length) {
|
||||
errors.forEach(e => {
|
||||
console.log(e.message) && console.log('\n');
|
||||
process.stderr.write(err);
|
||||
});
|
||||
console.log('Build complete with errors');
|
||||
process.exit(1);
|
||||
} else {
|
||||
console.log('Done processing plugins!');
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
"skipLibCheck": true,
|
||||
"lib": ["es2015", "dom"],
|
||||
"sourceMap": true,
|
||||
"inlineSources": true
|
||||
"inlineSources": true,
|
||||
"noImplicitAny": true
|
||||
},
|
||||
"files": [
|
||||
"../../src/@ionic-native/core/index.ts"
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
"skipLibCheck": true,
|
||||
"lib": ["es2015", "dom"],
|
||||
"sourceMap": true,
|
||||
"inlineSources": true
|
||||
"inlineSources": true,
|
||||
"noImplicitAny": true
|
||||
},
|
||||
"files": []
|
||||
}
|
||||
|
||||
65
scripts/ci-tests.js
Normal file
65
scripts/ci-tests.js
Normal file
@@ -0,0 +1,65 @@
|
||||
const exec = require('child-process-promise').exec;
|
||||
let diff;
|
||||
exec(`git branch | grep \\* | cut -d ' ' -f2`)
|
||||
.then(output => {
|
||||
if (output.stderr) {
|
||||
return Promise.reject(output.stderr);
|
||||
}
|
||||
|
||||
const branch = output.stdout.trim();
|
||||
|
||||
if (branch !== 'master') {
|
||||
|
||||
console.log('Merging master branch in ...');
|
||||
// not on master branch
|
||||
// let's test the changes that were made
|
||||
return exec(`git merge origin master`);
|
||||
}
|
||||
})
|
||||
.then((output) => {
|
||||
if (output && output.stderr) {
|
||||
return Promise.reject(output.stderr);
|
||||
}
|
||||
console.log('Checking for differences ...');
|
||||
return exec(`git diff --name-status origin master`)
|
||||
})
|
||||
.then((output) => {
|
||||
if (output && output.stderr) {
|
||||
return Promise.reject(output.stderr);
|
||||
}
|
||||
|
||||
diff = output.stdout;
|
||||
diff = diff.replace(/A\s+/g, '');
|
||||
diff = diff.match(/src\/@ionic-native\/plugins\/([a-zA-Z0-9\-]+)\/index\.ts/g);
|
||||
|
||||
if (!diff) process.exit();
|
||||
|
||||
console.log(`${ diff.length } plugins were modified. We will now build them to verify they still work.`);
|
||||
|
||||
return exec('npm run build:core --silent');
|
||||
})
|
||||
.then((output) => {
|
||||
|
||||
if (output && output.stderr) {
|
||||
return Promise.reject(output.stderr);
|
||||
}
|
||||
|
||||
console.log('Built core library successfully ...');
|
||||
console.log('Building plugins ...');
|
||||
|
||||
diff = diff.map(text => text.replace('src/@ionic-native/plugins/', '').replace('/index.ts', ''));
|
||||
|
||||
return exec(`npm run build:modules ${diff.join(' ')} --silent`);
|
||||
})
|
||||
.then((output) => {
|
||||
if (output && output.stderr) {
|
||||
console.log(output.stderr);
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(output.stdout);
|
||||
process.exit();
|
||||
})
|
||||
.catch(e => {
|
||||
console.log(e.message || e);
|
||||
process.exit(1);
|
||||
});
|
||||
@@ -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')
|
||||
}];
|
||||
|
||||
})
|
||||
|
||||
@@ -10,6 +10,12 @@ module.exports = function jekyll(renderDocsProcessor) {
|
||||
// pretty up and sort the docs object for menu generation
|
||||
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
|
||||
|
||||
docs.push({
|
||||
docType: 'class',
|
||||
URL: 'https://github.com/ionic-team/ionic-native-google-maps/blob/master/documents/README.md',
|
||||
name: 'Google Maps',
|
||||
});
|
||||
|
||||
docs.sort((a, b) => {
|
||||
const textA = a.name ? a.name.toUpperCase() : '',
|
||||
textB = b.name ? b.name.toUpperCase() : '';
|
||||
@@ -18,12 +24,34 @@ module.exports = function jekyll(renderDocsProcessor) {
|
||||
});
|
||||
|
||||
docs.forEach(doc => {
|
||||
if (!doc.outputPath) {
|
||||
return;
|
||||
}
|
||||
|
||||
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
|
||||
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 + '/';
|
||||
}
|
||||
|
||||
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 plugin add --save <$ 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 @>
|
||||
|
||||
4
scripts/docs/templates/readme.template.md
vendored
4
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>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<@ for prop in doc.decorators[0].argumentInfo @>
|
||||
|
||||
```
|
||||
$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plugin $><@ endif @>
|
||||
$ <@ if prop.install @><$ prop.install $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
|
||||
$ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
```
|
||||
|
||||
|
||||
@@ -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,30 +1,60 @@
|
||||
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
|
||||
* - 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
|
||||
* @name {{ Plugin_Name }}
|
||||
* @description
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* import { $PluginName } from 'ionic-native';
|
||||
* ```typescript
|
||||
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
|
||||
*
|
||||
*
|
||||
* constructor(private $pluginName: $PluginName) { }
|
||||
* constructor(private {{ pluginName }}: {{ PluginName }}) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.{{ pluginName }}.functionName('Hello', 123)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: '$PluginName',
|
||||
plugin: '',
|
||||
pluginRef: '',
|
||||
repo: '',
|
||||
platforms: []
|
||||
pluginName: '{{ PluginName }}',
|
||||
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 {
|
||||
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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,46 +5,46 @@
|
||||
* - 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 { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
/**
|
||||
* @name $Plugin_Name
|
||||
* @name {{ Plugin_Name }}
|
||||
* @description
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* import { $PluginName } from 'ionic-native';
|
||||
* ```typescript
|
||||
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
|
||||
*
|
||||
*
|
||||
* constructor(private $pluginName: $PluginName) { }
|
||||
* constructor(private {{ pluginName }}: {{ PluginName }}) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.$pluginName.functionName('Hello', 123)
|
||||
* this.{{ pluginName }}.functionName('Hello', 123)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: '$PluginName',
|
||||
pluginName: '{{ PluginName }}',
|
||||
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 {
|
||||
export class {{ PluginName }} extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* This function does something
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
declare var window;
|
||||
|
||||
export function checkReady() {
|
||||
const DEVICE_READY_TIMEOUT = 5000;
|
||||
|
||||
@@ -11,13 +9,17 @@ export function checkReady() {
|
||||
|
||||
let didFireReady = false;
|
||||
document.addEventListener('deviceready', () => {
|
||||
console.log(`Ionic Native: deviceready event fired after ${(Date.now() - before)} ms`);
|
||||
console.log(
|
||||
`Ionic Native: deviceready event fired after ${Date.now() - before} ms`
|
||||
);
|
||||
didFireReady = true;
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
if (!didFireReady && window.cordova) {
|
||||
console.warn(`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`);
|
||||
if (!didFireReady && !!window.cordova) {
|
||||
console.warn(
|
||||
`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`
|
||||
);
|
||||
}
|
||||
}, DEVICE_READY_TIMEOUT);
|
||||
}
|
||||
|
||||
258
src/@ionic-native/core/decorators.spec.ts
Normal file
258
src/@ionic-native/core/decorators.spec.ts
Normal file
@@ -0,0 +1,258 @@
|
||||
import 'core-js';
|
||||
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
import {
|
||||
Cordova,
|
||||
CordovaCheck,
|
||||
CordovaInstance,
|
||||
CordovaProperty,
|
||||
InstanceProperty,
|
||||
Plugin
|
||||
} from './decorators';
|
||||
import { IonicNativePlugin } from './ionic-native-plugin';
|
||||
import { ERR_CORDOVA_NOT_AVAILABLE, ERR_PLUGIN_NOT_INSTALLED } from './plugin';
|
||||
|
||||
declare const window: any;
|
||||
|
||||
class TestObject {
|
||||
constructor(public _objectInstance: any) {}
|
||||
|
||||
@InstanceProperty name: string;
|
||||
|
||||
@CordovaInstance({ sync: true })
|
||||
pingSync(): string {
|
||||
return;
|
||||
}
|
||||
|
||||
@CordovaInstance()
|
||||
ping(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@Plugin({
|
||||
pluginName: 'TestPlugin',
|
||||
pluginRef: 'testPlugin',
|
||||
repo: '',
|
||||
plugin: 'cordova-plugin-my-plugin',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
class TestPlugin extends IonicNativePlugin {
|
||||
@CordovaProperty name: string;
|
||||
|
||||
@Cordova({ sync: true })
|
||||
pingSync(): string {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova()
|
||||
ping(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
@CordovaCheck()
|
||||
customPing(): Promise<string> {
|
||||
return Promise.resolve('pong');
|
||||
}
|
||||
|
||||
create(): TestObject {
|
||||
return new TestObject(TestPlugin.getPlugin().create());
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
destruct: true
|
||||
})
|
||||
destructPromise(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
destruct: true,
|
||||
observable: true
|
||||
})
|
||||
destructObservable(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function definePlugin() {
|
||||
(window as any).testPlugin = {
|
||||
name: 'John Smith',
|
||||
ping: (success: Function, error: Function) => success('pong'),
|
||||
pingSync: () => 'pong',
|
||||
create: function TestObject() {
|
||||
this.pingSync = () => 'pong';
|
||||
this.ping = (success: Function, error: Function) => success('pong');
|
||||
this.name = 'John Smith';
|
||||
return this;
|
||||
},
|
||||
destructPromise: (success: Function) => success('hello', 'world'),
|
||||
destructObservable: (success: Function) => success('hello', 'world')
|
||||
};
|
||||
}
|
||||
|
||||
describe('Regular Decorators', () => {
|
||||
let plugin: TestPlugin;
|
||||
|
||||
beforeEach(() => {
|
||||
plugin = new TestPlugin();
|
||||
definePlugin();
|
||||
});
|
||||
|
||||
describe('Plugin', () => {
|
||||
it('should set pluginName', () => {
|
||||
expect(TestPlugin.getPluginName()).toEqual('TestPlugin');
|
||||
});
|
||||
|
||||
it('should set pluginRef', () => {
|
||||
expect(TestPlugin.getPluginRef()).toEqual('testPlugin');
|
||||
});
|
||||
|
||||
it('should return original plugin object', () => {
|
||||
expect(TestPlugin.getPlugin()).toEqual(window.testPlugin);
|
||||
});
|
||||
|
||||
it('should return supported platforms', () => {
|
||||
expect(TestPlugin.getSupportedPlatforms()).toEqual(['Android', 'iOS']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Cordova', () => {
|
||||
it('should do a sync function', () => {
|
||||
expect(plugin.pingSync()).toEqual('pong');
|
||||
});
|
||||
|
||||
it('should do an async function', (done: Function) => {
|
||||
plugin
|
||||
.ping()
|
||||
.then(res => {
|
||||
expect(res).toEqual('pong');
|
||||
done();
|
||||
})
|
||||
.catch(e => {
|
||||
expect(e).toBeUndefined();
|
||||
done('Method should have resolved');
|
||||
});
|
||||
});
|
||||
|
||||
it('should throw plugin_not_installed error', (done: Function) => {
|
||||
delete window.testPlugin;
|
||||
window.cordova = true;
|
||||
|
||||
expect(<any>plugin.pingSync()).toEqual(ERR_PLUGIN_NOT_INSTALLED);
|
||||
|
||||
plugin.ping().catch(e => {
|
||||
expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
|
||||
delete window.cordova;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should throw cordova_not_available error', (done: Function) => {
|
||||
delete window.testPlugin;
|
||||
|
||||
expect(<any>plugin.pingSync()).toEqual(ERR_CORDOVA_NOT_AVAILABLE);
|
||||
|
||||
plugin.ping().catch(e => {
|
||||
expect(e).toEqual(ERR_CORDOVA_NOT_AVAILABLE.error);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('CordovaProperty', () => {
|
||||
it('should return property value', () => {
|
||||
expect(plugin.name).toEqual('John Smith');
|
||||
});
|
||||
|
||||
it('should set property value', () => {
|
||||
plugin.name = 'value2';
|
||||
expect(plugin.name).toEqual('value2');
|
||||
});
|
||||
});
|
||||
|
||||
describe('CordovaCheck', () => {
|
||||
it('should run the method when plugin exists', done => {
|
||||
plugin.customPing().then(res => {
|
||||
expect(res).toEqual('pong');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('shouldnt run the method when plugin doesnt exist', done => {
|
||||
delete window.testPlugin;
|
||||
window.cordova = true;
|
||||
plugin.customPing().catch(e => {
|
||||
expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('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', () => {
|
||||
let instance: TestObject, plugin: TestPlugin;
|
||||
|
||||
beforeEach(() => {
|
||||
definePlugin();
|
||||
plugin = new TestPlugin();
|
||||
instance = plugin.create();
|
||||
});
|
||||
|
||||
describe('Instance plugin', () => {});
|
||||
|
||||
describe('CordovaInstance', () => {
|
||||
it('should call instance async method', done => {
|
||||
instance.ping().then(r => {
|
||||
expect(r).toEqual('pong');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should call instance sync method', () => {
|
||||
expect(instance.pingSync()).toEqual('pong');
|
||||
});
|
||||
|
||||
it('shouldnt call instance method when _objectInstance is undefined', () => {
|
||||
delete instance._objectInstance;
|
||||
instance
|
||||
.ping()
|
||||
.then(r => {
|
||||
expect(r).toBeUndefined();
|
||||
})
|
||||
.catch(e => {
|
||||
expect(e).toBeUndefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('InstanceProperty', () => {
|
||||
it('should return property value', () => {
|
||||
expect(instance.name).toEqual('John Smith');
|
||||
});
|
||||
|
||||
it('should set property value', () => {
|
||||
instance.name = 'John Cena';
|
||||
expect(instance.name).toEqual('John Cena');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,7 +1,15 @@
|
||||
import { instanceAvailability, checkAvailability, wrap, wrapInstance, overrideFunction } from './plugin';
|
||||
import { getPlugin, getPromise } from './util';
|
||||
import { _throw } from 'rxjs/observable/throw';
|
||||
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import 'rxjs/observable/throw';
|
||||
|
||||
import {
|
||||
checkAvailability,
|
||||
instanceAvailability,
|
||||
overrideFunction,
|
||||
wrap,
|
||||
wrapInstance
|
||||
} from './plugin';
|
||||
import { getPlugin, getPromise } from './util';
|
||||
|
||||
export interface PluginConfig {
|
||||
/**
|
||||
@@ -32,9 +40,12 @@ export interface PluginConfig {
|
||||
* Supported platforms
|
||||
*/
|
||||
platforms?: string[];
|
||||
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
export interface CordovaOptions {
|
||||
destruct?: boolean;
|
||||
/**
|
||||
* Set to true if the wrapped method is a sync function
|
||||
*/
|
||||
@@ -102,28 +113,20 @@ 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
|
||||
*/
|
||||
export function InstanceCheck(opts: CordovaCheckOptions = {}) {
|
||||
return (pluginObj: Object, methodName: string, descriptor: TypedPropertyDescriptor<any>): TypedPropertyDescriptor<any> => {
|
||||
return (
|
||||
pluginObj: Object,
|
||||
methodName: string,
|
||||
descriptor: TypedPropertyDescriptor<any>
|
||||
): TypedPropertyDescriptor<any> => {
|
||||
return {
|
||||
value: function(...args: any[]): any {
|
||||
if (instanceAvailability(this)) {
|
||||
return descriptor.value.apply(this, args);
|
||||
} else {
|
||||
|
||||
if (opts.sync) {
|
||||
return;
|
||||
} else if (opts.observable) {
|
||||
@@ -131,9 +134,9 @@ export function InstanceCheck(opts: CordovaCheckOptions = {}) {
|
||||
}
|
||||
|
||||
return getPromise(() => {});
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -143,7 +146,11 @@ export function InstanceCheck(opts: CordovaCheckOptions = {}) {
|
||||
* @private
|
||||
*/
|
||||
export function CordovaCheck(opts: CordovaCheckOptions = {}) {
|
||||
return (pluginObj: Object, methodName: string, descriptor: TypedPropertyDescriptor<any>): TypedPropertyDescriptor<any> => {
|
||||
return (
|
||||
pluginObj: Object,
|
||||
methodName: string,
|
||||
descriptor: TypedPropertyDescriptor<any>
|
||||
): TypedPropertyDescriptor<any> => {
|
||||
return {
|
||||
value: function(...args: any[]): any {
|
||||
const check = checkAvailability(pluginObj);
|
||||
@@ -153,16 +160,16 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
|
||||
if (opts.sync) {
|
||||
return null;
|
||||
} else if (opts.observable) {
|
||||
return Observable.throw(new Error(check && check.error));
|
||||
return _throw(new Error(check && check.error));
|
||||
}
|
||||
return Promise.reject(check && check.error);
|
||||
}
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
*
|
||||
@@ -182,12 +189,11 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
export function Plugin(config: PluginConfig) {
|
||||
return function(cls) {
|
||||
|
||||
export function Plugin(config: PluginConfig): ClassDecorator {
|
||||
return function(cls: any) {
|
||||
// Add these fields to the class
|
||||
for (let k in config) {
|
||||
cls[k] = config[k];
|
||||
for (let prop in config) {
|
||||
cls[prop] = config[prop];
|
||||
}
|
||||
|
||||
cls['installed'] = function(printWarning?: boolean) {
|
||||
@@ -233,11 +239,16 @@ export function Plugin(config: PluginConfig) {
|
||||
* and the required plugin are installed.
|
||||
*/
|
||||
export function Cordova(opts: CordovaOptions = {}) {
|
||||
return (target: Object, methodName: string, descriptor: TypedPropertyDescriptor<any>) => {
|
||||
return (
|
||||
target: Object,
|
||||
methodName: string,
|
||||
descriptor: TypedPropertyDescriptor<any>
|
||||
) => {
|
||||
return {
|
||||
value: function(...args: any[]) {
|
||||
return wrap(this, methodName, opts).apply(this, args);
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -247,12 +258,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
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -273,7 +285,7 @@ export function CordovaProperty(target: any, key: string) {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
set: (value) => {
|
||||
set: value => {
|
||||
if (checkAvailability(target, key) === true) {
|
||||
getPlugin(target.constructor.getPluginRef())[key] = value;
|
||||
}
|
||||
@@ -290,10 +302,10 @@ export function CordovaProperty(target: any, key: string) {
|
||||
export function InstanceProperty(target: any, key: string) {
|
||||
Object.defineProperty(target, key, {
|
||||
enumerable: true,
|
||||
get: function(){
|
||||
get: function() {
|
||||
return this._objectInstance[key];
|
||||
},
|
||||
set: function(value){
|
||||
set: function(value) {
|
||||
this._objectInstance[key] = value;
|
||||
}
|
||||
});
|
||||
@@ -306,47 +318,16 @@ export function InstanceProperty(target: any, key: string) {
|
||||
* and the required plugin are installed.
|
||||
*/
|
||||
export function CordovaFunctionOverride(opts: any = {}) {
|
||||
return (target: Object, methodName: string, descriptor: TypedPropertyDescriptor<any>) => {
|
||||
return (
|
||||
target: Object,
|
||||
methodName: string,
|
||||
descriptor: TypedPropertyDescriptor<any>
|
||||
) => {
|
||||
return {
|
||||
value: function(...args: any[]) {
|
||||
return overrideFunction(this, methodName, opts);
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @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();
|
||||
};
|
||||
});
|
||||
}
|
||||
},
|
||||
enumerable: true
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
74
src/@ionic-native/core/ionic-native-plugin.spec.ts
Normal file
74
src/@ionic-native/core/ionic-native-plugin.spec.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
// This is to verify that new (FileTransfer.getPlugin)() works
|
||||
import { CordovaInstance, Plugin } from './decorators';
|
||||
import { IonicNativePlugin } from './ionic-native-plugin';
|
||||
import { checkAvailability } from './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');
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,4 @@
|
||||
export class IonicNativePlugin {
|
||||
|
||||
static pluginName: string;
|
||||
|
||||
static pluginRef: string;
|
||||
@@ -16,7 +15,9 @@ export class IonicNativePlugin {
|
||||
* Returns a boolean that indicates whether the plugin is installed
|
||||
* @return {boolean}
|
||||
*/
|
||||
static installed(): boolean { return false; }
|
||||
static installed(): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the original plugin object
|
||||
@@ -26,16 +27,28 @@ export class IonicNativePlugin {
|
||||
/**
|
||||
* Returns the plugin's name
|
||||
*/
|
||||
static getPluginName(): string { return; }
|
||||
static getPluginName(): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's reference
|
||||
*/
|
||||
static getPluginRef(): string { return; }
|
||||
static getPluginRef(): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's install name
|
||||
*/
|
||||
static getPluginInstallName(): string { return; }
|
||||
static getPluginInstallName(): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's supported platforms
|
||||
*/
|
||||
static getSupportedPlatforms(): string[] {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,38 @@
|
||||
import { get, getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { fromEvent } from 'rxjs/observable/fromEvent';
|
||||
|
||||
import { checkReady } from './bootstrap';
|
||||
import { CordovaOptions } from './decorators';
|
||||
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import 'rxjs/add/observable/fromEvent';
|
||||
import { cordovaWarn, getPlugin, getPromise, pluginWarn } from './util';
|
||||
|
||||
checkReady();
|
||||
|
||||
declare var window;
|
||||
declare var Promise;
|
||||
// declare const window;
|
||||
// declare var Promise;
|
||||
|
||||
export const ERR_CORDOVA_NOT_AVAILABLE = { error: 'cordova_not_available' };
|
||||
export const ERR_PLUGIN_NOT_INSTALLED = { error: 'plugin_not_installed' };
|
||||
|
||||
/**
|
||||
* Checks if plugin/cordova is available
|
||||
* @return {boolean | { error: string } }
|
||||
* @private
|
||||
*/
|
||||
export function checkAvailability(pluginRef: string, methodName?: string, pluginName?: string);
|
||||
export function checkAvailability(pluginObj: any, methodName?: string, pluginName?: string);
|
||||
export function checkAvailability(plugin: any, methodName?: string, pluginName?: string): boolean | { error: string } {
|
||||
|
||||
export function checkAvailability(
|
||||
pluginRef: string,
|
||||
methodName?: string,
|
||||
pluginName?: string
|
||||
): boolean | { error: string };
|
||||
export function checkAvailability(
|
||||
pluginObj: any,
|
||||
methodName?: string,
|
||||
pluginName?: string
|
||||
): boolean | { error: string };
|
||||
export function checkAvailability(
|
||||
plugin: any,
|
||||
methodName?: string,
|
||||
pluginName?: string
|
||||
): boolean | { error: string } {
|
||||
let pluginRef, pluginInstance, pluginPackage;
|
||||
|
||||
if (typeof plugin === 'string') {
|
||||
@@ -32,18 +45,17 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
|
||||
|
||||
pluginInstance = getPlugin(pluginRef);
|
||||
|
||||
if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {
|
||||
if (
|
||||
!pluginInstance ||
|
||||
(!!methodName && typeof pluginInstance[methodName] === 'undefined')
|
||||
) {
|
||||
if (!window.cordova) {
|
||||
cordovaWarn(pluginName, methodName);
|
||||
return {
|
||||
error: 'cordova_not_available'
|
||||
};
|
||||
return ERR_CORDOVA_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
pluginWarn(pluginName, pluginPackage, methodName);
|
||||
return {
|
||||
error: 'plugin_not_installed'
|
||||
};
|
||||
return ERR_PLUGIN_NOT_INSTALLED;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -53,11 +65,23 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
|
||||
* Checks if _objectInstance exists and has the method/property
|
||||
* @private
|
||||
*/
|
||||
export function instanceAvailability(pluginObj: any, methodName?: string): boolean {
|
||||
return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');
|
||||
export function instanceAvailability(
|
||||
pluginObj: any,
|
||||
methodName?: string
|
||||
): boolean {
|
||||
return (
|
||||
pluginObj._objectInstance &&
|
||||
(!methodName ||
|
||||
typeof pluginObj._objectInstance[methodName] !== 'undefined')
|
||||
);
|
||||
}
|
||||
|
||||
function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
|
||||
function setIndex(
|
||||
args: any[],
|
||||
opts: any = {},
|
||||
resolve?: Function,
|
||||
reject?: Function
|
||||
): any {
|
||||
// ignore resolve and reject in case sync
|
||||
if (opts.sync) {
|
||||
return args;
|
||||
@@ -69,19 +93,26 @@ function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Func
|
||||
args.unshift(reject);
|
||||
args.unshift(resolve);
|
||||
} else if (opts.callbackStyle === 'node') {
|
||||
args.push((err, result) => {
|
||||
args.push((err: any, result: any) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(result);
|
||||
}
|
||||
});
|
||||
} else if (opts.callbackStyle === 'object' && opts.successName && opts.errorName) {
|
||||
} else if (
|
||||
opts.callbackStyle === 'object' &&
|
||||
opts.successName &&
|
||||
opts.errorName
|
||||
) {
|
||||
let obj: any = {};
|
||||
obj[opts.successName] = resolve;
|
||||
obj[opts.errorName] = reject;
|
||||
args.push(obj);
|
||||
} else if (typeof opts.successIndex !== 'undefined' || typeof opts.errorIndex !== 'undefined') {
|
||||
} else if (
|
||||
typeof opts.successIndex !== 'undefined' ||
|
||||
typeof opts.errorIndex !== 'undefined'
|
||||
) {
|
||||
const setSuccessIndex = () => {
|
||||
// If we've specified a success/error index
|
||||
if (opts.successIndex > args.length) {
|
||||
@@ -107,8 +138,6 @@ function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Func
|
||||
setSuccessIndex();
|
||||
setErrorIndex();
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
// Otherwise, let's tack them on to the end of the argument list
|
||||
// which is 90% of cases
|
||||
@@ -118,7 +147,14 @@ function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Func
|
||||
return args;
|
||||
}
|
||||
|
||||
function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
|
||||
function callCordovaPlugin(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: any[],
|
||||
opts: any = {},
|
||||
resolve?: Function,
|
||||
reject?: Function
|
||||
) {
|
||||
// Try to figure out where the success/error callbacks need to be bound
|
||||
// to our promise resolve/reject handlers.
|
||||
args = setIndex(args, opts, resolve, reject);
|
||||
@@ -131,27 +167,54 @@ function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts
|
||||
} else {
|
||||
return availabilityCheck;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
|
||||
let pluginResult, rej;
|
||||
const p = getPromise((resolve, reject) => {
|
||||
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
|
||||
function wrapPromise(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: any[],
|
||||
opts: any = {}
|
||||
) {
|
||||
let pluginResult: any, rej: Function;
|
||||
const p = getPromise((resolve: Function, reject: Function) => {
|
||||
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
|
||||
// a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason
|
||||
// to error
|
||||
if (pluginResult && pluginResult.error) {
|
||||
p.catch(() => { });
|
||||
rej(pluginResult.error);
|
||||
p.catch(() => {});
|
||||
typeof rej === 'function' && rej(pluginResult.error);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any= {}) {
|
||||
return getPromise((resolve, reject) => {
|
||||
function wrapOtherPromise(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: any[],
|
||||
opts: any = {}
|
||||
) {
|
||||
return getPromise((resolve: Function, reject: Function) => {
|
||||
const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
|
||||
if (pluginResult) {
|
||||
if (pluginResult.error) {
|
||||
@@ -165,9 +228,35 @@ function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts:
|
||||
});
|
||||
}
|
||||
|
||||
function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
|
||||
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();
|
||||
@@ -176,26 +265,45 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
|
||||
try {
|
||||
if (opts.clearFunction) {
|
||||
if (opts.clearWithArgs) {
|
||||
return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
|
||||
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(
|
||||
'Unable to clear the previous observable watch for',
|
||||
pluginObj.constructor.getPluginName(),
|
||||
methodName
|
||||
);
|
||||
console.warn(e);
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function callInstance(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
|
||||
|
||||
function callInstance(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: any[],
|
||||
opts: any = {},
|
||||
resolve?: Function,
|
||||
reject?: Function
|
||||
) {
|
||||
args = setIndex(args, opts, resolve, reject);
|
||||
|
||||
if (instanceAvailability(pluginObj, methodName)) {
|
||||
return pluginObj._objectInstance[methodName].apply(pluginObj._objectInstance, args);
|
||||
return pluginObj._objectInstance[methodName].apply(
|
||||
pluginObj._objectInstance,
|
||||
args
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -205,8 +313,11 @@ function callInstance(pluginObj: any, methodName: string, args: any[], opts: any
|
||||
* @param element The element to attach the event listener to
|
||||
* @returns {Observable}
|
||||
*/
|
||||
export function wrapEventObservable(event: string, element: any = window): Observable<any> {
|
||||
return Observable.fromEvent(element, event);
|
||||
export function wrapEventObservable(
|
||||
event: string,
|
||||
element: any = window
|
||||
): Observable<any> {
|
||||
return fromEvent(element, event);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -217,29 +328,39 @@ export function wrapEventObservable(event: string, element: any = window): Obser
|
||||
* does just this.
|
||||
* @private
|
||||
*/
|
||||
export function overrideFunction(pluginObj: any, methodName: string, args: any[], opts: any = {}): Observable<any> {
|
||||
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());
|
||||
pluginInstance[methodName] = observer.next.bind(observer);
|
||||
return () => pluginInstance[methodName] = () => {};
|
||||
return () => (pluginInstance[methodName] = () => {});
|
||||
} else {
|
||||
observer.error(availabilityCheck);
|
||||
observer.complete();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOptions = {}) {
|
||||
return (...args) => {
|
||||
export const wrap = function(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
opts: CordovaOptions = {}
|
||||
) {
|
||||
return (...args: any[]) => {
|
||||
if (opts.sync) {
|
||||
// Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is
|
||||
return callCordovaPlugin(pluginObj, methodName, args, opts);
|
||||
@@ -258,16 +379,37 @@ export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOp
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
export function wrapInstance(pluginObj: any, methodName: string, opts: any = {}) {
|
||||
return (...args) => {
|
||||
export function wrapInstance(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
opts: any = {}
|
||||
) {
|
||||
return (...args: any[]) => {
|
||||
if (opts.sync) {
|
||||
|
||||
return callInstance(pluginObj, methodName, args, opts);
|
||||
|
||||
} 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);
|
||||
@@ -277,38 +419,86 @@ 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(
|
||||
'Unable to clear the previous observable watch for',
|
||||
pluginObj.constructor.getPluginName(),
|
||||
methodName
|
||||
);
|
||||
console.warn(e);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
} else if (opts.otherPromise) {
|
||||
|
||||
return getPromise((resolve, reject) => {
|
||||
let result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
if (result && !result.error) {
|
||||
return getPromise((resolve: Function, reject: Function) => {
|
||||
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, rej;
|
||||
const p = getPromise((resolve, reject) => {
|
||||
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
let pluginResult: any, rej: Function;
|
||||
const p = getPromise((resolve: Function, reject: Function) => {
|
||||
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(() => { });
|
||||
rej(pluginResult.error);
|
||||
p.catch(() => {});
|
||||
typeof rej === 'function' && rej(pluginResult.error);
|
||||
}
|
||||
return p;
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,56 +1,75 @@
|
||||
declare var window: any;
|
||||
declare const window: any;
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
export function get(obj, path) {
|
||||
path = path.split('.');
|
||||
for (let i = 0; i < path.length; i++) {
|
||||
if (!obj) { return null; }
|
||||
obj = obj[path[i]];
|
||||
export const get = (element: Element | Window, path: string): any => {
|
||||
const paths: string[] = path.split('.');
|
||||
let obj: any = element;
|
||||
for (let i: number = 0; i < paths.length; i++) {
|
||||
if (!obj) {
|
||||
return null;
|
||||
}
|
||||
obj = obj[paths[i]];
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
export function getPromise(cb) {
|
||||
|
||||
export const getPromise = (callback: Function): Promise<any> => {
|
||||
const tryNativePromise = () => {
|
||||
if (window.Promise) {
|
||||
return new Promise((resolve, reject) => {
|
||||
cb(resolve, reject);
|
||||
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.'
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
return tryNativePromise();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param pluginRef
|
||||
* @returns {null|*}
|
||||
*/
|
||||
export function getPlugin(pluginRef: string): any {
|
||||
export const getPlugin = (pluginRef: string): any => {
|
||||
return get(window, pluginRef);
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
export const pluginWarn = function(pluginName: string, plugin?: string, method?: string) {
|
||||
export const pluginWarn = (
|
||||
pluginName: string,
|
||||
plugin?: string,
|
||||
method?: string
|
||||
): void => {
|
||||
if (method) {
|
||||
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.');
|
||||
console.warn(
|
||||
'Native: tried calling ' +
|
||||
pluginName +
|
||||
'.' +
|
||||
method +
|
||||
', but the ' +
|
||||
pluginName +
|
||||
' plugin is not installed.'
|
||||
);
|
||||
} else {
|
||||
console.warn('Native: tried accessing the ' + pluginName + ' plugin but it\'s not installed.');
|
||||
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}'`
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -59,10 +78,20 @@ export const pluginWarn = function(pluginName: string, plugin?: string, method?:
|
||||
* @param pluginName
|
||||
* @param method
|
||||
*/
|
||||
export const cordovaWarn = function(pluginName: string, method?: string) {
|
||||
export const cordovaWarn = (pluginName: string, method?: string): void => {
|
||||
if (method) {
|
||||
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
|
||||
console.warn(
|
||||
'Native: tried calling ' +
|
||||
pluginName +
|
||||
'.' +
|
||||
method +
|
||||
', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'
|
||||
);
|
||||
} else {
|
||||
console.warn('Native: tried accessing the ' + pluginName + ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
|
||||
console.warn(
|
||||
'Native: tried accessing the ' +
|
||||
pluginName +
|
||||
' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
336
src/@ionic-native/plugins/abbyy-rtr/index.ts
Normal file
336
src/@ionic-native/plugins/abbyy-rtr/index.ts
Normal file
@@ -0,0 +1,336 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CordovaCheck, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
declare const AbbyyRtrSdk: any;
|
||||
|
||||
/**
|
||||
* JSON object that you can pass as the options argument to change text
|
||||
* capture settings. All keys are optional. Omitting a key means that a
|
||||
* default setting will be used.
|
||||
*/
|
||||
export interface TextCaptureOptions {
|
||||
|
||||
/**
|
||||
* The name of the license file. This file must be located in the
|
||||
* www/rtr_assets/ directory in your project.
|
||||
*/
|
||||
licenseFileName?: string;
|
||||
|
||||
/**
|
||||
* Recognition languages which can be selected by the user,
|
||||
* for example: ["English", "French", "German"]. Empty array
|
||||
* disables language selection.
|
||||
*/
|
||||
selectableRecognitionLanguages?: Array<string>;
|
||||
|
||||
/**
|
||||
* Recognition language selected by default.
|
||||
*/
|
||||
recognitionLanguages?: Array<string>;
|
||||
|
||||
/**
|
||||
* Width and height of the recognition area, separated by a
|
||||
* whitespace — for example: "0.8 0.3". The area of interest is
|
||||
* centered in the preview frame, its width and height are
|
||||
* relative to the preview frame size and should be in the [0.0, 1.0] range.
|
||||
*/
|
||||
areaOfInterest?: string;
|
||||
|
||||
/**
|
||||
* Whether to stop the plugin as soon as the result status is
|
||||
* "Stable" (see Result status). When enabled (true), the
|
||||
* recognition process can be stopped automatically. When
|
||||
* disabled (false), recognition can be stopped only manually
|
||||
* by user.
|
||||
*/
|
||||
stopWhenStable?: boolean;
|
||||
|
||||
/**
|
||||
* Show (true) or hide (false) the flashlight button in the text
|
||||
* capture dialog.
|
||||
*/
|
||||
isFlashlightVisible?: boolean;
|
||||
|
||||
/**
|
||||
* Show (true) or hide (false) the stop button in the text
|
||||
* capture dialog. When the user taps stop, RTR SDK returns
|
||||
* the latest recognition result.
|
||||
*/
|
||||
isStopButtonVisible?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON object that represents text recognition results.
|
||||
* The callback you implement should parse this object and show results to user.
|
||||
*/
|
||||
export interface TextCaptureResult {
|
||||
|
||||
/**
|
||||
* An array of objects representing recognized lines of text.
|
||||
* These objects have the following keys:
|
||||
* · text (string): the recognized text.
|
||||
* · quadrangle (string): vertex coordinates of the bounding quadrangle,
|
||||
* a string of 8 integers separated with whitespaces ("x1 y1 ... x4 y4"),
|
||||
* goes clockwise starting from the bottom left.
|
||||
* · rect (string): position and size of the bounding rectangle,
|
||||
* a string of 4 integers separated with whitespaces ("x y width height").
|
||||
*/
|
||||
textLines: Array<{ text: string, quadrangle: string, rect?: string }>;
|
||||
|
||||
/**
|
||||
* Additional information. This object has the following keys:
|
||||
* · stabilityStatus (string): result stability status.
|
||||
* See Result status for details.
|
||||
* · userAction (string): the user's action which stopped the plugin,
|
||||
* if any. Can be "Manually Stopped" if the stop button has been used,
|
||||
* and "Canceled" if the user canceled processing. If the plugin has
|
||||
* stopped automatically, the userAction key is not present in resultInfo.
|
||||
* · frameSize (string): full size of the preview frame, a string
|
||||
* with 2 integers separated with a whitespace ("720 1280").
|
||||
* · recognitionLanguages (string array): languages used for recognition,
|
||||
* the array contains language identifiers (["English", "French", "German"]).
|
||||
*/
|
||||
resultInfo: {
|
||||
stabilityStatus: string,
|
||||
userAction: string,
|
||||
frameSize: string,
|
||||
recognitionLanguages: Array<string>
|
||||
};
|
||||
|
||||
/**
|
||||
* Error details. This key is present only if an error occurs.
|
||||
* The value is an object which has a single key:
|
||||
* · description (string): human-readable error description.
|
||||
*/
|
||||
error?: {
|
||||
description: string;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON object that you can pass as the options argument to change data
|
||||
* capture settings. All keys are optional. Omitting a key means that a default
|
||||
* setting will be used, except the profile and customDataCaptureScenario
|
||||
* keys: you must specify either one of them, but not both at the same time.
|
||||
*/
|
||||
export interface DataCaptureOptions {
|
||||
|
||||
/**
|
||||
* The predefined data capture profile to use, for example: "MRZ".
|
||||
* Note: For the list of supported documents, see Specifications — Data
|
||||
* Capture Profiles in the ABBYY Real-Time Recognition SDK 1 Developer's Guide.
|
||||
*/
|
||||
profile?: string;
|
||||
|
||||
/**
|
||||
* Custom data capture settings. This object has the following keys:
|
||||
* · name (string): the name of your custom data capture scenario, required.
|
||||
* · description (string): a more detailed description. This key is optional;
|
||||
* if not given, it will be assigned the same value as name.
|
||||
* · recognitionLanguages (string array): recognition languages to use.
|
||||
* Default is ["English"].
|
||||
* · fields (object array): describes data fields to capture. Each object
|
||||
* in this array has a single regEx key; its value is a string containing
|
||||
* the regular expression that should be matched when capturing a field.
|
||||
*/
|
||||
customDataCaptureScenario?: {
|
||||
name: string,
|
||||
description: string,
|
||||
recognitionLanguages: Array<string>,
|
||||
fields: Array<{ regEx: string }>
|
||||
};
|
||||
|
||||
/**
|
||||
* The name of the license file. This file must be located in the
|
||||
* www/rtr_assets/ directory in your project.
|
||||
*/
|
||||
licenseFileName?: string;
|
||||
|
||||
/**
|
||||
* Width and height of the recognition area, separated by a
|
||||
* whitespace — for example: "0.8 0.3". The area of interest is
|
||||
* centered in the preview frame, its width and height are
|
||||
* relative to the preview frame size and should be in the [0.0, 1.0] range.
|
||||
*/
|
||||
areaOfInterest?: string;
|
||||
|
||||
/**
|
||||
* Whether to stop the plugin as soon as the result status is
|
||||
* "Stable" (see Result status). When enabled (true), the
|
||||
* recognition process can be stopped automatically. When
|
||||
* disabled (false), recognition can be stopped only manually
|
||||
* by user.
|
||||
*/
|
||||
stopWhenStable?: boolean;
|
||||
|
||||
/**
|
||||
* Show (true) or hide (false) the flashlight button in the text
|
||||
* capture dialog.
|
||||
*/
|
||||
isFlashlightVisible?: boolean;
|
||||
|
||||
/**
|
||||
* Show (true) or hide (false) the stop button in the text
|
||||
* capture dialog. When the user taps stop, RTR SDK returns
|
||||
* the latest recognition result.
|
||||
*/
|
||||
isStopButtonVisible?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON object that represents data recognition results. The callback you
|
||||
* implement should parse this object and show results to user.
|
||||
*/
|
||||
export interface DataCaptureResult {
|
||||
|
||||
/**
|
||||
* The data scheme which was applied during data capture.
|
||||
* The value is an object which has two keys:
|
||||
* · id (string): the internal scheme identifier.
|
||||
* · name (string): the scheme name.
|
||||
* If you had defined a custom data capture scenario in options, both the
|
||||
* id and name will be the same as the scenario name you specified. If
|
||||
* you selected a predefined profile, the id and name are specified by the
|
||||
* profile. If an error occurs during processing, the dataScheme key is not
|
||||
* present in the result.
|
||||
*/
|
||||
dataScheme?: {
|
||||
id: string,
|
||||
name: string
|
||||
};
|
||||
|
||||
/**
|
||||
* Recognized data fields. Each object in the array represents a separate
|
||||
* data field. The data field objects have the following keys:
|
||||
* · id (string): the internal identifier of the field.
|
||||
* · name (string): the field name.
|
||||
* Similarly to dataScheme, in custom scenarios both id and name are the same
|
||||
* as the scenario name you specified (currently custom scenarios allow
|
||||
* only 1 recognized field).
|
||||
* · text (string): full text of the field.
|
||||
* · quadrangle (string): vertex coordinates of the bounding quadrangle, a
|
||||
* string of 8 integers separated with whitespaces ("x1 y1 ... x4 y4"),
|
||||
* goes clockwise starting from the bottom left.
|
||||
* · components (object array): an array of objects representing field
|
||||
* components, that is, the text fragments found on the image, which
|
||||
* constitute the field.
|
||||
* In the components array each element is an object with the following keys:
|
||||
* · text (string): text of this fragment.
|
||||
* · quadrangle (string): vertex coordinates of the bounding quadrangle of
|
||||
* this fragment, similar to the field's quadrangle.
|
||||
* · rect (string): position and size of the bounding rectangle, a string
|
||||
* of 4 integers separated with whitespaces ("x y width height").
|
||||
*/
|
||||
dataFields: {
|
||||
id: string,
|
||||
name: string,
|
||||
text: string,
|
||||
quadrangle: string,
|
||||
components: {
|
||||
text: string,
|
||||
quadrangle: string,
|
||||
rect: string
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Additional information. This object has the following keys:
|
||||
* · stabilityStatus (string): result stability status.
|
||||
* See Result status for details.
|
||||
* · userAction (string): the user's action which stopped the plugin,
|
||||
* if any. Can be "Manually Stopped" if the stop button has been used,
|
||||
* and "Canceled" if the user canceled processing. If the plugin has
|
||||
* stopped automatically, the userAction key is not present in resultInfo.
|
||||
* · frameSize (string): full size of the preview frame, a string
|
||||
* with 2 integers separated with a whitespace ("720 1280").
|
||||
*/
|
||||
resultInfo: {
|
||||
stabilityStatus: string,
|
||||
userAction: string,
|
||||
frameSize: string
|
||||
};
|
||||
|
||||
/**
|
||||
* Error details. This key is present only if an error occurs.
|
||||
* The value is an object which has a single key:
|
||||
* · description (string): human-readable error description.
|
||||
*/
|
||||
error?: {
|
||||
description: string;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @name ABBYY Real-Time Recognition
|
||||
* @description
|
||||
* This plugin allows to use the Text Capture and Data Capture features of
|
||||
* ABBYY Real-Time Recognition SDK (RTR SDK) in apps.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AbbyyRTR } from '@ionic-native/abbyy-rtr';
|
||||
*
|
||||
*
|
||||
* constructor(private abbyyRTR: AbbyyRTR) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.abbyyRTR.startTextCapture(options)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
*
|
||||
* this.abbyyRTR.startDataCapture(options)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AbbyyRTR',
|
||||
plugin: 'cordova-plugin-abbyy-rtr-sdk',
|
||||
pluginRef: 'AbbyyRtrSdk',
|
||||
repo: 'https://github.com/abbyysdk/RTR-SDK.Cordova',
|
||||
install: 'ionic cordova plugin add cordova-plugin-abbyy-rtr-sdk',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class AbbyyRTR extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Opens a modal dialog with controls for the Text Capture scenario.
|
||||
* @param {TextCaptureOptions} options
|
||||
* @return {Promise<TextCaptureResult>}
|
||||
*/
|
||||
@CordovaCheck()
|
||||
startTextCapture(options: TextCaptureOptions): Promise<TextCaptureResult> {
|
||||
return new Promise<any>((resolve, reject) => {
|
||||
AbbyyRtrSdk.startTextCapture((result: DataCaptureResult) => {
|
||||
if (result.error) {
|
||||
reject(result);
|
||||
} else {
|
||||
resolve(result);
|
||||
}
|
||||
}, options);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a modal dialog with controls for the Data Capture scenario.
|
||||
* @param {DataCaptureOptions} options
|
||||
* @return {Promise<DataCaptureResult>}
|
||||
*/
|
||||
@CordovaCheck()
|
||||
startDataCapture(options: DataCaptureOptions): Promise<DataCaptureResult> {
|
||||
return new Promise<any>((resolve, reject) => {
|
||||
AbbyyRtrSdk.startDataCapture((result: DataCaptureResult) => {
|
||||
if (result.error) {
|
||||
reject(result);
|
||||
} else {
|
||||
resolve(result);
|
||||
}
|
||||
}, options);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface ActionSheetOptions {
|
||||
|
||||
/**
|
||||
* The labels for the buttons. Uses the index x
|
||||
*/
|
||||
@@ -21,7 +20,7 @@ export interface ActionSheetOptions {
|
||||
/**
|
||||
* Theme to be used on Android
|
||||
*/
|
||||
androidTheme?: number;
|
||||
androidTheme?: 1 | 2 | 3 | 4 | 5;
|
||||
|
||||
/**
|
||||
* Enable a cancel on Android
|
||||
@@ -46,12 +45,12 @@ export interface ActionSheetOptions {
|
||||
/**
|
||||
* On an iPad, set the X,Y position
|
||||
*/
|
||||
position?: number[];
|
||||
position?: [number, number];
|
||||
|
||||
/**
|
||||
* Choose if destructive button will be the last
|
||||
*/
|
||||
destructiveButtonLast: boolean;
|
||||
destructiveButtonLast?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -94,34 +93,45 @@ 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
|
||||
};
|
||||
|
||||
/**
|
||||
* Show a native ActionSheet component. See below for options.
|
||||
* @param options {ActionSheetOptions} Options See table below
|
||||
* @param {ActionSheetOptions} [options] Options See table below
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the index of the
|
||||
* button pressed (1 based, so 1, 2, 3, etc.)
|
||||
*/
|
||||
@Cordova()
|
||||
show(options?: ActionSheetOptions): Promise<any> { return; }
|
||||
|
||||
show(options?: ActionSheetOptions): Promise<number> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Progamtically hide the native ActionSheet
|
||||
* Programmatically hide the native ActionSheet
|
||||
* @param {ActionSheetOptions} [options] Options See table below
|
||||
* @returns {Promise<any>} Returns a Promise that resolves when the actionsheet is closed
|
||||
*/
|
||||
@Cordova()
|
||||
hide(options?: any): Promise<any> { return; }
|
||||
hide(options?: ActionSheetOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import 'rxjs/add/observable/fromEvent';
|
||||
import { fromEvent } from 'rxjs/observable/fromEvent';
|
||||
|
||||
export interface AdMobFreeBannerConfig {
|
||||
/**
|
||||
@@ -67,9 +67,12 @@ export interface AdMobFreeRewardVideoConfig {
|
||||
/**
|
||||
* @name AdMob Free
|
||||
* @description
|
||||
* A free, no ad-sharing version of Google AdMob plugin for Cordova.
|
||||
*
|
||||
* Requires Cordova plugin: `cordova-plugin-admob-free`. For more info, please see the [AdMob Free plugin docs](https://github.com/ratson/cordova-plugin-admob-free).
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
|
||||
*
|
||||
*
|
||||
@@ -96,6 +99,14 @@ export interface AdMobFreeRewardVideoConfig {
|
||||
*
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* AdMobFreeBannerConfig
|
||||
* AdMobFreeInterstitialConfig
|
||||
* AdMobFreeRewardVideoConfig
|
||||
* @classes
|
||||
* AdMobFreeBanner
|
||||
* AdMobFreeInterstitial
|
||||
* AdMobFreeRewardVideo
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
@@ -106,9 +117,9 @@ export interface AdMobFreeRewardVideoConfig {
|
||||
})
|
||||
@Injectable()
|
||||
export class AdMobFree extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Convenience constructor to get event names
|
||||
* Convenience object to get event names
|
||||
* @type {Object}
|
||||
*/
|
||||
events = {
|
||||
BANNER_LOAD: 'admob.banner.events.LOAD',
|
||||
@@ -138,27 +149,26 @@ export class AdMobFree extends IonicNativePlugin {
|
||||
* @return {Observable<any>}
|
||||
*/
|
||||
on(event: string): Observable<any> {
|
||||
return Observable.fromEvent(document, event);
|
||||
return fromEvent(document, event);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 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();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,46 +177,54 @@ export class AdMobFree extends IonicNativePlugin {
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
plugin: 'cordova-plugin-admob-free',
|
||||
pluginRef: 'admob.banner',
|
||||
pluginRef: 'admob.banner'
|
||||
})
|
||||
export class AdMobFreeBanner {
|
||||
|
||||
/**
|
||||
* Update config.
|
||||
* Update config
|
||||
* @param options
|
||||
* @return {AdMobFreeBannerConfig}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
config(options: AdMobFreeBannerConfig): AdMobFreeBannerConfig { return; }
|
||||
config(options: AdMobFreeBannerConfig): AdMobFreeBannerConfig {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide the banner.
|
||||
* Hide the banner
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
hide(): Promise<any> { return; }
|
||||
@Cordova({ otherPromise: true })
|
||||
hide(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create banner.
|
||||
* Create banner
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
prepare(): Promise<any> { return; }
|
||||
@Cordova({ otherPromise: true })
|
||||
prepare(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the banner.
|
||||
* Remove the banner
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
remove(): Promise<any> { return; }
|
||||
@Cordova({ otherPromise: true })
|
||||
remove(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the banner.
|
||||
* Show the banner
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
show(): Promise<any> { return; }
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -215,39 +233,45 @@ export class AdMobFreeBanner {
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
plugin: 'cordova-plugin-admob-free',
|
||||
pluginRef: 'admob.interstitial',
|
||||
pluginRef: 'admob.interstitial'
|
||||
})
|
||||
export class AdMobFreeInterstitial {
|
||||
|
||||
/**
|
||||
* Update config.
|
||||
* Update config
|
||||
* @param options
|
||||
* @return {AdMobFreeInterstitialConfig}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
config(options: AdMobFreeInterstitialConfig): AdMobFreeInterstitialConfig { return; }
|
||||
config(options: AdMobFreeInterstitialConfig): AdMobFreeInterstitialConfig {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if interstitial is ready
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
isReady(): Promise<any> { return; }
|
||||
@Cordova({ otherPromise: true })
|
||||
isReady(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare interstitial
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
prepare(): Promise<any> { return; }
|
||||
@Cordova({ otherPromise: true })
|
||||
prepare(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the interstitial
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
show(): Promise<any> { return; }
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -256,37 +280,43 @@ export class AdMobFreeInterstitial {
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
plugin: 'cordova-plugin-admob-free',
|
||||
pluginRef: 'admob.rewardvideo',
|
||||
pluginRef: 'admob.rewardvideo'
|
||||
})
|
||||
export class AdMobFreeRewardVideo {
|
||||
|
||||
/**
|
||||
* Update config.
|
||||
* @param options
|
||||
* Update config
|
||||
* @param {AdMobFreeRewardVideoConfig} options Admob reward config
|
||||
* @return {AdMobFreeRewardVideoConfig}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
config(options: AdMobFreeRewardVideoConfig): AdMobFreeRewardVideoConfig { return; }
|
||||
config(options: AdMobFreeRewardVideoConfig): AdMobFreeRewardVideoConfig {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if reward video is ready
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
isReady(): Promise<any> { return; }
|
||||
@Cordova({ otherPromise: true })
|
||||
isReady(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare reward video
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
prepare(): Promise<any> { return; }
|
||||
@Cordova({ otherPromise: true })
|
||||
prepare(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the reward video
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
show(): Promise<any> { return; }
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
export type AdSize = 'SMART_BANNER' | 'BANNER' | 'MEDIUM_RECTANGLE' | 'FULL_BANNER' | 'LEADERBOARD' | 'SKYSCRAPER' | 'CUSTOM';
|
||||
export type AdSize =
|
||||
| 'SMART_BANNER'
|
||||
| 'BANNER'
|
||||
| 'MEDIUM_RECTANGLE'
|
||||
| 'FULL_BANNER'
|
||||
| 'LEADERBOARD'
|
||||
| 'SKYSCRAPER'
|
||||
| 'CUSTOM';
|
||||
|
||||
export interface AdMobOptions {
|
||||
|
||||
/**
|
||||
* Banner ad ID
|
||||
*/
|
||||
@@ -32,7 +38,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;
|
||||
|
||||
@@ -71,10 +77,13 @@ export interface AdMobOptions {
|
||||
*/
|
||||
license?: any;
|
||||
|
||||
/**
|
||||
* Set offset
|
||||
*/
|
||||
offsetTopBar?: boolean;
|
||||
}
|
||||
|
||||
export interface AdExtras {
|
||||
|
||||
color_bg: string;
|
||||
|
||||
color_bg_top: string;
|
||||
@@ -86,18 +95,21 @@ export interface AdExtras {
|
||||
color_text: string;
|
||||
|
||||
color_url: string;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @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, AdMobOptions, AdSize, AdExtras } from '@ionic-native/admob';
|
||||
* import { AdMobPro } from '@ionic-native/admob-pro';
|
||||
* import { Platform } from 'ionic-angular';
|
||||
*
|
||||
* constructor(private admob: AdMob){}
|
||||
* constructor(private admob: AdMobPro, private platform: Platform ) { }
|
||||
*
|
||||
* ionViewDidLoad() {
|
||||
* this.admob.onAdDismiss()
|
||||
@@ -105,7 +117,13 @@ export interface AdExtras {
|
||||
* }
|
||||
*
|
||||
* onClick() {
|
||||
* this.admob.prepareInterstitial('YOUR_ADID')
|
||||
* let adId;
|
||||
* if(this.platform.is('android')) {
|
||||
* adId = 'YOUR_ADID_ANDROID';
|
||||
* } else if (this.platform.is('ios')) {
|
||||
* adId = 'YOUR_ADID_IOS';
|
||||
* }
|
||||
* this.admob.prepareInterstitial({adId: adId})
|
||||
* .then(() => { this.admob.showInterstitial(); });
|
||||
* }
|
||||
*
|
||||
@@ -116,15 +134,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;
|
||||
TOP_LEFT: number;
|
||||
@@ -153,11 +170,13 @@ export class AdMob extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Create a banner
|
||||
* @param adIdOrOptions {string | AdMobOptions} Ad ID or Options
|
||||
* @param {string | AdMobOptions} adIdOrOptions Ad ID or Options
|
||||
* @returns {Promise<any>} Returns a Promise that resolves when the banner is created
|
||||
*/
|
||||
@Cordova()
|
||||
createBanner(adIdOrOptions: string | AdMobOptions): Promise<any> { return; }
|
||||
createBanner(adIdOrOptions: string | AdMobOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy the banner, remove it from screen.
|
||||
@@ -165,26 +184,26 @@ export class AdMob extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
removeBanner(): void { }
|
||||
removeBanner(): void {}
|
||||
|
||||
/**
|
||||
* Show banner at position
|
||||
* @param position {number} Position. Use `AdMob.AD_POSITION` to set values.
|
||||
* @param {number} position Position. Use `AdMobPro.AD_POSITION` to set values.
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
showBanner(position: number): void { }
|
||||
showBanner(position: number): void {}
|
||||
|
||||
/**
|
||||
* Show banner at custom position
|
||||
* @param x {number} Offset from screen left.
|
||||
* @param y {number} Offset from screen top.
|
||||
* @param {number} x Offset from screen left.
|
||||
* @param {number} y Offset from screen top.
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
showBannerAtXY(x: number, y: number): void { }
|
||||
showBannerAtXY(x: number, y: number): void {}
|
||||
|
||||
/**
|
||||
* Hide the banner, remove it from screen, but can show it later
|
||||
@@ -192,15 +211,17 @@ export class AdMob extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
hideBanner(): void { }
|
||||
hideBanner(): void {}
|
||||
|
||||
/**
|
||||
* Prepare interstitial banner
|
||||
* @param adIdOrOptions {string | AdMobOptions} Ad ID or Options
|
||||
* @param {string | AdMobOptions} adIdOrOptions Ad ID or Options
|
||||
* @returns {Promise<any>} Returns a Promise that resolves when interstitial is prepared
|
||||
*/
|
||||
@Cordova()
|
||||
prepareInterstitial(adIdOrOptions: string | AdMobOptions): Promise<any> { return; }
|
||||
prepareInterstitial(adIdOrOptions: string | AdMobOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show interstitial ad when it's ready
|
||||
@@ -208,15 +229,17 @@ export class AdMob extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
showInterstitial(): void { }
|
||||
showInterstitial(): void {}
|
||||
|
||||
/**
|
||||
* Prepare a reward video ad
|
||||
* @param adIdOrOptions {string | AdMobOptions} Ad ID or Options
|
||||
* @param {string | AdMobOptions} adIdOrOptions Ad ID or Options
|
||||
* @returns {Promise<any>} Returns a Promise that resolves when the ad is prepared
|
||||
*/
|
||||
@Cordova()
|
||||
prepareRewardVideoAd(adIdOrOptions: string | AdMobOptions): Promise<any> { return; }
|
||||
prepareRewardVideoAd(adIdOrOptions: string | AdMobOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show a reward video ad
|
||||
@@ -224,22 +247,26 @@ export class AdMob extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
showRewardVideoAd(): void { }
|
||||
showRewardVideoAd(): void {}
|
||||
|
||||
/**
|
||||
* Sets the values for configuration and targeting
|
||||
* @param options {AdMobOptions} Options
|
||||
* @param {AdMobOptions} options Options
|
||||
* @returns {Promise<any>} Returns a Promise that resolves when the options have been set
|
||||
*/
|
||||
@Cordova()
|
||||
setOptions(options: AdMobOptions): Promise<any> { return; }
|
||||
setOptions(options: AdMobOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user ad settings
|
||||
* @returns {Promise<any>} Returns a promise that resolves with the ad settings
|
||||
*/
|
||||
@Cordova()
|
||||
getAdSettings(): Promise<any> { return; }
|
||||
getAdSettings(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when failed to receive Ad
|
||||
@@ -250,7 +277,9 @@ export class AdMob extends IonicNativePlugin {
|
||||
event: 'onAdFailLoad',
|
||||
element: document
|
||||
})
|
||||
onAdFailLoad(): Observable<any> { return; }
|
||||
onAdFailLoad(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when Ad received
|
||||
@@ -261,7 +290,9 @@ export class AdMob extends IonicNativePlugin {
|
||||
event: 'onAdLoaded',
|
||||
element: document
|
||||
})
|
||||
onAdLoaded(): Observable<any> { return; }
|
||||
onAdLoaded(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when Ad will be showed on screen
|
||||
@@ -272,7 +303,9 @@ export class AdMob extends IonicNativePlugin {
|
||||
event: 'onAdPresent',
|
||||
element: document
|
||||
})
|
||||
onAdPresent(): Observable<any> { return; }
|
||||
onAdPresent(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when user click the Ad, and will jump out of your App
|
||||
@@ -283,7 +316,9 @@ export class AdMob extends IonicNativePlugin {
|
||||
event: 'onAdLeaveApp',
|
||||
element: document
|
||||
})
|
||||
onAdLeaveApp(): Observable<any> { return; }
|
||||
onAdLeaveApp(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggered when dismiss the Ad and back to your App
|
||||
@@ -294,6 +329,7 @@ export class AdMob extends IonicNativePlugin {
|
||||
event: 'onAdDismiss',
|
||||
element: document
|
||||
})
|
||||
onAdDismiss(): Observable<any> { return; }
|
||||
|
||||
onAdDismiss(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
66
src/@ionic-native/plugins/aes-256/index.ts
Normal file
66
src/@ionic-native/plugins/aes-256/index.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name AES256
|
||||
* @description
|
||||
* This cordova ionic plugin allows you to perform AES 256 encryption and decryption on the plain text.
|
||||
* It's a cross-platform plugin which supports both Android and iOS.
|
||||
* The encryption and decryption are performed on the device native layer so that the performance is much faster.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AES256 } from '@ionic-native/aes-256';
|
||||
*
|
||||
*
|
||||
* constructor(private aES256: AES256) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.aES256.encrypt('12345678123456781234567812345678', '1234567812345678', 'testdata')
|
||||
* .then(res => console.log('Encrypted Data: ',res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* this.aES256.decrypt('12345678123456781234567812345678', '1234567812345678', 'encryptedData')
|
||||
* .then(res => console.log('Decrypted Data : ',res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AES256',
|
||||
plugin: 'cordova-plugin-aes256-encryption',
|
||||
pluginRef: 'cordova.plugins.AES256',
|
||||
repo: 'https://github.com/Ideas2IT/cordova-aes256',
|
||||
platforms: ['Android', 'iOS'],
|
||||
install: 'ionic cordova plugin add cordova-plugin-aes256-encryption'
|
||||
})
|
||||
@Injectable()
|
||||
export class AES256 extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* This function used to perform the aes256 encryption
|
||||
* @param {string} secureKey A 32 bytes string, which will used as input key for AES256 encryption.
|
||||
* @param {string} secureIV A 16 bytes string, which will used as initial vector for AES256 encryption.
|
||||
* @param {string} data A string which will be encrypted
|
||||
* @return {Promise<string>} Returns a promise that resolves when encryption happens. The success response will returns encrypted data.
|
||||
*/
|
||||
@Cordova()
|
||||
encrypt(secureKey: string, secureIV: string, data: string): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function used to perform the aes256 decryption
|
||||
* @param {string} secureKey A 32 bytes string, which will used as input key for AES256 decryption.
|
||||
* @param {string} secureIV A 16 bytes string, which will used as initial vector for AES256 decryption.
|
||||
* @param {string} data An AES256 encrypted data which will be decrypted.
|
||||
* @return {Promise<string>} Returns a promise that resolves when decryption happens. The success response will returns decrypted data.
|
||||
*/
|
||||
@Cordova()
|
||||
decrypt(secureKey: string, secureIV: string, data: string): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,83 +1,20 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
export interface AlipayOrder {
|
||||
/**
|
||||
* appId assigned by Alipay
|
||||
*/
|
||||
app_id: string;
|
||||
|
||||
/**
|
||||
* Api name.
|
||||
* Should be: alipay.trade.app.pay
|
||||
*/
|
||||
method: string;
|
||||
|
||||
/**
|
||||
* Data format
|
||||
* Default: "JSON"
|
||||
*/
|
||||
format?: string;
|
||||
|
||||
/**
|
||||
* Charset
|
||||
* Possible values: "UTF-8", "GBK"
|
||||
* Default: "UTF-8"
|
||||
*/
|
||||
charset: string;
|
||||
|
||||
/**
|
||||
* Sign method
|
||||
* Default: 'RSA'
|
||||
*/
|
||||
sign_type: string;
|
||||
|
||||
/**
|
||||
* Sign value. Should be got from server side.
|
||||
* Default: 'RSA'
|
||||
*/
|
||||
sign: string;
|
||||
|
||||
/**
|
||||
* Timestamp, formated like "yyyy-MM-dd HH:mm:ss", e.g. 2014-07-24 03:07:50
|
||||
*/
|
||||
timestamp: string;
|
||||
|
||||
/**
|
||||
* Api version. Fixed value '1.0'
|
||||
*/
|
||||
version: string;
|
||||
|
||||
/**
|
||||
* Notify url.
|
||||
*/
|
||||
notify_url: string;
|
||||
|
||||
/**
|
||||
* biz content. formated in json. see alipay doc for detail.
|
||||
*/
|
||||
biz_content: string;
|
||||
}
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Alipay
|
||||
* @description
|
||||
* This plugin is used for Alipay APP support. Integrated with the latest SDK.
|
||||
* This plugin facilitates the usage of Alipay 支付宝 in an Ionic apps with the integrated AlipaySDK dated on 20180601.
|
||||
*
|
||||
* Requires Cordova plugin: `cordova-alipay-base`. For more info, please see the [Alipay plugin docs](https://github.com/xueron/cordova-alipay-base).
|
||||
* Requires Cordova plugin: `cordova-plugin-gubnoi-alipay`. For more info, please see https://github.com/jing-zhou/cordova-plugin-alipay .
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* import { Alipay, AlipayOrder } from '@ionic-native/alipay';
|
||||
* ```typescript
|
||||
* import { Alipay } from '@ionic-native/alipay';
|
||||
*
|
||||
* constructor(private alipay: Alipay) {
|
||||
*
|
||||
* // Should get from server side with sign.
|
||||
* const alipayOrder: AlipayOrder = {
|
||||
* ...
|
||||
* };
|
||||
*
|
||||
*
|
||||
* //alipayOrder is a string that has been generated and signed by the server side.
|
||||
* this.alipay.pay(alipayOrder)
|
||||
* .then(result => {
|
||||
* console.log(result); // Success
|
||||
@@ -88,28 +25,26 @@ export interface AlipayOrder {
|
||||
*
|
||||
* }
|
||||
*
|
||||
*
|
||||
* ```
|
||||
*
|
||||
* @interfaces
|
||||
* AlipayOrder
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Alipay',
|
||||
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'
|
||||
plugin: 'cordova-plugin-gubnoi-alipay',
|
||||
pluginRef: 'Alipay',
|
||||
repo: 'https://github.com/jing-zhou/cordova-plugin-alipay',
|
||||
install: 'ionic cordova plugin add cordova-plugin-gubnoi-alipay --variable APP_ID=your_app_id',
|
||||
installVariables: ['APP_ID'],
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class Alipay extends IonicNativePlugin {
|
||||
/**
|
||||
* Open Alipay to perform App pay
|
||||
* @param order { AlipayOrder } alipay options
|
||||
* @param {string} order alipay order string
|
||||
* @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: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
298
src/@ionic-native/plugins/android-exoplayer/index.ts
Normal file
298
src/@ionic-native/plugins/android-exoplayer/index.ts
Normal file
@@ -0,0 +1,298 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } 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;
|
||||
|
||||
/**
|
||||
* Pause 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 {AndroidExoPlayerParams} parameters 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 {string} url The url of the new stream.
|
||||
* @param {AndroidExoPlayerControllerConfig} controller 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 {number} milliseconds 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 {number} milliseconds 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 {AndroidExoPlayerControllerConfig} controller 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;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AFAAuthOptions {
|
||||
|
||||
/**
|
||||
* Required
|
||||
* Used as the alias for your key in the Android Key Store.
|
||||
@@ -62,7 +60,6 @@ export interface AFAAuthOptions {
|
||||
* Set the hint displayed by the fingerprint icon on the fingerprint authentication dialog.
|
||||
*/
|
||||
dialogHint?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface AFADecryptOptions {
|
||||
@@ -96,13 +93,24 @@ export interface AFAEncryptResponse {
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface AFAAvailableResponse {
|
||||
isAvailable: boolean;
|
||||
isHardwareDetected: boolean;
|
||||
hasEnrolledFingerprints: boolean;
|
||||
}
|
||||
|
||||
export interface AFADeleteOptions {
|
||||
clientId: string;
|
||||
username: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Android Fingerprint Auth
|
||||
* @description
|
||||
* This plugin will open a native dialog fragment prompting the user to authenticate using their fingerprint. If the device has a secure lockscreen (pattern, PIN, or password), the user may opt to authenticate using that method as a backup.
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AndroidFingerprintAuth, AFAAuthOptions } from '@ionic-native/android-fingerprint-auth';
|
||||
* import { AndroidFingerprintAuth } from '@ionic-native/android-fingerprint-auth';
|
||||
*
|
||||
* constructor(private androidFingerprintAuth: AndroidFingerprintAuth) { }
|
||||
*
|
||||
@@ -114,18 +122,18 @@ export interface AFAEncryptResponse {
|
||||
* if(result.isAvailable){
|
||||
* // it is available
|
||||
*
|
||||
* this.androidFingerprintAuth.encrypt({ clientId: "myAppName", username: "myUsername", password: "myPassword" })
|
||||
* this.androidFingerprintAuth.encrypt({ clientId: 'myAppName', username: 'myUsername', password: 'myPassword' })
|
||||
* .then(result => {
|
||||
* if (result.withFingerprint) {
|
||||
* console.log("Successfully encrypted credentials.");
|
||||
* console.log("Encrypted credentials: " + result.token);
|
||||
* console.log('Successfully encrypted credentials.');
|
||||
* console.log('Encrypted credentials: ' + result.token);
|
||||
* } else if (result.withBackup) {
|
||||
* console.log('Successfully authenticated with backup password!');
|
||||
* } else console.log('Didn\'t authenticate!');
|
||||
* })
|
||||
* .catch(error => {
|
||||
* if (error === "Cancelled") {
|
||||
* console.log("Fingerprint authentication cancelled");
|
||||
* if (error === this.androidFingerprintAuth.ERRORS.FINGERPRINT_CANCELLED) {
|
||||
* console.log('Fingerprint authentication cancelled');
|
||||
* } else console.error(error)
|
||||
* });
|
||||
*
|
||||
@@ -139,6 +147,8 @@ export interface AFAEncryptResponse {
|
||||
* AFAAuthOptions
|
||||
* AFAEncryptResponse
|
||||
* AFADecryptOptions
|
||||
* AFAAvailableResponse
|
||||
* AFADeleteOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AndroidFingerprintAuth',
|
||||
@@ -149,34 +159,85 @@ export interface AFAEncryptResponse {
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidFingerprintAuth extends IonicNativePlugin {
|
||||
/**
|
||||
* Convenience property containing all possible errors
|
||||
*/
|
||||
ERRORS: {
|
||||
BAD_PADDING_EXCEPTION: string;
|
||||
CERTIFICATE_EXCEPTION: string;
|
||||
FINGERPRINT_CANCELLED: string;
|
||||
FINGERPRINT_DATA_NOT_DELETED: string;
|
||||
FINGERPRINT_ERROR: string;
|
||||
FINGERPRINT_NOT_AVAILABLE: string;
|
||||
FINGERPRINT_PERMISSION_DENIED: string;
|
||||
FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST: string;
|
||||
ILLEGAL_BLOCK_SIZE_EXCEPTION: string;
|
||||
INIT_CIPHER_FAILED: string;
|
||||
INVALID_ALGORITHM_PARAMETER_EXCEPTION: string;
|
||||
IO_EXCEPTION: string;
|
||||
JSON_EXCEPTION: string;
|
||||
MINIMUM_SDK: string;
|
||||
MISSING_ACTION_PARAMETERS: string;
|
||||
MISSING_PARAMETERS: string;
|
||||
NO_SUCH_ALGORITHM_EXCEPTION: string;
|
||||
SECURITY_EXCEPTION: string;
|
||||
} = {
|
||||
BAD_PADDING_EXCEPTION: 'BAD_PADDING_EXCEPTION',
|
||||
CERTIFICATE_EXCEPTION: 'CERTIFICATE_EXCEPTION',
|
||||
FINGERPRINT_CANCELLED: 'FINGERPRINT_CANCELLED',
|
||||
FINGERPRINT_DATA_NOT_DELETED: 'FINGERPRINT_DATA_NOT_DELETED',
|
||||
FINGERPRINT_ERROR: 'FINGERPRINT_ERROR',
|
||||
FINGERPRINT_NOT_AVAILABLE: 'FINGERPRINT_NOT_AVAILABLE',
|
||||
FINGERPRINT_PERMISSION_DENIED: 'FINGERPRINT_PERMISSION_DENIED',
|
||||
FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST: 'FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST',
|
||||
ILLEGAL_BLOCK_SIZE_EXCEPTION: 'ILLEGAL_BLOCK_SIZE_EXCEPTION',
|
||||
INIT_CIPHER_FAILED: 'INIT_CIPHER_FAILED',
|
||||
INVALID_ALGORITHM_PARAMETER_EXCEPTION: 'INVALID_ALGORITHM_PARAMETER_EXCEPTION',
|
||||
IO_EXCEPTION: 'IO_EXCEPTION',
|
||||
JSON_EXCEPTION: 'JSON_EXCEPTION',
|
||||
MINIMUM_SDK: 'MINIMUM_SDK',
|
||||
MISSING_ACTION_PARAMETERS: 'MISSING_ACTION_PARAMETERS',
|
||||
MISSING_PARAMETERS: 'MISSING_PARAMETERS',
|
||||
NO_SUCH_ALGORITHM_EXCEPTION: 'NO_SUCH_ALGORITHM_EXCEPTION',
|
||||
SECURITY_EXCEPTION: 'SECURITY_EXCEPTION'
|
||||
};
|
||||
|
||||
/**
|
||||
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
|
||||
* @param options {AFAAuthOptions} Options
|
||||
* @returns {Promise<any>}
|
||||
* @param {AFAAuthOptions} options Options
|
||||
* @returns {Promise<AFAEncryptResponse>}
|
||||
*/
|
||||
@Cordova()
|
||||
encrypt(options: AFAAuthOptions): Promise<AFAEncryptResponse> {return; }
|
||||
encrypt(options: AFAAuthOptions): Promise<AFAEncryptResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
|
||||
* @param options {AFAAuthOptions} Options
|
||||
* @returns {Promise<any>}
|
||||
* @param {AFAAuthOptions} options Options
|
||||
* @returns {Promise<AFADecryptOptions>}
|
||||
*/
|
||||
@Cordova()
|
||||
decrypt(options: AFAAuthOptions): Promise<AFADecryptOptions> {return; }
|
||||
decrypt(options: AFAAuthOptions): Promise<AFADecryptOptions> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if service is available
|
||||
* @returns {Promise<any>} Returns a Promise that resolves if fingerprint auth is available on the device
|
||||
* @returns {Promise<AFAAvailableResponse>} Returns a Promise that resolves if fingerprint auth is available on the device
|
||||
*/
|
||||
@Cordova()
|
||||
isAvailable(): Promise<{isAvailable: boolean}> { return; }
|
||||
isAvailable(): Promise<AFAAvailableResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the cipher used for encryption and decryption by username
|
||||
* @returns {Promise<any>} Returns a Promise that resolves if the cipher was successfully deleted
|
||||
* @param {AFADeleteOptions} options Options
|
||||
* @returns {Promise<{ deleted: boolean }>} Returns a Promise that resolves if the cipher was successfully deleted
|
||||
*/
|
||||
@Cordova()
|
||||
delete(options: {clientId: string; username: string; }): Promise<{deleted: boolean}> { return; }
|
||||
delete(options: AFADeleteOptions): Promise<{ deleted: boolean }> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,33 @@
|
||||
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,
|
||||
/** 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
|
||||
@@ -16,8 +43,8 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
* ...
|
||||
*
|
||||
* this.androidFullScreen.isImmersiveModeSupported()
|
||||
* .then(() => this.androidFullScreen.immersiveMode())
|
||||
* .catch((error: any) => console.log(error));
|
||||
* .then(() => console.log('Immersive mode supported'))
|
||||
* .catch(err => console.log(err));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@@ -92,4 +119,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; }
|
||||
}
|
||||
|
||||
243
src/@ionic-native/plugins/android-permissions/index.ts
Normal file
243
src/@ionic-native/plugins/android-permissions/index.ts
Normal file
@@ -0,0 +1,243 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Android Permissions
|
||||
* @description
|
||||
* This plugin is designed to support Android new permissions checking mechanism.
|
||||
*
|
||||
* You can find all permissions here: https://developer.android.com/reference/android/Manifest.permission.html
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* import { AndroidPermissions } from '@ionic-native/android-permissions';
|
||||
*
|
||||
*
|
||||
* constructor(private androidPermissions: AndroidPermissions) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
|
||||
* 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',
|
||||
plugin: 'cordova-plugin-android-permissions',
|
||||
pluginRef: 'cordova.plugins.permissions',
|
||||
repo: 'https://github.com/NeoLSN/cordova-plugin-android-permissions',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidPermissions extends IonicNativePlugin {
|
||||
PERMISSION: any = {
|
||||
ACCESS_CHECKIN_PROPERTIES: 'android.permission.ACCESS_CHECKIN_PROPERTIES',
|
||||
ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',
|
||||
ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',
|
||||
ACCESS_LOCATION_EXTRA_COMMANDS:
|
||||
'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS',
|
||||
ACCESS_MOCK_LOCATION: 'android.permission.ACCESS_MOCK_LOCATION',
|
||||
ACCESS_NETWORK_STATE: 'android.permission.ACCESS_NETWORK_STATE',
|
||||
ACCESS_SURFACE_FLINGER: 'android.permission.ACCESS_SURFACE_FLINGER',
|
||||
ACCESS_WIFI_STATE: 'android.permission.ACCESS_WIFI_STATE',
|
||||
ACCOUNT_MANAGER: 'android.permission.ACCOUNT_MANAGER',
|
||||
ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',
|
||||
AUTHENTICATE_ACCOUNTS: 'android.permission.AUTHENTICATE_ACCOUNTS',
|
||||
BATTERY_STATS: 'android.permission.BATTERY_STATS',
|
||||
BIND_ACCESSIBILITY_SERVICE: 'android.permission.BIND_ACCESSIBILITY_SERVICE',
|
||||
BIND_APPWIDGET: 'android.permission.BIND_APPWIDGET',
|
||||
BIND_CARRIER_MESSAGING_SERVICE:
|
||||
'android.permission.BIND_CARRIER_MESSAGING_SERVICE',
|
||||
BIND_DEVICE_ADMIN: 'android.permission.BIND_DEVICE_ADMIN',
|
||||
BIND_DREAM_SERVICE: 'android.permission.BIND_DREAM_SERVICE',
|
||||
BIND_INPUT_METHOD: 'android.permission.BIND_INPUT_METHOD',
|
||||
BIND_NFC_SERVICE: 'android.permission.BIND_NFC_SERVICE',
|
||||
BIND_NOTIFICATION_LISTENER_SERVICE:
|
||||
'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE',
|
||||
BIND_PRINT_SERVICE: 'android.permission.BIND_PRINT_SERVICE',
|
||||
BIND_REMOTEVIEWS: 'android.permission.BIND_REMOTEVIEWS',
|
||||
BIND_TEXT_SERVICE: 'android.permission.BIND_TEXT_SERVICE',
|
||||
BIND_TV_INPUT: 'android.permission.BIND_TV_INPUT',
|
||||
BIND_VOICE_INTERACTION: 'android.permission.BIND_VOICE_INTERACTION',
|
||||
BIND_VPN_SERVICE: 'android.permission.BIND_VPN_SERVICE',
|
||||
BIND_WALLPAPER: 'android.permission.BIND_WALLPAPER',
|
||||
BLUETOOTH: 'android.permission.BLUETOOTH',
|
||||
BLUETOOTH_ADMIN: 'android.permission.BLUETOOTH_ADMIN',
|
||||
BLUETOOTH_PRIVILEGED: 'android.permission.BLUETOOTH_PRIVILEGED',
|
||||
BODY_SENSORS: 'android.permission.BODY_SENSORS',
|
||||
BRICK: 'android.permission.BRICK',
|
||||
BROADCAST_PACKAGE_REMOVED: 'android.permission.BROADCAST_PACKAGE_REMOVED',
|
||||
BROADCAST_SMS: 'android.permission.BROADCAST_SMS',
|
||||
BROADCAST_STICKY: 'android.permission.BROADCAST_STICKY',
|
||||
BROADCAST_WAP_PUSH: 'android.permission.BROADCAST_WAP_PUSH',
|
||||
CALL_PHONE: 'android.permission.CALL_PHONE',
|
||||
CALL_PRIVILEGED: 'android.permission.CALL_PRIVILEGED',
|
||||
CAMERA: 'android.permission.CAMERA',
|
||||
CAPTURE_AUDIO_OUTPUT: 'android.permission.CAPTURE_AUDIO_OUTPUT',
|
||||
CAPTURE_SECURE_VIDEO_OUTPUT:
|
||||
'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT',
|
||||
CAPTURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_VIDEO_OUTPUT',
|
||||
CHANGE_COMPONENT_ENABLED_STATE:
|
||||
'android.permission.CHANGE_COMPONENT_ENABLED_STATE',
|
||||
CHANGE_CONFIGURATION: 'android.permission.CHANGE_CONFIGURATION',
|
||||
CHANGE_NETWORK_STATE: 'android.permission.CHANGE_NETWORK_STATE',
|
||||
CHANGE_WIFI_MULTICAST_STATE:
|
||||
'android.permission.CHANGE_WIFI_MULTICAST_STATE',
|
||||
CHANGE_WIFI_STATE: 'android.permission.CHANGE_WIFI_STATE',
|
||||
CLEAR_APP_CACHE: 'android.permission.CLEAR_APP_CACHE',
|
||||
CLEAR_APP_USER_DATA: 'android.permission.CLEAR_APP_USER_DATA',
|
||||
CONTROL_LOCATION_UPDATES: 'android.permission.CONTROL_LOCATION_UPDATES',
|
||||
DELETE_CACHE_FILES: 'android.permission.DELETE_CACHE_FILES',
|
||||
DELETE_PACKAGES: 'android.permission.DELETE_PACKAGES',
|
||||
DEVICE_POWER: 'android.permission.DEVICE_POWER',
|
||||
DIAGNOSTIC: 'android.permission.DIAGNOSTIC',
|
||||
DISABLE_KEYGUARD: 'android.permission.DISABLE_KEYGUARD',
|
||||
DUMP: 'android.permission.DUMP',
|
||||
EXPAND_STATUS_BAR: 'android.permission.EXPAND_STATUS_BAR',
|
||||
FACTORY_TEST: 'android.permission.FACTORY_TEST',
|
||||
FLASHLIGHT: 'android.permission.FLASHLIGHT',
|
||||
FORCE_BACK: 'android.permission.FORCE_BACK',
|
||||
GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',
|
||||
GET_PACKAGE_SIZE: 'android.permission.GET_PACKAGE_SIZE',
|
||||
GET_TASKS: 'android.permission.GET_TASKS',
|
||||
GET_TOP_ACTIVITY_INFO: 'android.permission.GET_TOP_ACTIVITY_INFO',
|
||||
GLOBAL_SEARCH: 'android.permission.GLOBAL_SEARCH',
|
||||
HARDWARE_TEST: 'android.permission.HARDWARE_TEST',
|
||||
INJECT_EVENTS: 'android.permission.INJECT_EVENTS',
|
||||
INSTALL_LOCATION_PROVIDER: 'android.permission.INSTALL_LOCATION_PROVIDER',
|
||||
INSTALL_PACKAGES: 'android.permission.INSTALL_PACKAGES',
|
||||
INSTALL_SHORTCUT: 'com.android.launcher.permission.INSTALL_SHORTCUT',
|
||||
INTERNAL_SYSTEM_WINDOW: 'android.permission.INTERNAL_SYSTEM_WINDOW',
|
||||
INTERNET: 'android.permission.INTERNET',
|
||||
KILL_BACKGROUND_PROCESSES: 'android.permission.KILL_BACKGROUND_PROCESSES',
|
||||
LOCATION_HARDWARE: 'android.permission.LOCATION_HARDWARE',
|
||||
MANAGE_ACCOUNTS: 'android.permission.MANAGE_ACCOUNTS',
|
||||
MANAGE_APP_TOKENS: 'android.permission.MANAGE_APP_TOKENS',
|
||||
MANAGE_DOCUMENTS: 'android.permission.MANAGE_DOCUMENTS',
|
||||
MASTER_CLEAR: 'android.permission.MASTER_CLEAR',
|
||||
MEDIA_CONTENT_CONTROL: 'android.permission.MEDIA_CONTENT_CONTROL',
|
||||
MODIFY_AUDIO_SETTINGS: 'android.permission.MODIFY_AUDIO_SETTINGS',
|
||||
MODIFY_PHONE_STATE: 'android.permission.MODIFY_PHONE_STATE',
|
||||
MOUNT_FORMAT_FILESYSTEMS: 'android.permission.MOUNT_FORMAT_FILESYSTEMS',
|
||||
MOUNT_UNMOUNT_FILESYSTEMS: 'android.permission.MOUNT_UNMOUNT_FILESYSTEMS',
|
||||
NFC: 'android.permission.NFC',
|
||||
PERSISTENT_ACTIVITY: 'android.permission.PERSISTENT_ACTIVITY',
|
||||
PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',
|
||||
READ_CALENDAR: 'android.permission.READ_CALENDAR',
|
||||
READ_CALL_LOG: 'android.permission.READ_CALL_LOG',
|
||||
READ_CONTACTS: 'android.permission.READ_CONTACTS',
|
||||
READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',
|
||||
READ_FRAME_BUFFER: 'android.permission.READ_FRAME_BUFFER',
|
||||
READ_HISTORY_BOOKMARKS:
|
||||
'com.android.browser.permission.READ_HISTORY_BOOKMARKS',
|
||||
READ_INPUT_STATE: 'android.permission.READ_INPUT_STATE',
|
||||
READ_LOGS: 'android.permission.READ_LOGS',
|
||||
READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',
|
||||
READ_PROFILE: 'android.permission.READ_PROFILE',
|
||||
READ_SMS: 'android.permission.READ_SMS',
|
||||
READ_SOCIAL_STREAM: 'android.permission.READ_SOCIAL_STREAM',
|
||||
READ_SYNC_SETTINGS: 'android.permission.READ_SYNC_SETTINGS',
|
||||
READ_SYNC_STATS: 'android.permission.READ_SYNC_STATS',
|
||||
READ_USER_DICTIONARY: 'android.permission.READ_USER_DICTIONARY',
|
||||
READ_VOICEMAIL: 'com.android.voicemail.permission.READ_VOICEMAIL',
|
||||
REBOOT: 'android.permission.REBOOT',
|
||||
RECEIVE_BOOT_COMPLETED: 'android.permission.RECEIVE_BOOT_COMPLETED',
|
||||
RECEIVE_MMS: 'android.permission.RECEIVE_MMS',
|
||||
RECEIVE_SMS: 'android.permission.RECEIVE_SMS',
|
||||
RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',
|
||||
RECORD_AUDIO: 'android.permission.RECORD_AUDIO',
|
||||
REORDER_TASKS: 'android.permission.REORDER_TASKS',
|
||||
RESTART_PACKAGES: 'android.permission.RESTART_PACKAGES',
|
||||
SEND_RESPOND_VIA_MESSAGE: 'android.permission.SEND_RESPOND_VIA_MESSAGE',
|
||||
SEND_SMS: 'android.permission.SEND_SMS',
|
||||
SET_ACTIVITY_WATCHER: 'android.permission.SET_ACTIVITY_WATCHER',
|
||||
SET_ALARM: 'com.android.alarm.permission.SET_ALARM',
|
||||
SET_ALWAYS_FINISH: 'android.permission.SET_ALWAYS_FINISH',
|
||||
SET_ANIMATION_SCALE: 'android.permission.SET_ANIMATION_SCALE',
|
||||
SET_DEBUG_APP: 'android.permission.SET_DEBUG_APP',
|
||||
SET_ORIENTATION: 'android.permission.SET_ORIENTATION',
|
||||
SET_POINTER_SPEED: 'android.permission.SET_POINTER_SPEED',
|
||||
SET_PREFERRED_APPLICATIONS: 'android.permission.SET_PREFERRED_APPLICATIONS',
|
||||
SET_PROCESS_LIMIT: 'android.permission.SET_PROCESS_LIMIT',
|
||||
SET_TIME: 'android.permission.SET_TIME',
|
||||
SET_TIME_ZONE: 'android.permission.SET_TIME_ZONE',
|
||||
SET_WALLPAPER: 'android.permission.SET_WALLPAPER',
|
||||
SET_WALLPAPER_HINTS: 'android.permission.SET_WALLPAPER_HINTS',
|
||||
SIGNAL_PERSISTENT_PROCESSES:
|
||||
'android.permission.SIGNAL_PERSISTENT_PROCESSES',
|
||||
STATUS_BAR: 'android.permission.STATUS_BAR',
|
||||
SUBSCRIBED_FEEDS_READ: 'android.permission.SUBSCRIBED_FEEDS_READ',
|
||||
SUBSCRIBED_FEEDS_WRITE: 'android.permission.SUBSCRIBED_FEEDS_WRITE',
|
||||
SYSTEM_ALERT_WINDOW: 'android.permission.SYSTEM_ALERT_WINDOW',
|
||||
TRANSMIT_IR: 'android.permission.TRANSMIT_IR',
|
||||
UNINSTALL_SHORTCUT: 'com.android.launcher.permission.UNINSTALL_SHORTCUT',
|
||||
UPDATE_DEVICE_STATS: 'android.permission.UPDATE_DEVICE_STATS',
|
||||
USE_CREDENTIALS: 'android.permission.USE_CREDENTIALS',
|
||||
USE_SIP: 'android.permission.USE_SIP',
|
||||
VIBRATE: 'android.permission.VIBRATE',
|
||||
WAKE_LOCK: 'android.permission.WAKE_LOCK',
|
||||
WRITE_APN_SETTINGS: 'android.permission.WRITE_APN_SETTINGS',
|
||||
WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',
|
||||
WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',
|
||||
WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',
|
||||
WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
|
||||
WRITE_GSERVICES: 'android.permission.WRITE_GSERVICES',
|
||||
WRITE_HISTORY_BOOKMARKS:
|
||||
'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS',
|
||||
WRITE_PROFILE: 'android.permission.WRITE_PROFILE',
|
||||
WRITE_SECURE_SETTINGS: 'android.permission.WRITE_SECURE_SETTINGS',
|
||||
WRITE_SETTINGS: 'android.permission.WRITE_SETTINGS',
|
||||
WRITE_SMS: 'android.permission.WRITE_SMS',
|
||||
WRITE_SOCIAL_STREAM: 'android.permission.WRITE_SOCIAL_STREAM',
|
||||
WRITE_SYNC_SETTINGS: 'android.permission.WRITE_SYNC_SETTINGS',
|
||||
WRITE_USER_DICTIONARY: 'android.permission.WRITE_USER_DICTIONARY',
|
||||
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL'
|
||||
};
|
||||
|
||||
/**
|
||||
* Check permission
|
||||
* @param {string} permission The name of the permission
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
checkPermission(permission: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request permission
|
||||
* @param {string} permission The name of the permission to request
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
requestPermission(permission: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request permissions
|
||||
* @param {Array<string>} permissions An array with permissions
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
requestPermissions(permissions: string[]): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function still works now, will not support in the future.
|
||||
* @param {string} permission The name of the permission
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
hasPermission(permission: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -27,8 +27,8 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
*
|
||||
* this.appAvailability.check(app)
|
||||
* .then(
|
||||
* (yes: string) => console.log(app + ' is available'),
|
||||
* (no: string) => console.log(app + ' is NOT available')
|
||||
* (yes: boolean) => console.log(app + ' is available'),
|
||||
* (no: boolean) => console.log(app + ' is NOT available')
|
||||
* );
|
||||
* ```
|
||||
*/
|
||||
|
||||
78
src/@ionic-native/plugins/app-center-analytics/index.ts
Normal file
78
src/@ionic-native/plugins/app-center-analytics/index.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface StringMap {
|
||||
[s: string]: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name App Center Analytics
|
||||
* @description
|
||||
* App Center Analytics helps you understand user behavior and customer engagement to improve your app.
|
||||
* The SDK automatically captures session count and device properties like model, OS version, etc.
|
||||
* You can define your own custom events to measure things that matter to you.
|
||||
* All the information captured is available in the App Center portal for you to analyze the data.
|
||||
*
|
||||
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/analytics/cordova
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AppCenterAnalytics } from '@ionic-native/app-center-analytics';
|
||||
*
|
||||
*
|
||||
* constructor(private appCenterAnalytics: AppCenterAnalytics) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.appCenterAnalytics.setEnabled(true).then(() => {
|
||||
* this.appCenterAnalytics.trackEvent('My Event', { TEST: 'HELLO_WORLD' }).then(() => {
|
||||
* console.log('Custom event tracked');
|
||||
* });
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* StringMap
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppCenterAnalytics',
|
||||
plugin: 'cordova-plugin-appcenter-analytics',
|
||||
pluginRef: 'AppCenter.Analytics',
|
||||
repo:
|
||||
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-analytics',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppCenterAnalytics extends IonicNativePlugin {
|
||||
/**
|
||||
* Tracks an custom event.
|
||||
* You can send up to 200 distinct event names. Also, there is a maximum limit of 256 characters per event name
|
||||
* and 64 characters per event property name and event property value.
|
||||
* @param {string} eventName Event name
|
||||
* @param {StringMap} properties Event properties
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
trackEvent(eventName: string, properties: StringMap): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if App Center Analytics is enabled
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
isEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable App Center Analytics at runtime
|
||||
* @param {boolean} shouldEnable Set value
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setEnabled(shouldEnable: boolean): Promise<void> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
115
src/@ionic-native/plugins/app-center-crashes/index.ts
Normal file
115
src/@ionic-native/plugins/app-center-crashes/index.ts
Normal file
@@ -0,0 +1,115 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AppCenterCrashReport {
|
||||
id: string;
|
||||
device: AppCenterCrashReportDevice;
|
||||
appStartTime: number;
|
||||
appErrorTime: number;
|
||||
signal: string;
|
||||
appProcessIdentifier: number;
|
||||
}
|
||||
|
||||
export interface AppCenterCrashReportDevice {
|
||||
oem_name: string;
|
||||
os_name: string;
|
||||
app_version: string;
|
||||
time_zone_offset: number;
|
||||
carrier_name: string;
|
||||
screen_size: string;
|
||||
locale: string;
|
||||
sdk_version: string;
|
||||
carrier_country: string;
|
||||
os_build: string;
|
||||
app_namespace: string;
|
||||
os_version: string;
|
||||
sdk_name: string;
|
||||
model: string;
|
||||
app_build: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name App Center Crashes
|
||||
* @description
|
||||
* App Center Analytics helps you understand user behavior and customer engagement to improve your app.
|
||||
* The SDK automatically captures session count and device properties like model, OS version, etc.
|
||||
* You can define your own custom events to measure things that matter to you.
|
||||
* All the information captured is available in the App Center portal for you to analyze the data.
|
||||
*
|
||||
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/crashes/cordova
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AppCenterCrashes } from '@ionic-native/app-center-crashes';
|
||||
*
|
||||
*
|
||||
* constructor(private AppCenterCrashes: AppCenterCrashes) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.AppCenterCrashes.setEnabled(true).then(() => {
|
||||
* this.AppCenterCrashes.lastSessionCrashReport().then(report => {
|
||||
* console.log('Crash report', report);
|
||||
* });
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* AppCenterCrashReport
|
||||
* AppCenterCrashReportDevice
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppCenterCrashes',
|
||||
plugin: 'cordova-plugin-appcenter-crashes',
|
||||
pluginRef: 'AppCenter.Crashes',
|
||||
repo:
|
||||
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-crashes',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppCenterCrashes extends IonicNativePlugin {
|
||||
/**
|
||||
* App Center Crashes provides you with an API to generate a test crash for easy testing of the SDK.
|
||||
* This API can only be used in test/beta apps and won't do anything in production apps.
|
||||
* @returns void
|
||||
*/
|
||||
@Cordova()
|
||||
generateTestCrash(): void {}
|
||||
|
||||
/**
|
||||
* At any time after starting the SDK, you can check if the app crashed in the previous launch
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
hasCrashedInLastSession(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Details about the last crash
|
||||
* @returns {Promise<AppCenterCrashReport>}
|
||||
*/
|
||||
@Cordova()
|
||||
lastSessionCrashReport(): Promise<AppCenterCrashReport> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if App Center Crashes is enabled
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
isEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable App Center Crashes at runtime
|
||||
* @param {boolean} shouldEnable Set value
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setEnabled(shouldEnable: boolean): Promise<void> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
68
src/@ionic-native/plugins/app-center-push/index.ts
Normal file
68
src/@ionic-native/plugins/app-center-push/index.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
/**
|
||||
* @name App Center Push
|
||||
* @description
|
||||
*
|
||||
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/push/cordova
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AppCenterPush } from '@ionic-native/app-center-push';
|
||||
*
|
||||
*
|
||||
* constructor(private appCenterPush: AppCenterPush) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.appCenterPush.setEnabled(true).then(() => {
|
||||
* this.appCenterPush.addEventListener('My Event').subscribe(pushNotification => {
|
||||
* console.log('Recived push notification', pushNotification);
|
||||
* });
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppCenterPush',
|
||||
plugin: 'cordova-plugin-appcenter-push',
|
||||
pluginRef: 'AppCenter.Push',
|
||||
repo:
|
||||
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-push',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppCenterPush extends IonicNativePlugin {
|
||||
/**
|
||||
* Subscribe to an event
|
||||
* @param {string} eventName Event name
|
||||
* @returns {Observable<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
clearFunction: 'removeEventListener'
|
||||
})
|
||||
addEventListener(eventName: string): Observable<any> {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Check if App Center Push is enabled
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
isEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable App Center Push at runtime
|
||||
* @param {boolean} shouldEnable Set value
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setEnabled(shouldEnable: boolean): Promise<void> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
42
src/@ionic-native/plugins/app-minimize/index.ts
Normal file
42
src/@ionic-native/plugins/app-minimize/index.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
/**
|
||||
* @name App Minimize
|
||||
* @description
|
||||
* AppMinimize is a plugin to minimize the application on android devices
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Platfrom } from 'ionic-angular';
|
||||
* import { AppMinimize } from '@ionic-native/app-minimize';
|
||||
*
|
||||
*
|
||||
* constructor(private platform: Platform, private appMinimize: AppMinimize) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.platform.registerBackButtonAction(() => {
|
||||
* this.appMinimize.minimize();
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppMinimize',
|
||||
plugin: 'cordova-plugin-appminimize',
|
||||
pluginRef: 'plugins.appMinimize',
|
||||
repo: 'https://github.com/tomloprod/cordova-plugin-appminimize',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppMinimize extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Minimizes the application
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
minimize(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
@@ -11,11 +11,12 @@ import { Injectable } from '@angular/core';
|
||||
* ```typescript
|
||||
* import { AppPreferences } from '@ionic-native/app-preferences';
|
||||
*
|
||||
* constructor(private appPreferences: AppPreferences) {
|
||||
* constructor(private appPreferences: AppPreferences) { }
|
||||
*
|
||||
* this.appPreferences.fetch('key').then((res) => { console.log(res); });
|
||||
* ...
|
||||
*
|
||||
* this.appPreferences.fetch('key').then((res) => { console.log(res); });
|
||||
*
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
@@ -24,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 {
|
||||
@@ -46,13 +47,13 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
*
|
||||
* @param {string} dict Dictionary for key (OPTIONAL)
|
||||
* @param {string} key Key
|
||||
* @param {string} value Value
|
||||
* @param {any} value Value
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
store(dict: string, key: string, value?: string): Promise<any> {
|
||||
store(dict: string, key: string, value?: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -107,14 +108,16 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @returns {Object} Custom object, bound to that suite
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
sync: true
|
||||
})
|
||||
suite(suiteName: string): Object { return; }
|
||||
suite(suiteName: string): any { return; }
|
||||
|
||||
@Cordova({
|
||||
platforms: ['iOS']
|
||||
platforms: ['iOS'],
|
||||
sync: true
|
||||
})
|
||||
iosSuite(suiteName: string): Object { return; }
|
||||
iosSuite(suiteName: string): any { return; }
|
||||
|
||||
/**
|
||||
* Return cloud synchronized configuration context
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
|
||||
declare var window;
|
||||
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AppRatePreferences {
|
||||
|
||||
/**
|
||||
* Custom BCP 47 language tag
|
||||
*/
|
||||
@@ -26,10 +22,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`
|
||||
@@ -39,7 +40,7 @@ export interface AppRatePreferences {
|
||||
/**
|
||||
* Custom locale object
|
||||
*/
|
||||
customLocale?: any;
|
||||
customLocale?: AppRateCustomLocale;
|
||||
|
||||
/**
|
||||
* Callbacks for events
|
||||
@@ -50,11 +51,38 @@ export interface AppRatePreferences {
|
||||
* App Store URLS
|
||||
*/
|
||||
storeAppURL?: AppUrls;
|
||||
}
|
||||
|
||||
export interface AppRateCustomLocale {
|
||||
/** Title */
|
||||
title?: string;
|
||||
|
||||
/** Message */
|
||||
message?: string;
|
||||
|
||||
/** Cancel button label */
|
||||
cancelButtonLabel?: string;
|
||||
|
||||
/** Later button label */
|
||||
laterButtonLabel?: string;
|
||||
|
||||
/** Rate button label */
|
||||
rateButtonLabel?: string;
|
||||
|
||||
/** Yes button label */
|
||||
yesButtonLabel?: string;
|
||||
|
||||
/** No button label */
|
||||
noButtonLabel?: string;
|
||||
|
||||
/** App rate promt title */
|
||||
appRatePromptTitle?: string;
|
||||
|
||||
/** Feedback prompt title */
|
||||
feedbackPromptTitle?: string;
|
||||
}
|
||||
|
||||
export interface AppRateCallbacks {
|
||||
|
||||
/**
|
||||
* call back function. called when user clicked on rate-dialog buttons
|
||||
*/
|
||||
@@ -64,11 +92,13 @@ 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;
|
||||
}
|
||||
|
||||
export interface AppUrls {
|
||||
|
||||
/**
|
||||
* application id in AppStore
|
||||
*/
|
||||
@@ -93,7 +123,6 @@ export interface AppUrls {
|
||||
* application URL in WindowsStore
|
||||
*/
|
||||
windows8?: string;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,12 +139,24 @@ export interface AppUrls {
|
||||
* constructor(private appRate: AppRate) { }
|
||||
*
|
||||
* ...
|
||||
* // set certain preferences
|
||||
* this.appRate.preferences.storeAppURL = {
|
||||
* ios: '<app_id>',
|
||||
* android: 'market://details?id=<package_name>',
|
||||
* windows: 'ms-windows-store://review/?ProductId=<store_id>'
|
||||
* };
|
||||
*
|
||||
* this.appRate.preferences.storeAppURL = {
|
||||
* ios: '<my_app_id>',
|
||||
* this.appRate.promptForRating(true);
|
||||
*
|
||||
* // or, override the whole preferences object
|
||||
* this.appRate.preferences = {
|
||||
* usesUntilPrompt: 3,
|
||||
* storeAppURL: {
|
||||
* ios: '<app_id>',
|
||||
* android: 'market://details?id=<package_name>',
|
||||
* windows: 'ms-windows-store://review/?ProductId=<Store_ID>'
|
||||
* };
|
||||
* windows: 'ms-windows-store://review/?ProductId=<store_id>'
|
||||
* }
|
||||
* };
|
||||
*
|
||||
* this.appRate.promptForRating(false);
|
||||
* ```
|
||||
@@ -124,6 +165,7 @@ export interface AppUrls {
|
||||
* AppRatePreferences
|
||||
* AppUrls
|
||||
* AppRateCallbacks
|
||||
* AppRateCustomLocal
|
||||
*
|
||||
*/
|
||||
@Plugin({
|
||||
@@ -131,23 +173,26 @@ 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 {
|
||||
|
||||
/**
|
||||
* Configure various settings for the Rating View.
|
||||
* See table below for options
|
||||
*/
|
||||
@CordovaProperty
|
||||
preferences: AppRatePreferences;
|
||||
@CordovaProperty preferences: AppRatePreferences;
|
||||
|
||||
/**
|
||||
* Prompts the user for rating
|
||||
* @param {boolean} immediately Show the rating prompt immediately.
|
||||
*/
|
||||
@Cordova()
|
||||
promptForRating(immediately: boolean): void { };
|
||||
promptForRating(immediately: boolean): void {}
|
||||
|
||||
/**
|
||||
* Immediately send the user to the app store rating page
|
||||
*/
|
||||
@Cordova()
|
||||
navigateToAppStore(): void {}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AppUpdateOptions {
|
||||
authType: string;
|
||||
username?: string;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name App Update
|
||||
@@ -19,20 +25,20 @@ import { Injectable } from '@angular/core';
|
||||
*
|
||||
* Then use the following code:
|
||||
*
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { AppUpdate } from '@ionic-native/app-update';
|
||||
*
|
||||
* constructor(private appUpdate: AppUpdate) {
|
||||
*
|
||||
* const updateUrl = 'http://your-remote-api.com/update.xml';
|
||||
* this.appUpdate.checkAppUpdate(updateUrl);
|
||||
* const updateUrl = 'https://your-remote-api.com/update.xml';
|
||||
* this.appUpdate.checkAppUpdate(updateUrl).then(() => { console.log('Update available') });
|
||||
*
|
||||
* }
|
||||
*
|
||||
*
|
||||
* ```
|
||||
*
|
||||
* The plugin will compare the app version and update it automatically if the API has a newer version to install.
|
||||
* @interfaces
|
||||
* AppUpdateOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppUpdate',
|
||||
@@ -45,12 +51,14 @@ import { Injectable } from '@angular/core';
|
||||
export class AppUpdate extends IonicNativePlugin {
|
||||
/**
|
||||
* Check and update
|
||||
* @param updateUrl {string} update api url
|
||||
* @param {string} updateUrl update api url
|
||||
* @param {AppUpdateOptions} [options] options
|
||||
* @return {Promise<any>} Returns a promise that resolves when something happens
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
checkAppUpdate(updateUrl: string): Promise<any> { return; }
|
||||
checkAppUpdate(updateUrl: string, options?: AppUpdateOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,37 +31,39 @@ 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 {
|
||||
|
||||
/**
|
||||
* Returns the name of the app
|
||||
* @returns {Promise<any>}
|
||||
* Returns the name of the app, e.g.: "My Awesome App"
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
getAppName(): Promise<any> { return; }
|
||||
getAppName(): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Returns the package name of the app
|
||||
* @returns {Promise<any>}
|
||||
* Returns the package name of the app, e.g.: "com.example.myawesomeapp"
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
getPackageName(): Promise<any> { return; }
|
||||
getPackageName(): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Returns the build identifier of the app
|
||||
* @returns {Promise<any>}
|
||||
* Returns the build identifier of the app.
|
||||
* In iOS a string with the build version like "1.6095"
|
||||
* In Android a number generated from the version string, like 10203 for version "1.2.3"
|
||||
* @returns {Promise<string | number>}
|
||||
*/
|
||||
@Cordova()
|
||||
getVersionCode(): Promise<any> { return; }
|
||||
getVersionCode(): Promise<string | number> { return; }
|
||||
|
||||
/**
|
||||
* Returns the version of the app
|
||||
* @returns {Promise<any>}
|
||||
* Returns the version of the app, e.g.: "1.2.3"
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
getVersionNumber(): Promise<any> { return; }
|
||||
getVersionNumber(): Promise<string> { return; }
|
||||
|
||||
}
|
||||
|
||||
347
src/@ionic-native/plugins/apple-pay/index.ts
Normal file
347
src/@ionic-native/plugins/apple-pay/index.ts
Normal file
@@ -0,0 +1,347 @@
|
||||
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
|
||||
*
|
||||
* @param {IOrderItemsAndShippingMethods} list `items` and `shippingMethods` properties.
|
||||
* @returns {Promise<IUpdateItemsAndShippingStatus>}
|
||||
*
|
||||
* @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
|
||||
*
|
||||
* @param {IOrder} order
|
||||
* @return {Promise<IPaymentResponse>} Returns a promise that resolves when something happens
|
||||
*
|
||||
* @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 authorization 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.
|
||||
*
|
||||
* @param {ITransactionStatus} complete
|
||||
* @return {Promise<ICompleteTransaction>} Returns a promise that resolves after confirmation of payment authorization completion
|
||||
*
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
})
|
||||
completeLastTransaction(
|
||||
complete: ITransactionStatus
|
||||
): Promise<ICompleteTransaction> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
/**
|
||||
* @name Appodeal
|
||||
@@ -8,7 +8,7 @@ import { Injectable } from '@angular/core';
|
||||
* Plugin to serve ads through native Appodeal SDKs
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { Appodeal } from '@ionic-native/appodeal';
|
||||
*
|
||||
* constructor(private appodeal: Appodeal) {
|
||||
@@ -18,17 +18,14 @@ import { Injectable } from '@angular/core';
|
||||
* appodeal.show(appodeal.AD_TYPES.REWARDED_VIDEO);
|
||||
*
|
||||
* }
|
||||
*
|
||||
*
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@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',
|
||||
platforms: [ 'iOS', 'Android' ]
|
||||
repo: 'https://github.com/appodeal/appodeal-cordova-plugin',
|
||||
platforms: ['iOS', 'Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class Appodeal extends IonicNativePlugin {
|
||||
@@ -49,14 +46,16 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param {number} adType
|
||||
*/
|
||||
@Cordova()
|
||||
initialize(appKey: string, adType: number): void {};
|
||||
initialize(appKey: string, adType: number): void {}
|
||||
|
||||
/**
|
||||
* check if SDK has been initialized
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
isInitialized(): Promise<any> { return; };
|
||||
isInitialized(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* show ad of specified type
|
||||
@@ -64,7 +63,9 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
show(adType: number): Promise<any> { return; };
|
||||
show(adType: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* show ad of specified type with placement options
|
||||
@@ -73,24 +74,26 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
showWithPlacement(
|
||||
adType: number,
|
||||
placement: any
|
||||
): Promise<any> { return; };
|
||||
showWithPlacement(adType: number, placement: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* hide ad of specified type
|
||||
* @param {number} adType
|
||||
*/
|
||||
@Cordova()
|
||||
hide(adType: number): void {};
|
||||
hide(adType: number): void {}
|
||||
|
||||
/**
|
||||
* confirm use of ads of specified type
|
||||
* @param {number} adType
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
confirm(adType: number): void {};
|
||||
canShow(adType: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* check if ad of specified type has been loaded
|
||||
@@ -98,7 +101,9 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
isLoaded(adType: number): Promise<any> { return; };
|
||||
isLoaded(adType: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* check if ad of specified
|
||||
@@ -106,7 +111,9 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
isPrecache(adType: number): Promise<any> { return; };
|
||||
isPrecache(adType: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -114,75 +121,77 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param autoCache
|
||||
*/
|
||||
@Cordova()
|
||||
setAutoCache(adType: number, autoCache: any): void {};
|
||||
setAutoCache(adType: number, autoCache: any): void {}
|
||||
|
||||
/**
|
||||
* forcefully cache an ad by type
|
||||
* @param {number} adType
|
||||
*/
|
||||
@Cordova()
|
||||
cache(adType: number): void {};
|
||||
cache(adType: number): void {}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {boolean} set
|
||||
*/
|
||||
@Cordova()
|
||||
setOnLoadedTriggerBoth(set: boolean): void {};
|
||||
setTriggerOnLoadedOnPrecache(set: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable or disable Smart Banners
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
setSmartBanners(enabled: boolean): void {};
|
||||
setSmartBanners(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable or disable banner backgrounds
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
setBannerBackground(enabled: boolean): void {};
|
||||
setBannerBackground(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable or disable banner animations
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
setBannerAnimation(enabled: boolean): void {};
|
||||
setBannerAnimation(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param value
|
||||
*/
|
||||
@Cordova()
|
||||
set728x90Banners(value: any): void {};
|
||||
set728x90Banners(value: any): void {}
|
||||
|
||||
/**
|
||||
* enable or disable logging
|
||||
* @param {boolean} logging
|
||||
*/
|
||||
@Cordova()
|
||||
setLogging(logging: boolean): void {};
|
||||
setLogLevel(logging: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable or disable testing mode
|
||||
* @param {boolean} testing
|
||||
*/
|
||||
@Cordova()
|
||||
setTesting(testing: boolean): void {};
|
||||
setTesting(testing: boolean): void {}
|
||||
|
||||
/**
|
||||
* reset device ID
|
||||
*/
|
||||
@Cordova()
|
||||
resetUUID(): void {};
|
||||
resetUUID(): void {}
|
||||
|
||||
/**
|
||||
* get version of Appdeal SDK
|
||||
*/
|
||||
@Cordova()
|
||||
getVersion(): Promise<any> { return; };
|
||||
getVersion(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -190,7 +199,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param {number} adType
|
||||
*/
|
||||
@Cordova()
|
||||
disableNetwork(network?: string, adType?: number): void {};
|
||||
disableNetwork(network?: string, adType?: number): void {}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -198,54 +207,54 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param {number} adType
|
||||
*/
|
||||
@Cordova()
|
||||
disableNetworkType(network?: string, adType?: number): void {};
|
||||
disableNetworkType(network?: string, adType?: number): void {}
|
||||
|
||||
/**
|
||||
* disable Location permissions for Appodeal SDK
|
||||
*/
|
||||
@Cordova()
|
||||
disableLocationPermissionCheck(): void {};
|
||||
disableLocationPermissionCheck(): void {}
|
||||
|
||||
/**
|
||||
* disable Storage permissions for Appodeal SDK
|
||||
*/
|
||||
@Cordova()
|
||||
disableWriteExternalStoragePermissionCheck(): void {};
|
||||
disableWriteExternalStoragePermissionCheck(): void {}
|
||||
|
||||
/**
|
||||
* enable event listeners
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
enableInterstitialCallbacks(enabled: boolean): void {};
|
||||
enableInterstitialCallbacks(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable event listeners
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
enableSkippableVideoCallbacks(enabled: boolean): void {};
|
||||
enableSkippableVideoCallbacks(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable event listeners
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
enableNonSkippableVideoCallbacks(enabled: boolean): void {};
|
||||
enableNonSkippableVideoCallbacks(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable event listeners
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
enableBannerCallbacks(enabled: boolean): void {};
|
||||
enableBannerCallbacks(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
* enable event listeners
|
||||
* @param {boolean} enabled
|
||||
*/
|
||||
@Cordova()
|
||||
enableRewardedVideoCallbacks(enabled: boolean): void {};
|
||||
enableRewardedVideoCallbacks(enabled: boolean): void {}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -253,7 +262,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param {boolean} value
|
||||
*/
|
||||
@Cordova()
|
||||
setCustomBooleanRule(name: string, value: boolean): void {};
|
||||
setCustomBooleanRule(name: string, value: boolean): void {}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -261,7 +270,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param {number} value
|
||||
*/
|
||||
@Cordova()
|
||||
setCustomIntegerRule(name: string, value: number): void {};
|
||||
setCustomIntegerRule(name: string, value: number): void {}
|
||||
|
||||
/**
|
||||
* set rule with float value
|
||||
@@ -269,7 +278,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param {number} value
|
||||
*/
|
||||
@Cordova()
|
||||
setCustomDoubleRule(name: string, value: number): void {};
|
||||
setCustomDoubleRule(name: string, value: number): void {}
|
||||
|
||||
/**
|
||||
* set rule with string value
|
||||
@@ -277,243 +286,321 @@ export class Appodeal extends IonicNativePlugin {
|
||||
* @param {string} value
|
||||
*/
|
||||
@Cordova()
|
||||
setCustomStringRule(name: string, value: string): void {};
|
||||
setCustomStringRule(name: string, value: string): void {}
|
||||
|
||||
/**
|
||||
* set ID preference in Appodeal for current user
|
||||
* @param id
|
||||
*/
|
||||
@Cordova()
|
||||
setUserId(id: any): void {};
|
||||
setUserId(id: any): void {}
|
||||
|
||||
/**
|
||||
* set Email preference in Appodeal for current user
|
||||
* @param email
|
||||
*/
|
||||
@Cordova()
|
||||
setEmail(email: any): void {};
|
||||
setEmail(email: any): void {}
|
||||
|
||||
/**
|
||||
* set Birthday preference in Appodeal for current user
|
||||
* @param birthday
|
||||
*/
|
||||
@Cordova()
|
||||
setBirthday(birthday: any): void {};
|
||||
setBirthday(birthday: any): void {}
|
||||
|
||||
/**
|
||||
* et Age preference in Appodeal for current user
|
||||
* @param age
|
||||
*/
|
||||
@Cordova()
|
||||
setAge(age: any): void {};
|
||||
setAge(age: any): void {}
|
||||
|
||||
/**
|
||||
* set Gender preference in Appodeal for current user
|
||||
* @param gender
|
||||
*/
|
||||
@Cordova()
|
||||
setGender(gender: any): void {};
|
||||
setGender(gender: any): void {}
|
||||
|
||||
/**
|
||||
* set Occupation preference in Appodeal for current user
|
||||
* @param occupation
|
||||
*/
|
||||
@Cordova()
|
||||
setOccupation(occupation: any): void {};
|
||||
setOccupation(occupation: any): void {}
|
||||
|
||||
/**
|
||||
* set Relation preference in Appodeal for current user
|
||||
* @param relation
|
||||
*/
|
||||
@Cordova()
|
||||
setRelation(relation: any): void {};
|
||||
setRelation(relation: any): void {}
|
||||
|
||||
/**
|
||||
* set Smoking preference in Appodeal for current user
|
||||
* @param smoking
|
||||
*/
|
||||
@Cordova()
|
||||
setSmoking(smoking: any): void {};
|
||||
setSmoking(smoking: any): void {}
|
||||
|
||||
/**
|
||||
* set Alcohol preference in Appodeal for current user
|
||||
* @param alcohol
|
||||
*/
|
||||
@Cordova()
|
||||
setAlcohol(alcohol: any): void {};
|
||||
setAlcohol(alcohol: any): void {}
|
||||
|
||||
/**
|
||||
* set Interests preference in Appodeal for current user
|
||||
* @param interests
|
||||
*/
|
||||
@Cordova()
|
||||
setInterests(interests: any): void {};
|
||||
setInterests(interests: any): void {}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialLoaded',
|
||||
element: document
|
||||
})
|
||||
onInterstitialLoaded(): Observable<any> { return; }
|
||||
onInterstitialLoaded(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialFailedToLoad',
|
||||
element: document
|
||||
})
|
||||
onInterstitialFailedToLoad(): Observable<any> { return; }
|
||||
onInterstitialFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialShown',
|
||||
element: document
|
||||
})
|
||||
onInterstitialShown(): Observable<any> { return; }
|
||||
onInterstitialShown(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialClicked',
|
||||
element: document
|
||||
})
|
||||
onInterstitialClicked(): Observable<any> { return; }
|
||||
onInterstitialClicked(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialClosed',
|
||||
element: document
|
||||
})
|
||||
onInterstitialClosed(): Observable<any> { return; }
|
||||
onInterstitialClosed(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoLoaded',
|
||||
element: document
|
||||
})
|
||||
onSkippableVideoLoaded(): Observable<any> { return; }
|
||||
onSkippableVideoLoaded(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoFailedToLoad',
|
||||
element: document
|
||||
})
|
||||
onSkippableVideoFailedToLoad(): Observable<any> { return; }
|
||||
onSkippableVideoFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoShown',
|
||||
element: document
|
||||
})
|
||||
onSkippableVideoShown(): Observable<any> { return; }
|
||||
onSkippableVideoShown(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoFinished',
|
||||
element: document
|
||||
})
|
||||
onSkippableVideoFinished(): Observable<any> { return; }
|
||||
onSkippableVideoFinished(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoClosed',
|
||||
element: document
|
||||
})
|
||||
onSkippableVideoClosed(): Observable<any> { return; }
|
||||
onSkippableVideoClosed(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoLoaded',
|
||||
element: document
|
||||
})
|
||||
onRewardedVideoLoaded(): Observable<any> { return; }
|
||||
onRewardedVideoLoaded(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoFailedToLoad',
|
||||
element: document
|
||||
})
|
||||
onRewardedVideoFailedToLoad(): Observable<any> { return; }
|
||||
onRewardedVideoFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoShown',
|
||||
element: document
|
||||
})
|
||||
onRewardedVideoShown(): Observable<any> { return; }
|
||||
onRewardedVideoShown(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoFinished',
|
||||
element: document
|
||||
})
|
||||
onRewardedVideoFinished(): Observable<any> { return; }
|
||||
onRewardedVideoFinished(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoClosed',
|
||||
element: document
|
||||
})
|
||||
onRewardedVideoClosed(): Observable<any> { return; }
|
||||
onRewardedVideoClosed(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoLoaded',
|
||||
element: document
|
||||
})
|
||||
onNonSkippableVideoLoaded(): Observable<any> { return; }
|
||||
onNonSkippableVideoLoaded(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoFailedToLoad',
|
||||
element: document
|
||||
})
|
||||
onNonSkippableVideoFailedToLoad(): Observable<any> { return; }
|
||||
onNonSkippableVideoFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoShown',
|
||||
element: document
|
||||
})
|
||||
onNonSkippableVideoShown(): Observable<any> { return; }
|
||||
onNonSkippableVideoShown(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoFinished',
|
||||
element: document
|
||||
})
|
||||
onNonSkippableVideoFinished(): Observable<any> { return; }
|
||||
onNonSkippableVideoFinished(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoClosed',
|
||||
element: document
|
||||
})
|
||||
onNonSkippableVideoClosed(): Observable<any> { return; }
|
||||
onNonSkippableVideoClosed(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerClicked',
|
||||
element: document
|
||||
})
|
||||
onBannerClicked(): Observable<any> { return; }
|
||||
onBannerClicked(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerFailedToLoad',
|
||||
element: document
|
||||
})
|
||||
onBannerFailedToLoad(): Observable<any> { return; }
|
||||
onBannerFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerLoaded',
|
||||
element: document
|
||||
})
|
||||
onBannerLoaded(): Observable<any> { return; }
|
||||
onBannerLoaded(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerShown',
|
||||
element: document
|
||||
})
|
||||
onBannerShown(): Observable<any> { return; }
|
||||
onBannerShown(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova()
|
||||
getRewardParametersForPlacement(placement: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova()
|
||||
getRewardParameters(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova()
|
||||
canShowWithPlacement(adType: string, placement: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
showTestScreen(value: any): void {}
|
||||
|
||||
@Cordova()
|
||||
muteVideosIfCallsMuted(value: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova()
|
||||
setChildDirectedTreatment(value: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
47
src/@ionic-native/plugins/autostart/index.ts
Normal file
47
src/@ionic-native/plugins/autostart/index.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
/**
|
||||
* @name Autostart
|
||||
* @description
|
||||
* This plugin automatically starts your Android app after every boot or auto-update.
|
||||
* You can enable or disable the autostart function in your app.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Autostart } from '@ionic-native/autostart';
|
||||
*
|
||||
*
|
||||
* constructor(private autostart: Autostart) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.autostart.enable();
|
||||
*
|
||||
* this.autostart.disable();
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Autostart',
|
||||
plugin: 'cordova-plugin-autostart',
|
||||
pluginRef: 'cordova.plugins.autoStart',
|
||||
repo: 'https://github.com/ToniKorin/cordova-plugin-autostart',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class Autostart extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Enable the automatic startup after the boot
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
enable(): void { }
|
||||
|
||||
/**
|
||||
* Disable the automatic startup after the boot
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
disable(): void { }
|
||||
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
declare var window;
|
||||
|
||||
|
||||
export interface BackgroundFetchConfig {
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,8 +2,6 @@ import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
declare var window;
|
||||
|
||||
export interface BackgroundGeolocationResponse {
|
||||
|
||||
/**
|
||||
@@ -127,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))
|
||||
@@ -266,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) { }
|
||||
*
|
||||
@@ -308,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 {
|
||||
@@ -393,7 +391,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
finish(): Promise<any> { return; }
|
||||
|
||||
@@ -403,7 +401,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
changePace(isMoving: boolean): Promise<any> { return; }
|
||||
|
||||
@@ -422,7 +420,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<Location>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
getStationaryLocation(): Promise<BackgroundGeolocationResponse> { return; }
|
||||
|
||||
@@ -432,7 +430,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows Phone']
|
||||
platforms: ['iOS']
|
||||
})
|
||||
onStationary(): Promise<any> { return; }
|
||||
|
||||
@@ -448,25 +446,26 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
/**
|
||||
* Display app settings to change permissions
|
||||
*/
|
||||
@Cordova({sync: true})
|
||||
@Cordova({ sync: true })
|
||||
showAppSettings(): void { }
|
||||
|
||||
/**
|
||||
* Display device location settings
|
||||
*/
|
||||
@Cordova({sync: true})
|
||||
@Cordova({ sync: true })
|
||||
showLocationSettings(): void { }
|
||||
|
||||
/**
|
||||
* Method can be used to detect user changes in location services settings.
|
||||
* If user enable or disable location services then success callback will be executed.
|
||||
* In case or error (SettingNotFoundException) fail callback will be executed.
|
||||
* @returns {Promise<boolean>}
|
||||
* @returns {Observable<number>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
observable: true
|
||||
})
|
||||
watchLocationMode(): Promise<boolean> { return; }
|
||||
watchLocationMode(): Observable<number> { return; }
|
||||
|
||||
/**
|
||||
* Stop watching for location mode changes.
|
||||
|
||||
@@ -1,56 +1,60 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
|
||||
/**
|
||||
* Configurations items that can be updated.
|
||||
*/
|
||||
export interface BackgroundModeConfiguration {
|
||||
|
||||
/**
|
||||
* Title of the background task
|
||||
*/
|
||||
title?: String;
|
||||
title?: string;
|
||||
|
||||
/**
|
||||
* Description of background task
|
||||
*/
|
||||
text?: String;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Set the background color of the notification circle
|
||||
*/
|
||||
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 tapping on the notification. If false, plugin won't come to foreground when tapped.
|
||||
*/
|
||||
resume?: boolean;
|
||||
|
||||
/**
|
||||
* When set to false makes the notifications visible on lock screen (Android 5.0+)
|
||||
*/
|
||||
hidden?: boolean;
|
||||
|
||||
/** Big text */
|
||||
bigText?: boolean;
|
||||
|
||||
/**
|
||||
* The text that scrolls itself on statusbar
|
||||
*/
|
||||
ticker?: String;
|
||||
ticker?: string;
|
||||
|
||||
/**
|
||||
* if true plugin will not display a notification. Default is false.
|
||||
*/
|
||||
silent?: boolean;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @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,11 +74,10 @@ 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 {
|
||||
|
||||
/**
|
||||
* Enable the background mode.
|
||||
* Once called, prevents the app from being paused while in background.
|
||||
@@ -82,14 +85,16 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
enable(): void { }
|
||||
enable(): void {}
|
||||
|
||||
/**
|
||||
* Disable the background mode.
|
||||
* Once the background mode has been disabled, the app will be paused when in background.
|
||||
*/
|
||||
@Cordova()
|
||||
disable(): Promise<any> { return; }
|
||||
disable(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if background mode is enabled or not.
|
||||
@@ -98,7 +103,9 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
isEnabled(): boolean { return; }
|
||||
isEnabled(): boolean {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to get the information if the background mode is active.
|
||||
@@ -107,27 +114,33 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
isActive(): boolean { return; }
|
||||
isActive(): boolean {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override the default title, ticker and text.
|
||||
* Available only for Android platform.
|
||||
* @param {Configure} options List of option to configure. See table below
|
||||
* @param {BackgroundModeConfiguration} options List of option to configure. See table below
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
setDefaults(options?: BackgroundModeConfiguration): Promise<any> { return; }
|
||||
setDefaults(options?: BackgroundModeConfiguration): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify the displayed information.
|
||||
* Available only for Android platform.
|
||||
* @param {Configure} options Any options you want to update. See table below.
|
||||
* @param {BackgroundModeConfiguration} [options] Any options you want to update. See table below.
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
sync: true
|
||||
})
|
||||
configure(options?: BackgroundModeConfiguration): Promise<any> { return; }
|
||||
configure(options?: BackgroundModeConfiguration): void {}
|
||||
|
||||
/**
|
||||
* Listen for events that the plugin fires. Available events are `enable`, `disable`, `activate`, `deactivate` and `failure`.
|
||||
@@ -139,7 +152,9 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
clearFunction: 'un',
|
||||
clearWithArgs: true
|
||||
})
|
||||
on(event: string): Observable<any> { return; }
|
||||
on(event: string): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Android allows to programmatically move from foreground to background.
|
||||
@@ -150,6 +165,15 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
})
|
||||
moveToBackground(): void {}
|
||||
|
||||
/**
|
||||
* Enable GPS-tracking in background (Android).
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android'],
|
||||
sync: true
|
||||
})
|
||||
disableWebViewOptimizations(): void {}
|
||||
|
||||
/**
|
||||
* Android allows to programmatically move from background to foreground.
|
||||
*/
|
||||
@@ -169,7 +193,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'],
|
||||
@@ -179,11 +203,14 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* The method works async instead of isActive() or isEnabled().
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
isScreenOff(): Promise<boolean> { return; }
|
||||
isScreenOff(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turn screen on
|
||||
@@ -202,5 +229,4 @@ export class BackgroundMode extends IonicNativePlugin {
|
||||
sync: true
|
||||
})
|
||||
unlock(): void {}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
* This plugin adds turning on/off the device backlight.
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { Backlight } from '@ionic-native/backlight';
|
||||
*
|
||||
* constructor(private backlight: Backlight) { }
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
|
||||
/**
|
||||
* @name Badge
|
||||
* @description
|
||||
@@ -27,17 +26,18 @@ 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 {
|
||||
|
||||
/**
|
||||
* Clear the badge of the app icon.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
clear(): Promise<boolean> { return; }
|
||||
clear(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the badge of the app icon.
|
||||
@@ -45,14 +45,18 @@ export class Badge extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
set(badgeNumber: number): Promise<any> { return; }
|
||||
set(badgeNumber: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the badge of the app icon.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
get(): Promise<any> { return; }
|
||||
get(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Increase the badge number.
|
||||
@@ -60,7 +64,9 @@ export class Badge extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
increase(increaseBy: number): Promise<any> { return; }
|
||||
increase(increaseBy: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrease the badge number.
|
||||
@@ -68,20 +74,34 @@ export class Badge extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
decrease(decreaseBy: number): Promise<any> { return; }
|
||||
decrease(decreaseBy: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check support to show badges.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isSupported(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the app has permission to show badges.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
hasPermission(): Promise<any> { return; }
|
||||
hasPermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register permission to set badge notifications
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
registerPermission(): Promise<any> { return; }
|
||||
|
||||
requestPermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface BarcodeScannerOptions {
|
||||
|
||||
/**
|
||||
* Prefer front camera. Supported on iOS and Android.
|
||||
*/
|
||||
@@ -53,7 +51,28 @@ export interface BarcodeScannerOptions {
|
||||
* Display scanned text for X ms. 0 suppresses it entirely, default 1500. Supported on Android only.
|
||||
*/
|
||||
resultDisplayDuration?: number;
|
||||
}
|
||||
|
||||
export interface BarcodeScanResult {
|
||||
format:
|
||||
| 'QR_CODE'
|
||||
| 'DATA_MATRIX'
|
||||
| 'UPC_E'
|
||||
| 'UPC_A'
|
||||
| 'EAN_8'
|
||||
| 'EAN_13'
|
||||
| 'CODE_128'
|
||||
| 'CODE_39'
|
||||
| 'CODE_93'
|
||||
| 'CODABAR'
|
||||
| 'ITF'
|
||||
| 'RSS14'
|
||||
| 'RSS_EXPANDED'
|
||||
| 'PDF_417'
|
||||
| 'AZTEC'
|
||||
| 'MSI';
|
||||
cancelled: boolean;
|
||||
text: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,25 +91,25 @@ export interface BarcodeScannerOptions {
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.barcodeScanner.scan().then((barcodeData) => {
|
||||
* // Success! Barcode data is here
|
||||
* }, (err) => {
|
||||
* // An error occurred
|
||||
* this.barcodeScanner.scan().then(barcodeData => {
|
||||
* console.log('Barcode data', barcodeData);
|
||||
* }).catch(err => {
|
||||
* console.log('Error', err);
|
||||
* });
|
||||
* ```
|
||||
* @interfaces
|
||||
* BarcodeScannerOptions
|
||||
* BarcodeScanResult
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'BarcodeScanner',
|
||||
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 {
|
||||
|
||||
Encode: {
|
||||
TEXT_TYPE: string;
|
||||
EMAIL_TYPE: string;
|
||||
@@ -105,22 +124,25 @@ export class BarcodeScanner extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Open the barcode scanner.
|
||||
* @param options {BarcodeScannerOptions} Optional options to pass to the scanner
|
||||
* @param {BarcodeScannerOptions} [options] Optional options to pass to the scanner
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with scanner data, or rejects with an error.
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
scan(options?: BarcodeScannerOptions): Promise<any> { return; }
|
||||
scan(options?: BarcodeScannerOptions): Promise<BarcodeScanResult> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes data into a barcode.
|
||||
* NOTE: not well supported on Android
|
||||
* @param type {string} Type of encoding
|
||||
* @param data {any} Data to encode
|
||||
* @param {string} type Type of encoding
|
||||
* @param {any} data Data to encode
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
encode(type: string, data: any): Promise<any> { return; }
|
||||
|
||||
encode(type: string, data: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface Base64ToGalleryOptions {
|
||||
/** Saved file name prefix */
|
||||
prefix: string;
|
||||
/**
|
||||
* On Android runs Media Scanner after file creation.
|
||||
* On iOS if true the file will be added to camera roll, otherwise will be saved to a library folder.
|
||||
*/
|
||||
mediaScanner: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Base64 To Gallery
|
||||
@@ -19,6 +29,8 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
* err => console.log('Error saving image to gallery ', err)
|
||||
* );
|
||||
* ```
|
||||
* @interfaces
|
||||
* Base64ToGalleryOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Base64ToGallery',
|
||||
@@ -29,19 +41,20 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
})
|
||||
@Injectable()
|
||||
export class Base64ToGallery extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Converts a base64 string to an image file in the device gallery
|
||||
* @param {string} data The actual base64 string that you want to save
|
||||
* @param {any} [options] An object with properties: prefix: string, mediaScanner: boolean. Prefix will be prepended to the filename. If true, mediaScanner runs Media Scanner on Android and saves to Camera Roll on iOS; if false, saves to Library folder on iOS.
|
||||
* @param {any} [options] An object with properties
|
||||
* @returns {Promise<any>} returns a promise that resolves when the image is saved.
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
})
|
||||
base64ToGallery(data: string, options?: {prefix?: string; mediaScanner?: boolean}): Promise<any> {
|
||||
base64ToGallery(
|
||||
data: string,
|
||||
options?: Base64ToGalleryOptions
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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; }
|
||||
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
export interface BatteryStatusResponse {
|
||||
|
||||
/**
|
||||
* The battery charge percentage
|
||||
*/
|
||||
@@ -13,7 +12,6 @@ export interface BatteryStatusResponse {
|
||||
* A boolean that indicates whether the device is plugged in
|
||||
*/
|
||||
isPlugged: boolean;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -31,11 +29,9 @@ export interface BatteryStatusResponse {
|
||||
*
|
||||
*
|
||||
* // watch change in battery status
|
||||
* let subscription = this.batteryStatus.onChange().subscribe(
|
||||
* (status: BatteryStatusResponse) => {
|
||||
* const subscription = this.batteryStatus.onChange().subscribe(status => {
|
||||
* console.log(status.level, status.isPlugged);
|
||||
* }
|
||||
* );
|
||||
* });
|
||||
*
|
||||
* // stop watch
|
||||
* subscription.unsubscribe();
|
||||
@@ -49,11 +45,10 @@ 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: ['iOS', 'Android', 'Windows', 'Browser']
|
||||
})
|
||||
@Injectable()
|
||||
export class BatteryStatus extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Watch the change in battery level
|
||||
* @returns {Observable<BatteryStatusResponse>} Returns an observable that pushes a status object
|
||||
@@ -62,7 +57,9 @@ export class BatteryStatus extends IonicNativePlugin {
|
||||
eventObservable: true,
|
||||
event: 'batterystatus'
|
||||
})
|
||||
onChange(): Observable<BatteryStatusResponse> { return; }
|
||||
onChange(): Observable<BatteryStatusResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch when the battery level goes low
|
||||
@@ -72,16 +69,19 @@ export class BatteryStatus extends IonicNativePlugin {
|
||||
eventObservable: true,
|
||||
event: 'batterylow'
|
||||
})
|
||||
onLow(): Observable<BatteryStatusResponse> { return; }
|
||||
onLow(): Observable<BatteryStatusResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch when the battery level goes to critial
|
||||
* Watch when the battery level goes to critical
|
||||
* @returns {Observable<BatteryStatusResponse>} Returns an observable that pushes a status object
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'batterycritical'
|
||||
})
|
||||
onCritical(): Observable<BatteryStatusResponse> { return; }
|
||||
|
||||
onCritical(): Observable<BatteryStatusResponse> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
export interface BLEScanOptions {
|
||||
/** true if duplicate devices should be reported, false (default) if devices should only be reported once. */
|
||||
reportDuplicates?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name BLE
|
||||
* @description
|
||||
@@ -35,59 +40,59 @@ import { Observable } from 'rxjs/Observable';
|
||||
*
|
||||
* ```typescript
|
||||
* {
|
||||
* "name": "Battery Demo",
|
||||
* "id": "20:FF:D0:FF:D1:C0",
|
||||
* "advertising": [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
|
||||
* "rssi": -55
|
||||
* 'name': 'Battery Demo',
|
||||
* 'id': '20:FF:D0:FF:D1:C0',
|
||||
* 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
|
||||
* 'rssi': -55
|
||||
* }
|
||||
* ```
|
||||
* After connecting, the peripheral object also includes service, characteristic and descriptor information.
|
||||
*
|
||||
* ```typescript
|
||||
* {
|
||||
* "name": "Battery Demo",
|
||||
* "id": "20:FF:D0:FF:D1:C0",
|
||||
* "advertising": [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
|
||||
* "rssi": -55,
|
||||
* "services": [
|
||||
* "1800",
|
||||
* "1801",
|
||||
* "180f"
|
||||
* 'name': 'Battery Demo',
|
||||
* 'id': '20:FF:D0:FF:D1:C0',
|
||||
* 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],
|
||||
* 'rssi': -55,
|
||||
* 'services': [
|
||||
* '1800',
|
||||
* '1801',
|
||||
* '180f'
|
||||
* ],
|
||||
* "characteristics": [
|
||||
* 'characteristics': [
|
||||
* {
|
||||
* "service": "1800",
|
||||
* "characteristic": "2a00",
|
||||
* "properties": [
|
||||
* "Read"
|
||||
* 'service': '1800',
|
||||
* 'characteristic': '2a00',
|
||||
* 'properties': [
|
||||
* 'Read'
|
||||
* ]
|
||||
* },
|
||||
* {
|
||||
* "service": "1800",
|
||||
* "characteristic": "2a01",
|
||||
* "properties": [
|
||||
* "Read"
|
||||
* 'service': '1800',
|
||||
* 'characteristic': '2a01',
|
||||
* 'properties': [
|
||||
* 'Read'
|
||||
* ]
|
||||
* },
|
||||
* {
|
||||
* "service": "1801",
|
||||
* "characteristic": "2a05",
|
||||
* "properties": [
|
||||
* "Read"
|
||||
* 'service': '1801',
|
||||
* 'characteristic': '2a05',
|
||||
* 'properties': [
|
||||
* 'Read'
|
||||
* ]
|
||||
* },
|
||||
* {
|
||||
* "service": "180f",
|
||||
* "characteristic": "2a19",
|
||||
* "properties": [
|
||||
* "Read"
|
||||
* 'service': '180f',
|
||||
* 'characteristic': '2a19',
|
||||
* 'properties': [
|
||||
* 'Read'
|
||||
* ],
|
||||
* "descriptors": [
|
||||
* 'descriptors': [
|
||||
* {
|
||||
* "uuid": "2901"
|
||||
* 'uuid': '2901'
|
||||
* },
|
||||
* {
|
||||
* "uuid": "2904"
|
||||
* 'uuid': '2904'
|
||||
* }
|
||||
* ]
|
||||
* }
|
||||
@@ -96,7 +101,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
* ```
|
||||
*
|
||||
* ## Advertising Data
|
||||
* Bluetooth advertising data is returned in when scanning for devices. The format format varies depending on your platform. On Android advertising data will be the raw advertising bytes. iOS does not allow access to raw advertising data, so a dictionary of data is returned.
|
||||
* Bluetooth advertising data is returned in when scanning for devices. The format varies depending on your platform. On Android advertising data will be the raw advertising bytes. iOS does not allow access to raw advertising data, so a dictionary of data is returned.
|
||||
*
|
||||
* The advertising information for both Android and iOS appears to be a combination of advertising data and scan response data.
|
||||
*
|
||||
@@ -104,10 +109,10 @@ import { Observable } from 'rxjs/Observable';
|
||||
*
|
||||
* ```typescript
|
||||
* {
|
||||
* "name": "demo",
|
||||
* "id": "00:1A:7D:DA:71:13",
|
||||
* "advertising": ArrayBuffer,
|
||||
* "rssi": -37
|
||||
* 'name': 'demo',
|
||||
* 'id': '00:1A:7D:DA:71:13',
|
||||
* 'advertising': ArrayBuffer,
|
||||
* 'rssi': -37
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
@@ -119,24 +124,24 @@ import { Observable } from 'rxjs/Observable';
|
||||
*
|
||||
* ```typescript
|
||||
* {
|
||||
* "name": "demo",
|
||||
* "id": "D8479A4F-7517-BCD3-91B5-3302B2F81802",
|
||||
* "advertising": {
|
||||
* "kCBAdvDataChannel": 37,
|
||||
* "kCBAdvDataServiceData": {
|
||||
* "FED8": {
|
||||
* "byteLength": 7 // data not shown
|
||||
* 'name': 'demo',
|
||||
* 'id': 'D8479A4F-7517-BCD3-91B5-3302B2F81802',
|
||||
* 'advertising': {
|
||||
* 'kCBAdvDataChannel': 37,
|
||||
* 'kCBAdvDataServiceData': {
|
||||
* 'FED8': {
|
||||
* 'byteLength': 7 // data not shown
|
||||
* }
|
||||
* },
|
||||
* "kCBAdvDataLocalName": "demo",
|
||||
* "kCBAdvDataServiceUUIDs": ["FED8"],
|
||||
* "kCBAdvDataManufacturerData": {
|
||||
* "byteLength": 7 // data not shown
|
||||
* 'kCBAdvDataLocalName': 'demo',
|
||||
* 'kCBAdvDataServiceUUIDs': ['FED8'],
|
||||
* 'kCBAdvDataManufacturerData': {
|
||||
* 'byteLength': 7 // data not shown
|
||||
* },
|
||||
* "kCBAdvDataTxPowerLevel": 32,
|
||||
* "kCBAdvDataIsConnectable": true
|
||||
* 'kCBAdvDataTxPowerLevel': 32,
|
||||
* 'kCBAdvDataIsConnectable': true
|
||||
* },
|
||||
* "rssi": -53
|
||||
* 'rssi': -53
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
@@ -167,17 +172,18 @@ import { Observable } from 'rxjs/Observable';
|
||||
*
|
||||
* UUIDs are always strings and not numbers. Some 16-bit UUIDs, such as '2220' look like integers, but they're not. (The integer 2220 is 0x8AC in hex.) This isn't a problem with 128 bit UUIDs since they look like strings 82b9e6e1-593a-456f-be9b-9215160ebcac. All 16-bit UUIDs should also be passed to methods as strings.
|
||||
*
|
||||
* @interfaces
|
||||
* BLEScanOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'BLE',
|
||||
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 {
|
||||
|
||||
/**
|
||||
* Scan and discover BLE peripherals for the specified amount of time.
|
||||
*
|
||||
@@ -194,7 +200,9 @@ export class BLE extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
scan(services: string[], seconds: number): Observable<any> { return; }
|
||||
scan(services: string[], seconds: number): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scan and discover BLE peripherals until `stopScan` is called.
|
||||
@@ -217,12 +225,14 @@ export class BLE extends IonicNativePlugin {
|
||||
clearFunction: 'stopScan',
|
||||
clearWithArgs: false
|
||||
})
|
||||
startScan(services: string[]): Observable<any> { return; }
|
||||
startScan(services: string[]): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scans for BLE devices. This function operates similarly to the `startScan` function, but allows you to specify extra options (like allowing duplicate device reports).
|
||||
* @param {string[]} services List of service UUIDs to discover, or `[]` to find all devices
|
||||
* @param options {any}
|
||||
* @param {BLEScanOptions} options Options
|
||||
* @returns {Observable<any>} Returns an Observable that notifies of each peripheral discovered.
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -230,7 +240,12 @@ export class BLE extends IonicNativePlugin {
|
||||
clearFunction: 'stopScan',
|
||||
clearWithArgs: false
|
||||
})
|
||||
startScanWithOptions(services: string[], options: {reportDuplicates?: boolean} | any): Observable<any> { return; }
|
||||
startScanWithOptions(
|
||||
services: string[],
|
||||
options: BLEScanOptions
|
||||
): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop a scan started by `startScan`.
|
||||
@@ -244,10 +259,12 @@ export class BLE extends IonicNativePlugin {
|
||||
* BLE.stopScan().then(() => { console.log('scan stopped'); });
|
||||
* }, 5000);
|
||||
* ```
|
||||
* @return returns a Promise.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
stopScan(): Promise<any> { return; }
|
||||
stopScan(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to a peripheral.
|
||||
@@ -260,15 +277,91 @@ export class BLE extends IonicNativePlugin {
|
||||
* console.log('disconnected');
|
||||
* });
|
||||
* ```
|
||||
* @param deviceId {string} UUID or MAC address of the peripheral
|
||||
* @return Returns an Observable that notifies of connect/disconnect.
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
* @return {Observable<any>} Returns an Observable that notifies of connect/disconnect.
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
clearFunction: 'disconnect',
|
||||
clearWithArgs: true
|
||||
})
|
||||
connect(deviceId: string): Observable<any> { return; }
|
||||
connect(deviceId: string): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Establish an automatic connection to a peripheral. The phone will automatically connect to the Bluetooth peripheral
|
||||
* whenever it is in range. The autoConnect function uses callbacks instead of observables because connect and
|
||||
* disconnect can each be called many times as a devices connects and disconnects.
|
||||
*
|
||||
* On Android you can pass a MAC address directly to autoConnect. With iOS, you need to get a device id by scanning,
|
||||
* calling ble.peripheralsWithIdentifiers, or calling ble.connectedPeripheralsWithServices.
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* someFunction() {
|
||||
* this.ble.autoConnect(deviceId, onConnected.bind(this), onDisconnected.bind(this));
|
||||
* }
|
||||
*
|
||||
* onConnected(peripheral) {
|
||||
* console.log(`Connected to ${peripheral.id}`)l
|
||||
* }
|
||||
*
|
||||
* onDisconnected(peripheral) {
|
||||
* console.log(`Disconnected from ${peripheral.id}`)l
|
||||
* }
|
||||
*
|
||||
* ```
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
* @param {function} connectCallback function that is called with peripheral data when the devices connects
|
||||
* @param {function} disconnectCallback function that is called with peripheral data when the devices disconnects
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
autoConnect(deviceId: string, connectCallback: any, disconnectCallback: any) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request MTU size.
|
||||
* May be used to fix the Error 14 "Unlikely" on write requests with more than 20 bytes.
|
||||
* @usage
|
||||
* ```
|
||||
* BLE.requestMtu('12:34:56:78:9A:BC', 512).then(() => {
|
||||
* console.log('MTU Size Accepted');
|
||||
* }, error => {
|
||||
* console.log('MTU Size Failed');
|
||||
* });
|
||||
* ```
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
* @param {number} mtuSize The new MTU size. (23 - 517, default is usually 23. Max recommended: 512)
|
||||
* @return {Promise<any>} Returns a Promise.
|
||||
*/
|
||||
@Cordova()
|
||||
requestMtu(deviceId: string, mtuSize: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh Device Cache
|
||||
* This method may fix a issue of old cached services and characteristics.
|
||||
* NOTE Since this uses an undocumented API it's not guaranteed to work.
|
||||
* If you choose a too low delay time (timeoutMillis) the method could fail.
|
||||
* @usage
|
||||
* ```
|
||||
* BLE.refreshDeviceCache('12:34:56:78:9A:BC', 10000).then(discoveredServices => {
|
||||
* console.log('The new discovered services after the clean: ', discoveredServices);
|
||||
* }, error => {
|
||||
* console.log('Refresh device cache failed.');
|
||||
* });
|
||||
* ```
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
* @param {number} timeoutMillis Delay in milliseconds after refresh before discovering services.
|
||||
* @return {Promise<any>} Returns a Promise.
|
||||
*/
|
||||
@Cordova()
|
||||
refreshDeviceCache(deviceId: string, timeoutMillis: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect from a peripheral.
|
||||
@@ -278,11 +371,13 @@ export class BLE extends IonicNativePlugin {
|
||||
* console.log('Disconnected');
|
||||
* });
|
||||
* ```
|
||||
* @param deviceId {string} UUID or MAC address of the peripheral
|
||||
* @return Returns a Promise
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
* @return {Promise<any>} Returns a Promise
|
||||
*/
|
||||
@Cordova()
|
||||
disconnect(deviceId: string): Promise<any> { return; }
|
||||
disconnect(deviceId: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the value of a characteristic.
|
||||
@@ -290,14 +385,16 @@ export class BLE extends IonicNativePlugin {
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
* @param {string} serviceUUID UUID of the BLE service
|
||||
* @param {string} characteristicUUID UUID of the BLE characteristic
|
||||
* @return Returns a Promise
|
||||
* @return {Promise<any>} Returns a Promise
|
||||
*/
|
||||
@Cordova()
|
||||
read(
|
||||
deviceId: string,
|
||||
serviceUUID: string,
|
||||
characteristicUUID: string
|
||||
): Promise<any> { return; };
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the value of a characteristic.
|
||||
@@ -306,14 +403,14 @@ export class BLE extends IonicNativePlugin {
|
||||
* // send 1 byte to switch a light on
|
||||
* var data = new Uint8Array(1);
|
||||
* data[0] = 1;
|
||||
* BLE.write(device_id, "FF10", "FF11", data.buffer);
|
||||
* BLE.write(device_id, 'FF10', 'FF11', data.buffer);
|
||||
*
|
||||
* // send a 3 byte value with RGB color
|
||||
* var data = new Uint8Array(3);
|
||||
* data[0] = 0xFF; // red
|
||||
* data[0] = 0x00; // green
|
||||
* data[0] = 0xFF; // blue
|
||||
* BLE.write(device_id, "ccc0", "ccc1", data.buffer);
|
||||
* BLE.write(device_id, 'ccc0', 'ccc1', data.buffer);
|
||||
*
|
||||
* // send a 32 bit integer
|
||||
* var data = new Uint32Array(1);
|
||||
@@ -325,7 +422,7 @@ export class BLE extends IonicNativePlugin {
|
||||
* @param {string} serviceUUID UUID of the BLE service
|
||||
* @param {string} characteristicUUID UUID of the BLE characteristic
|
||||
* @param {ArrayBuffer} value Data to write to the characteristic, as an ArrayBuffer.
|
||||
* @return Returns a Promise
|
||||
* @return {Promise<any>} Returns a Promise
|
||||
*/
|
||||
@Cordova()
|
||||
write(
|
||||
@@ -333,7 +430,9 @@ export class BLE extends IonicNativePlugin {
|
||||
serviceUUID: string,
|
||||
characteristicUUID: string,
|
||||
value: ArrayBuffer
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the value of a characteristic without waiting for confirmation from the peripheral.
|
||||
@@ -342,7 +441,7 @@ export class BLE extends IonicNativePlugin {
|
||||
* @param {string} serviceUUID UUID of the BLE service
|
||||
* @param {string} characteristicUUID UUID of the BLE characteristic
|
||||
* @param {ArrayBuffer} value Data to write to the characteristic, as an ArrayBuffer.
|
||||
* @return Returns a Promise
|
||||
* @return {Promise<any>} Returns a Promise
|
||||
*/
|
||||
@Cordova()
|
||||
writeWithoutResponse(
|
||||
@@ -350,14 +449,16 @@ export class BLE extends IonicNativePlugin {
|
||||
serviceUUID: string,
|
||||
characteristicUUID: string,
|
||||
value: ArrayBuffer
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register to be notified when the value of a characteristic changes.
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* BLE.startNotification(device_id, "FF10", "FF11").subscribe(buffer => {
|
||||
* BLE.startNotification(device_id, 'FF10', 'FF11').subscribe(buffer => {
|
||||
* console.log(String.fromCharCode.apply(null, new Uint8Array(buffer));
|
||||
* });
|
||||
* ```
|
||||
@@ -365,7 +466,7 @@ export class BLE extends IonicNativePlugin {
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
* @param {string} serviceUUID UUID of the BLE service
|
||||
* @param {string} characteristicUUID UUID of the BLE characteristic
|
||||
* @return Returns an Observable that notifies of characteristic changes.
|
||||
* @return {Observable<any>} Returns an Observable that notifies of characteristic changes.
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
@@ -376,7 +477,9 @@ export class BLE extends IonicNativePlugin {
|
||||
deviceId: string,
|
||||
serviceUUID: string,
|
||||
characteristicUUID: string
|
||||
): Observable<any> { return; }
|
||||
): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop being notified when the value of a characteristic changes.
|
||||
@@ -391,7 +494,9 @@ export class BLE extends IonicNativePlugin {
|
||||
deviceId: string,
|
||||
serviceUUID: string,
|
||||
characteristicUUID: string
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report the connection status.
|
||||
@@ -407,7 +512,9 @@ export class BLE extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isConnected(deviceId: string): Promise<any> { return; }
|
||||
isConnected(deviceId: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report if bluetooth is enabled.
|
||||
@@ -415,7 +522,40 @@ export class BLE extends IonicNativePlugin {
|
||||
* @returns {Promise<void>} Returns a Promise that resolves if Bluetooth is enabled, and rejects if disabled.
|
||||
*/
|
||||
@Cordova()
|
||||
isEnabled(): Promise<void> { return; }
|
||||
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 {Observable<any>} 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).
|
||||
@@ -423,7 +563,9 @@ export class BLE extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
showBluetoothSettings(): Promise<any> { return; }
|
||||
showBluetoothSettings(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable Bluetooth on the device (Android only).
|
||||
@@ -431,17 +573,56 @@ export class BLE extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
enable(): Promise<any> { return; }
|
||||
enable(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the RSSI value on the device connection.
|
||||
*
|
||||
* @param {string} deviceId UUID or MAC address of the peripheral
|
||||
*
|
||||
*@returns {Promise<any>}
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
static readRSSI(
|
||||
deviceId: string,
|
||||
): Promise<any> { return; }
|
||||
readRSSI(deviceId: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves a list of the peripherals (containing any of the specified services)
|
||||
* currently connected to the system. The peripheral list is sent to the success callback.
|
||||
* iOS only
|
||||
*
|
||||
* @param {string[]} services List of services to discover
|
||||
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
|
||||
*/
|
||||
@Cordova()
|
||||
connectedPeripheralsWithServices (services: string[]): Promise<any[]> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the connected peripherals offering the listed service UUIDs.
|
||||
* iOS only
|
||||
*
|
||||
* @param {string[]} uuids List of peripheral UUIDs
|
||||
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
|
||||
*/
|
||||
@Cordova()
|
||||
peripheralsWithIdentifiers (uuids: string[]): Promise<any[]> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the bonded devices
|
||||
* Android only
|
||||
*
|
||||
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
|
||||
*/
|
||||
@Cordova()
|
||||
bondedDevices (): Promise<any[]> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
114
src/@ionic-native/plugins/blinkup/index.ts
Normal file
114
src/@ionic-native/plugins/blinkup/index.ts
Normal file
@@ -0,0 +1,114 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
/**
|
||||
* Interface of a blink up options.
|
||||
*/
|
||||
export interface BlinkUpOptions {
|
||||
apiKey: string;
|
||||
developmentPlanId?: string;
|
||||
isInDevelopment?: boolean;
|
||||
timeoutMs?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface of a blink up wifi options.
|
||||
*/
|
||||
export interface BlinkUpWifiOptions {
|
||||
apiKey: string;
|
||||
timeoutMs?: number;
|
||||
ssid: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface of a blink up wps options.
|
||||
*/
|
||||
export interface BlinkUpWPSOptions {
|
||||
apiKey: string;
|
||||
timeoutMs?: number;
|
||||
wpsPin: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name BlinkUp
|
||||
* @description
|
||||
* Electric Imp BlinkUp ionic plugin.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { BlinkUp } from '@ionic-native/blinkup';
|
||||
*
|
||||
* const options = <BlinkUpWifiOptions>{
|
||||
* apiKey: 'API_KEY',
|
||||
* timeoutMs: 60000,
|
||||
* ssid: 'MY_SSID',
|
||||
* password: 'MY_PASSWORD'
|
||||
* }
|
||||
* BlinkUp.flashWifiBlinkUp(options).subscribe(
|
||||
* (result) => console.log('Done'),
|
||||
* (error) => console.log(error)
|
||||
* )
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'BlinkUp',
|
||||
plugin: 'cordova-plugin-blinkup',
|
||||
pluginRef: 'blinkup',
|
||||
repo: 'https://github.com/SensorShare/cordova-plugin-blinkup',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class BlinkUp extends IonicNativePlugin {
|
||||
/**
|
||||
* startBlinkUp - starts the blinkup process
|
||||
* @param {module:blinkup.BlinkUpOptions} options BlinkUp Options
|
||||
* @return {Observable<any>} Returns an Observable
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse',
|
||||
observable: true
|
||||
})
|
||||
startBlinkUp(options: BlinkUpOptions): Observable<any> { return; }
|
||||
|
||||
/**
|
||||
* flashWifiBlinkUp - invokes the flash wifi process
|
||||
* @param {module:blinkup.BlinkUpWifiOptions} options BlinkUp Wifi Options
|
||||
* @return {Observable<any>} Returns an Observable
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse',
|
||||
observable: true
|
||||
})
|
||||
flashWifiBlinkUp(options: BlinkUpWifiOptions): Observable<any> { return; }
|
||||
|
||||
/**
|
||||
* flashWPSBlinkUp - invokes the flash wps process
|
||||
* @param {module:blinkup.BlinkUpWPSOptions} options BlinkUp WPS Options
|
||||
* @return {Observable<any>} Returns an Observable
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse',
|
||||
observable: true
|
||||
})
|
||||
flashWPSBlinkUp(options: BlinkUpWPSOptions): Observable<any> { return; }
|
||||
|
||||
/**
|
||||
* abortBlinkUp - abort blinkup process
|
||||
* @return {Observable<any>} Returns an Observable
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
abortBlinkUp(): Observable<any> { return; }
|
||||
|
||||
/**
|
||||
* clearBlinkUpData - clear wifi data
|
||||
* @return {Observable<any>} Returns an Observable
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
clearBlinkUpData(): Observable<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';
|
||||
@@ -13,7 +13,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
*
|
||||
*
|
||||
* // Write a string
|
||||
* this.bluetoothSerial.write("hello world").then(success, failure);
|
||||
* this.bluetoothSerial.write('hello world').then(success, failure);
|
||||
*
|
||||
* // Array of int or bytes
|
||||
* this.bluetoothSerial.write([186, 220, 222]).then(success, failure);
|
||||
@@ -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 {
|
||||
|
||||
257
src/@ionic-native/plugins/braintree/index.ts
Normal file
257
src/@ionic-native/plugins/braintree/index.ts
Normal file
@@ -0,0 +1,257 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } 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 maintained 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 {string} token 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 {ApplePayOptions}options 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;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Brightness
|
||||
@@ -16,7 +16,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* let brightnessValue: number = 0.8;
|
||||
* let brightnessValue = 0.8;
|
||||
* this.brightness.setBrightness(brightnessValue);
|
||||
* ```
|
||||
*
|
||||
@@ -30,15 +30,16 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
})
|
||||
@Injectable()
|
||||
export class Brightness extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Sets the brightness of the display.
|
||||
*
|
||||
* @param {value} Floating number between 0 and 1 in which case 1 means 100% brightness and 0 means 0% brightness.
|
||||
* @param {number} value Floating number between 0 and 1 in which case 1 means 100% brightness and 0 means 0% brightness.
|
||||
* @returns {Promise<any>} Returns a Promise that resolves if setting brightness was successful.
|
||||
*/
|
||||
@Cordova()
|
||||
setBrightness(value: number): Promise<any> { return; }
|
||||
setBrightness(value: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads the current brightness of the device display.
|
||||
@@ -47,12 +48,14 @@ export class Brightness extends IonicNativePlugin {
|
||||
* brightness value of the device display (floating number between 0 and 1).
|
||||
*/
|
||||
@Cordova()
|
||||
getBrightness(): Promise<any> { return; }
|
||||
getBrightness(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Keeps the screen on. Prevents the device from setting the screen to sleep.
|
||||
*/
|
||||
* Keeps the screen on. Prevents the device from setting the screen to sleep.
|
||||
* @param {boolean} value
|
||||
*/
|
||||
@Cordova()
|
||||
setKeepScreenOn(value: boolean): void { }
|
||||
|
||||
setKeepScreenOn(value: boolean): void {}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
/**
|
||||
@@ -8,7 +8,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
* This plugin adds exchanging events between native code and your app.
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { Broadcaster } from '@ionic-native/broadcaster';
|
||||
*
|
||||
* constructor(private broadcaster: Broadcaster) { }
|
||||
@@ -16,7 +16,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
* ...
|
||||
*
|
||||
* // Listen to events from Native
|
||||
* this.broadcaster.addEventListener('eventName').then((event) => console.log(event));
|
||||
* this.broadcaster.addEventListener('eventName').subscribe((event) => console.log(event));
|
||||
*
|
||||
* // Send event to Native
|
||||
* this.broadcaster.fireNativeEvent('eventName', {}).then(() => console.log('success'));
|
||||
@@ -28,14 +28,13 @@ import { Observable } from 'rxjs/Observable';
|
||||
plugin: 'cordova-plugin-broadcaster',
|
||||
pluginRef: 'broadcaster',
|
||||
repo: 'https://github.com/bsorrentino/cordova-broadcaster',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS', 'Browser']
|
||||
})
|
||||
@Injectable()
|
||||
export class Broadcaster extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* This function listen to an event sent from the native code
|
||||
* @param eventName {string}
|
||||
* @param {string} eventName
|
||||
* @return {Observable<any>} Returns an observable to watch when an event is received
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -43,15 +42,18 @@ export class Broadcaster extends IonicNativePlugin {
|
||||
clearFunction: 'removeEventListener',
|
||||
clearWithArgs: true
|
||||
})
|
||||
addEventListener(eventName: string): Observable<any> { return; }
|
||||
addEventListener(eventName: string): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function sends data to the native code
|
||||
* @param eventName {string}
|
||||
* @param eventData {any}
|
||||
* @param {string} eventName
|
||||
* @param {any} eventData
|
||||
* @return {Promise<any>} Returns a promise that resolves when an event is successfully fired
|
||||
*/
|
||||
@Cordova()
|
||||
fireNativeEvent(eventName: string, eventData: any): Promise<any> { return; }
|
||||
|
||||
fireNativeEvent(eventName: string, eventData: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Browser Tab
|
||||
@@ -7,27 +7,19 @@ import { Injectable } from '@angular/core';
|
||||
* This plugin provides an interface to in-app browser tabs that exist on some mobile platforms, specifically [Custom Tabs](http://developer.android.com/tools/support-library/features.html#custom-tabs) on Android (including the [Chrome Custom Tabs](https://developer.chrome.com/multidevice/android/customtabs) implementation), and [SFSafariViewController](https://developer.apple.com/library/ios/documentation/SafariServices/Reference/SFSafariViewController_Ref/) on iOS.
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { BrowserTab } from '@ionic-native/browser-tab';
|
||||
*
|
||||
* constructor(private browserTab: BrowserTab) {
|
||||
*
|
||||
* browserTab.isAvailable()
|
||||
* .then((isAvailable: boolean) => {
|
||||
*
|
||||
* .then(isAvailable => {
|
||||
* if (isAvailable) {
|
||||
*
|
||||
* browserTab.openUrl('https://ionic.io');
|
||||
*
|
||||
* } else {
|
||||
*
|
||||
* // open URL with InAppBrowser instead or SafariViewController
|
||||
*
|
||||
* }
|
||||
*
|
||||
* });
|
||||
*
|
||||
*
|
||||
* }
|
||||
*
|
||||
* ```
|
||||
@@ -41,13 +33,14 @@ import { Injectable } from '@angular/core';
|
||||
})
|
||||
@Injectable()
|
||||
export class BrowserTab extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Check if BrowserTab option is available
|
||||
* @return {Promise<any>} Returns a promise that resolves when check is successful and returns true or false
|
||||
*/
|
||||
@Cordova()
|
||||
isAvailable(): Promise<any> { return; }
|
||||
isAvailable(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the provided URL using a browser tab
|
||||
@@ -55,12 +48,16 @@ export class BrowserTab extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise that resolves when check open was successful
|
||||
*/
|
||||
@Cordova()
|
||||
openUrl(url: string): Promise<any> { return; }
|
||||
openUrl(url: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes browser tab
|
||||
* @return {Promise<any>} Returns a promise that resolves when close was finished
|
||||
*/
|
||||
@Cordova()
|
||||
close(): Promise<any> { return; }
|
||||
close(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface CalendarOptions {
|
||||
|
||||
/**
|
||||
* Id
|
||||
*/
|
||||
@@ -47,7 +46,14 @@ export interface CalendarOptions {
|
||||
* URL
|
||||
*/
|
||||
url?: string;
|
||||
}
|
||||
|
||||
export interface NameOrOptions {
|
||||
/** Calendar name */
|
||||
calendarName?: string;
|
||||
|
||||
/** Calendar color as a HEX string */
|
||||
calendarColor?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,7 +65,7 @@ export interface CalendarOptions {
|
||||
*
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { Calendar } from '@ionic-native/calendar';
|
||||
*
|
||||
* constructor(private calendar: Calendar) { }
|
||||
@@ -72,6 +78,7 @@ export interface CalendarOptions {
|
||||
* ```
|
||||
* @interfaces
|
||||
* CalendarOptions
|
||||
* NameOrOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Calendar',
|
||||
@@ -82,12 +89,11 @@ export interface CalendarOptions {
|
||||
})
|
||||
@Injectable()
|
||||
export class Calendar extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* This function checks if we have permission to read/write from/to the calendar.
|
||||
* The promise will resolve with `true` when:
|
||||
* - You're running on iOS, or
|
||||
* - You're targetting API level lower than 23, or
|
||||
* - You're targeting API level lower than 23, or
|
||||
* - You're using Android < 6, or
|
||||
* - You've already granted permission
|
||||
*
|
||||
@@ -95,51 +101,65 @@ export class Calendar extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
hasReadWritePermission(): Promise<boolean> { return; }
|
||||
hasReadWritePermission(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if we have read permission
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
hasReadPermission(): Promise<boolean> { return; }
|
||||
hasReadPermission(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if we have write permission
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
hasWritePermission(): Promise<boolean> { return; }
|
||||
hasWritePermission(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request write permission
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
requestWritePermission(): Promise<any> { return; }
|
||||
requestWritePermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request read permission
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
requestReadPermission(): Promise<any> { return; }
|
||||
requestReadPermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests read/write permissions
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
requestReadWritePermission(): Promise<any> { return; }
|
||||
requestReadWritePermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a calendar. (iOS only)
|
||||
*
|
||||
* @param {string | Object} nameOrOptions either a string name or a options object. If string, provide the calendar name. IF an object, provide a calendar name as a string and a calendar color in hex format as a string
|
||||
* @param {string | NameOrOptions} nameOrOptions either a string name or a options object. If string, provide the calendar name. IF an object, provide a calendar name as a string and a calendar color in hex format as a string
|
||||
* @returns {Promise<any>} Returns a Promise
|
||||
*/
|
||||
@Cordova()
|
||||
createCalendar(nameOrOptions: string | any): Promise<any> { return; }
|
||||
createCalendar(nameOrOptions: string | NameOrOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a calendar. (iOS only)
|
||||
@@ -147,7 +167,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
* @returns {Promise<any>} Returns a Promise
|
||||
*/
|
||||
@Cordova()
|
||||
deleteCalendar(name: string): Promise<any> { return; }
|
||||
deleteCalendar(name: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default calendar options.
|
||||
@@ -157,7 +179,21 @@ export class Calendar extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
getCalendarOptions(): CalendarOptions { return; }
|
||||
getCalendarOptions(): CalendarOptions {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns options for a custom calender with specific color
|
||||
*
|
||||
* @return {NameOrOptions} Returns an object with the default options
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
getCreateCalendarOptions(): NameOrOptions {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Silently create an event.
|
||||
@@ -175,7 +211,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
notes?: string,
|
||||
startDate?: Date,
|
||||
endDate?: Date
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Silently create an event with additional options.
|
||||
@@ -196,7 +234,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
startDate?: Date,
|
||||
endDate?: Date,
|
||||
options?: CalendarOptions
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Interactively create an event.
|
||||
@@ -215,7 +255,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
notes?: string,
|
||||
startDate?: Date,
|
||||
endDate?: Date
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Interactively create an event with additional options.
|
||||
@@ -236,7 +278,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
startDate?: Date,
|
||||
endDate?: Date,
|
||||
options?: CalendarOptions
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find an event.
|
||||
@@ -255,7 +299,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
notes?: string,
|
||||
startDate?: Date,
|
||||
endDate?: Date
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find an event with additional options.
|
||||
@@ -275,7 +321,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
startDate?: Date,
|
||||
endDate?: Date,
|
||||
options?: CalendarOptions
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a list of events within the specified date range. (Android only)
|
||||
@@ -287,14 +335,18 @@ export class Calendar extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
listEventsInRange(startDate: Date, endDate: Date): Promise<any> { return; }
|
||||
listEventsInRange(startDate: Date, endDate: Date): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of all calendars.
|
||||
* @returns {Promise<any>} A Promise that resolves with the list of calendars, or rejects with an error.
|
||||
*/
|
||||
@Cordova()
|
||||
listCalendars(): Promise<any> { return; }
|
||||
listCalendars(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of all future events in the specified calendar. (iOS only)
|
||||
@@ -303,7 +355,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
platforms: ['iOS']
|
||||
})
|
||||
findAllEventsInNamedCalendar(calendarName: string): Promise<any> { return; }
|
||||
findAllEventsInNamedCalendar(calendarName: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify an event. (iOS only)
|
||||
@@ -334,7 +388,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
newNotes?: string,
|
||||
newStartDate?: Date,
|
||||
newEndDate?: Date
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify an event with additional options. (iOS only)
|
||||
@@ -369,7 +425,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
newEndDate?: Date,
|
||||
filterOptions?: CalendarOptions,
|
||||
newOptions?: CalendarOptions
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an event.
|
||||
@@ -388,7 +446,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
notes?: string,
|
||||
startDate?: Date,
|
||||
endDate?: Date
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an event from the specified Calendar. (iOS only)
|
||||
@@ -411,7 +471,9 @@ export class Calendar extends IonicNativePlugin {
|
||||
startDate?: Date,
|
||||
endDate?: Date,
|
||||
calendarName?: string
|
||||
): Promise<any> { return; }
|
||||
): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the calendar at the specified date.
|
||||
@@ -419,6 +481,7 @@ export class Calendar extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Promise returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
openCalendar(date: Date): Promise<any> { return; }
|
||||
|
||||
openCalendar(date: Date): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
100
src/@ionic-native/plugins/call-directory/index.ts
Normal file
100
src/@ionic-native/plugins/call-directory/index.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface CallDirectoryItem {
|
||||
label: string;
|
||||
number: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Call Directory
|
||||
* @description
|
||||
* This plugin can add phone numbers to an Callkit call directory extension. Call `reloadExtension` after using `addIdentification` and `removeIdentification`
|
||||
* to process the changes in the call directory extension.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { CallDirectory } from '@ionic-native/call-directory';
|
||||
*
|
||||
*
|
||||
* constructor(private callDirectory: CallDirectory) { }
|
||||
*
|
||||
*
|
||||
* let items = [{label: "Hello", number: "123"}];
|
||||
* this.callDirectory.addIdentification(items)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* this.callDirectory.reloadExtension()
|
||||
* .then(res: string) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'CallDirectory',
|
||||
plugin: 'cordova-plugin-call-directory',
|
||||
pluginRef: 'CallDirectory',
|
||||
repo: 'https://github.com/GEDYSIntraWare/cordova-plugin-call-directory',
|
||||
install: 'cordova plugin add cordova-plugin-call-directory --variable EXT_NAME="Cordova-Directory" --variable ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES="NO"',
|
||||
installVariables: ['EXT_NAME', 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'],
|
||||
platforms: ['iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class CallDirectory extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Check if the call directory extension is available and enabled
|
||||
* @return {Promise<boolean>} Returns a promise with result
|
||||
*/
|
||||
@Cordova()
|
||||
isAvailable(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add identification numbers
|
||||
* @param {Array<CallDirectoryItem>} items Set of numbers with labels
|
||||
* @return {Promise<any>} Returns a promise that resolves when numbers are added
|
||||
*/
|
||||
@Cordova()
|
||||
addIdentification(items: Array<CallDirectoryItem>): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove identification numbers
|
||||
* @param {Array<CallDirectoryItem>} items Set of numbers with arbitrary label
|
||||
* @return {Promise<any>} Returns a promise that resolves when numbers are removed
|
||||
*/
|
||||
@Cordova()
|
||||
removeIdentification(items: Array<CallDirectoryItem>): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all items from call directory. Refreshes immediately.
|
||||
* @return {Promise<any>} Returns a promise after refresh with message
|
||||
*/
|
||||
@Cordova()
|
||||
removeAllIdentification(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all numbers and labels in call directory
|
||||
* @return {Array<CallDirectoryItem>} Returns a promise that resolves with an array of all items
|
||||
*/
|
||||
@Cordova()
|
||||
getAllItems(): Promise<Array<CallDirectoryItem>> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload extension to process queued changes
|
||||
* @return {Promise<string>} Returns a promise after refresh with message
|
||||
*/
|
||||
@Cordova()
|
||||
reloadExtension(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
67
src/@ionic-native/plugins/call-log/index.ts
Normal file
67
src/@ionic-native/plugins/call-log/index.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface CallLogObject {
|
||||
name: string;
|
||||
value: string | Array<string>;
|
||||
operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'like';
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Call Log
|
||||
* @description
|
||||
* This plugin access the call history on a device and that can be filtered
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { CallLog } from '@ionic-native/call-log';
|
||||
*
|
||||
*
|
||||
* constructor(private callLog: CallLog) { }
|
||||
*
|
||||
* ````
|
||||
* @interfaces
|
||||
* CallLogObject
|
||||
*
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'CallLog',
|
||||
plugin: 'cordova-plugin-calllog',
|
||||
pluginRef: 'plugins.callLog',
|
||||
repo: 'https://github.com/creacore-team/cordova-plugin-calllog',
|
||||
platforms: ['Android']
|
||||
})
|
||||
@Injectable()
|
||||
export class CallLog extends IonicNativePlugin {
|
||||
/**
|
||||
* This function return the call logs
|
||||
* @param {CallLogObject[]} filters array of object to filter the query
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getCallLog(filters: CallLogObject[]): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check permission
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
hasReadPermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request permission
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
})
|
||||
requestReadPermission(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,14 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } 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
|
||||
* import { CallNumber } from '@ionic-native/call-number';
|
||||
*
|
||||
* constructor(private callNumber: CallNumber) { }
|
||||
@@ -14,9 +16,9 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.callNumber.callNumber(18001010101, true)
|
||||
* .then(() => console.log('Launched dialer!'))
|
||||
* .catch(() => console.log('Error launching dialer'));
|
||||
* this.callNumber.callNumber("18001010101", true)
|
||||
* .then(res => console.log('Launched dialer!', res))
|
||||
* .catch(err => console.log('Error launching dialer', err));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@@ -25,15 +27,14 @@ 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 {
|
||||
|
||||
/**
|
||||
* Calls a phone number
|
||||
* @param numberToCall {string} The phone number to call as a string
|
||||
* @param bypassAppChooser {boolean} Set to true to bypass the app chooser and go directly to dialer
|
||||
* @param {string} numberToCall The phone number to call as a string
|
||||
* @param {boolean} bypassAppChooser Set to true to bypass the app chooser and go directly to dialer
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -43,4 +44,12 @@ export class CallNumber extends IonicNativePlugin {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if call feature is available
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isCallSupported(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface CameraPreviewDimensions {
|
||||
/** The width of the camera preview, default to window.screen.width */
|
||||
@@ -36,15 +36,21 @@ 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;
|
||||
|
||||
/** On Android disable automatic rotation of the image and stripping of Exit header. default false */
|
||||
disableExifHeaderStripping?: boolean;
|
||||
}
|
||||
|
||||
export interface CameraPreviewPictureOptions {
|
||||
/** The width in pixels, default 0 */
|
||||
width?: number;
|
||||
/** The height in pixels, default 0 */
|
||||
height?: number;
|
||||
/** The picture quality, 0 - 100, default 85 */
|
||||
quality?: number;
|
||||
/** The width in pixels, default 0 */
|
||||
width?: number;
|
||||
/** The height in pixels, default 0 */
|
||||
height?: number;
|
||||
/** The picture quality, 0 - 100, default 85 */
|
||||
quality?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -57,7 +63,7 @@ export interface CameraPreviewPictureOptions {
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { CameraPreview, PictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview';
|
||||
* import { CameraPreview, CameraPreviewPictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview';
|
||||
*
|
||||
* constructor(private cameraPreview: CameraPreview) { }
|
||||
*
|
||||
@@ -93,7 +99,7 @@ export interface CameraPreviewPictureOptions {
|
||||
*
|
||||
*
|
||||
* // picture options
|
||||
* const pictureOpts: PictureOptions = {
|
||||
* const pictureOpts: CameraPreviewPictureOptions = {
|
||||
* width: 1280,
|
||||
* height: 1280,
|
||||
* quality: 85
|
||||
@@ -128,13 +134,24 @@ export interface CameraPreviewPictureOptions {
|
||||
pluginName: 'CameraPreview',
|
||||
plugin: 'cordova-plugin-camera-preview',
|
||||
pluginRef: 'CameraPreview',
|
||||
repo: 'https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview',
|
||||
repo:
|
||||
'https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class CameraPreview extends IonicNativePlugin {
|
||||
FOCUS_MODE = {
|
||||
FIXED: 'fixed',
|
||||
AUTO: 'auto',
|
||||
CONTINUOUS: 'continuous', // IOS Only
|
||||
CONTINUOUS_PICTURE: 'continuous-picture', // Android Only
|
||||
CONTINUOUS_VIDEO: 'continuous-video', // Android Only
|
||||
EDOF: 'edof', // Android Only
|
||||
INFINITY: 'infinity', // Android Only
|
||||
MACRO: 'macro' // Android Only
|
||||
};
|
||||
|
||||
EXPOSURE_MODES = {
|
||||
EXPOSURE_MODE = {
|
||||
LOCK: 'lock', // IOS Only
|
||||
AUTO: 'auto', // IOS Only
|
||||
CONTINUOUS: 'continuous',
|
||||
@@ -175,46 +192,58 @@ export class CameraPreview extends IonicNativePlugin {
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
startCamera(options: CameraPreviewOptions): Promise<any> { return; }
|
||||
startCamera(options: CameraPreviewOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops the camera preview instance. (iOS & Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
stopCamera(): Promise<any> { return; }
|
||||
stopCamera(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Switch from the rear camera and front camera, if available.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
switchCamera(): Promise<any> { return; }
|
||||
switchCamera(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide the camera preview box.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
hide(): Promise<any> { return; }
|
||||
hide(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the camera preview box.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
show(): Promise<any> { return; }
|
||||
show(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Take the picture (base64)
|
||||
* @param [options] {CameraPreviewPictureOptions} size and quality of the picture to take
|
||||
* @param {CameraPreviewPictureOptions} [options] size and quality of the picture to take
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
takePicture(options?: CameraPreviewPictureOptions): Promise<any> { return; }
|
||||
takePicture(options?: CameraPreviewPictureOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -227,7 +256,9 @@ export class CameraPreview extends IonicNativePlugin {
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setColorEffect(effect: string): Promise<any> { return; }
|
||||
setColorEffect(effect: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the zoom (Android)
|
||||
@@ -238,106 +269,191 @@ export class CameraPreview extends IonicNativePlugin {
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setZoom(zoom?: number): Promise<any> { return; }
|
||||
setZoom(zoom?: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Get the maximum zoom (Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getMaxZoom(): Promise<any> { return; }
|
||||
getMaxZoom(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current zoom (Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getZoom(): Promise<any> { return; }
|
||||
getZoom(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the preview Size
|
||||
* @param [dimensions] {CameraPreviewDimensions}
|
||||
* @param {CameraPreviewDimensions} [dimensions]
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> { return; }
|
||||
setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the flashmode
|
||||
* @param [flashMode] {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setFlashMode(flashMode?: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Get supported picture sizes
|
||||
* Get focus mode
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getSupportedPictureSizes(): Promise<any> { return; }
|
||||
getFocusMode(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the focus mode
|
||||
* @param {string} [focusMode] 'fixed', 'auto', 'continuous-picture', 'continuous-video' (iOS & Android), 'edof', 'infinity', 'macro' (Android Only)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setFocusMode(focusMode?: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get supported focus modes
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getSupportedFocusModes(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current flash mode
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getFlashMode(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the flash mode
|
||||
* @param {string} [flashMode] 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setFlashMode(flashMode?: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get supported flash modes
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getSupportedFlashModes(): Promise<any> { return; }
|
||||
getSupportedFlashModes(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get supported picture sizes
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getSupportedPictureSizes(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get exposure mode
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getExposureMode(): Promise<any> { return; }
|
||||
getExposureMode(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get exposure modes
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getExposureModes(): Promise<any> { return; }
|
||||
getExposureModes(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set exposure mode
|
||||
* @param [lock] {string}
|
||||
* @param {string} [lock]
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setExposureMode(lock?: string): Promise<any> { return; }
|
||||
setExposureMode(lock?: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get exposure compensation (Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getExposureCompensation(): Promise<any> { return; }
|
||||
getExposureCompensation(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set exposure compensation (Android)
|
||||
* @param [exposureCompensation] {number}
|
||||
* @param {number} [exposureCompensation]
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
setExposureCompensation(exposureCompensation?: number): Promise<any> { return; }
|
||||
setExposureCompensation(exposureCompensation?: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get exposure compensation range (Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
getExposureCompensationRange(): Promise<any> { return; }
|
||||
getExposureCompensationRange(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set specific focus point. Note, this assumes the camera is full-screen.
|
||||
* @param {number} xPoint
|
||||
* @param {number} yPoint
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
tapToFocus(xPoint: number, yPoint: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a listener for the back event for the preview
|
||||
* @return {Promise<any>} if back button pressed
|
||||
*/
|
||||
@Cordova()
|
||||
onBackButton(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ export interface CameraOptions {
|
||||
/**
|
||||
* Choose the format of the return value.
|
||||
* Defined in Camera.DestinationType. Default is FILE_URI.
|
||||
* DATA_URL : 0, Return image as base64-encoded string,
|
||||
* DATA_URL : 0, Return image as base64-encoded string (DATA_URL can be very memory intensive and cause app crashes or out of memory errors. Use FILE_URI or NATIVE_URI if possible),
|
||||
* FILE_URI : 1, Return image file URI,
|
||||
* NATIVE_URI : 2 Return image native URI
|
||||
* (e.g., assets-library:// on iOS or content:// on Android)
|
||||
@@ -85,12 +85,48 @@ 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
|
||||
* Take a photo or capture video.
|
||||
*
|
||||
* Requires and the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).
|
||||
* Requires the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
@@ -103,14 +139,14 @@ export interface CameraPopoverOptions {
|
||||
*
|
||||
* const options: CameraOptions = {
|
||||
* quality: 100,
|
||||
* destinationType: this.camera.DestinationType.DATA_URL,
|
||||
* destinationType: this.camera.DestinationType.FILE_URI,
|
||||
* encodingType: this.camera.EncodingType.JPEG,
|
||||
* mediaType: this.camera.MediaType.PICTURE
|
||||
* }
|
||||
*
|
||||
* this.camera.getPicture(options).then((imageData) => {
|
||||
* // imageData is either a base64 encoded string or a file URI
|
||||
* // If it's base64:
|
||||
* // If it's base64 (DATA_URL):
|
||||
* let base64Image = 'data:image/jpeg;base64,' + imageData;
|
||||
* }, (err) => {
|
||||
* // Handle error
|
||||
@@ -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', 'Browser', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class Camera extends IonicNativePlugin {
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface CardIOOptions {
|
||||
|
||||
/**
|
||||
* Set to true to require expiry date
|
||||
*/
|
||||
@@ -21,7 +20,7 @@ export interface CardIOOptions {
|
||||
/**
|
||||
* Removes the keyboard button from the scan screen.
|
||||
*/
|
||||
supressManual?: boolean;
|
||||
suppressManual?: boolean;
|
||||
|
||||
/**
|
||||
* The postal code will only collect numeric input. Set this if you know the expected country's postal code has only numeric postal codes.
|
||||
@@ -82,11 +81,9 @@ export interface CardIOOptions {
|
||||
* Once a card image has been captured but before it has been processed, this value will determine whether to continue processing as usual.
|
||||
*/
|
||||
supressScan?: boolean;
|
||||
|
||||
}
|
||||
|
||||
export interface CardIOResponse {
|
||||
|
||||
/**
|
||||
* Card type
|
||||
*/
|
||||
@@ -126,14 +123,24 @@ export interface CardIOResponse {
|
||||
* Cardholder name
|
||||
*/
|
||||
cardholderName: string;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Card IO
|
||||
* @description
|
||||
* @usage
|
||||
* ```
|
||||
* This plug-in exposes card.io credit card scanning.
|
||||
*
|
||||
* **NOTE**: If you would like to actually process a credit card charge, you might be interested in the [PayPal Cordova Plug-in](https://github.com/paypal/PayPal-Cordova-Plugin).
|
||||
*
|
||||
* Requires Cordova plugin: `card.io.cordova.mobilesdk`. For more info, please see the [Card IO plugin docs](https://github.com/card-io/card.io-Cordova-Plugin).
|
||||
*
|
||||
* 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';
|
||||
*
|
||||
* constructor(private cardIO: CardIO) { }
|
||||
@@ -147,10 +154,10 @@ export interface CardIOResponse {
|
||||
* if(res){
|
||||
* let options = {
|
||||
* requireExpiry: true,
|
||||
* requireCCV: false,
|
||||
* requireCVV: false,
|
||||
* requirePostalCode: false
|
||||
* };
|
||||
* CardIO.scan(options);
|
||||
* this.cardIO.scan(options);
|
||||
* }
|
||||
* }
|
||||
* );
|
||||
@@ -164,11 +171,10 @@ 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 {
|
||||
|
||||
/**
|
||||
* Check whether card scanning is currently available. (May vary by
|
||||
* device, OS version, network connectivity, etc.)
|
||||
@@ -176,21 +182,26 @@ export class CardIO extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
canScan(): Promise<boolean> { return; }
|
||||
canScan(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scan a credit card with card.io.
|
||||
* @param {CardIOOptions} options Options for configuring the plugin
|
||||
* @param {CardIOOptions} [options] Options for configuring the plugin
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
scan(options?: CardIOOptions): Promise<CardIOResponse> { return; }
|
||||
scan(options?: CardIOOptions): Promise<CardIOResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the version of the card.io library. Useful when contacting support.
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
version(): Promise<string> { return; }
|
||||
|
||||
version(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
366
src/@ionic-native/plugins/class-kit/index.ts
Normal file
366
src/@ionic-native/plugins/class-kit/index.ts
Normal file
@@ -0,0 +1,366 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface CCKContext {
|
||||
/**
|
||||
* Full identifier path from root, including the context identifier itself..
|
||||
*/
|
||||
identifierPath: string[];
|
||||
/**
|
||||
* Title of the context.
|
||||
*/
|
||||
title: string;
|
||||
/**
|
||||
* Optional. Type value for the context.
|
||||
*/
|
||||
type?: CCKContextType;
|
||||
/**
|
||||
* Optional. Topic value of the context.
|
||||
*/
|
||||
topic?: string;
|
||||
/**
|
||||
* Optional. Display order of the context.
|
||||
*/
|
||||
displayOrder?: number;
|
||||
}
|
||||
|
||||
export enum CCKContextType {
|
||||
none = 0,
|
||||
app,
|
||||
chapter,
|
||||
section,
|
||||
level,
|
||||
page,
|
||||
task,
|
||||
challenge,
|
||||
quiz,
|
||||
exercise,
|
||||
lesson,
|
||||
book,
|
||||
game,
|
||||
document,
|
||||
audio,
|
||||
video
|
||||
}
|
||||
|
||||
export enum CCKContextTopic {
|
||||
math = 'math',
|
||||
science = 'science',
|
||||
literacyAndWriting = 'literacyAndWriting',
|
||||
worldLanguage = 'worldLanguage',
|
||||
socialScience = 'socialScience',
|
||||
computerScienceAndEngineering = 'computerScienceAndEngineering',
|
||||
artsAndMusic = 'artsAndMusic',
|
||||
healthAndFitness = 'healthAndFitness'
|
||||
}
|
||||
|
||||
export interface CCKBinaryItem {
|
||||
/**
|
||||
* A unique string identifier for the activity item.
|
||||
*/
|
||||
identifier: string;
|
||||
/**
|
||||
* A human readable name for the activity item.
|
||||
*/
|
||||
title: string;
|
||||
/**
|
||||
* A type value for the activity item.
|
||||
*/
|
||||
type: CCKBinaryType;
|
||||
/**
|
||||
* The value that the binary activity item takes.
|
||||
*/
|
||||
isCorrect: boolean;
|
||||
/**
|
||||
* Optional. Should the activity item be added as the primary activity item.
|
||||
*/
|
||||
isPrimaryActivityItem?: boolean;
|
||||
}
|
||||
|
||||
export enum CCKBinaryType {
|
||||
trueFalse = 0,
|
||||
passFail,
|
||||
yesNo
|
||||
}
|
||||
|
||||
export interface CCKScoreItem {
|
||||
/**
|
||||
* A unique string identifier for the activity item.
|
||||
*/
|
||||
identifier: string;
|
||||
/**
|
||||
* A human readable name for the activity item.
|
||||
*/
|
||||
title: string;
|
||||
/**
|
||||
* The score earned during completion of a task.
|
||||
*/
|
||||
score: number;
|
||||
/**
|
||||
* The maximum possible score, against which the reported score should be judged.
|
||||
*/
|
||||
maxScore: number;
|
||||
/**
|
||||
* Optional. Should the activity item be added as the primary activity item.
|
||||
*/
|
||||
isPrimaryActivityItem?: boolean;
|
||||
}
|
||||
|
||||
export interface CCKQuantityItem {
|
||||
/**
|
||||
* A unique string identifier for the activity item.
|
||||
*/
|
||||
identifier: string;
|
||||
/**
|
||||
* A human readable name for the activity item.
|
||||
*/
|
||||
title: string;
|
||||
/**
|
||||
* A quantity associated with the task.
|
||||
*/
|
||||
quantity: number;
|
||||
/**
|
||||
* Optional. Should the activity item be added as the primary activity item.
|
||||
*/
|
||||
isPrimaryActivityItem?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Class Kit
|
||||
* @description Plugin for using Apple's ClassKit framework.
|
||||
*
|
||||
*
|
||||
* Prerequisites:
|
||||
* Only works with Xcode 9.4 and iOS 11.4. Your Provisioning Profile must include the ClassKit capability. Read more about how to Request ClassKit Resources (https://developer.apple.com/contact/classkit/) in here: https://developer.apple.com/documentation/classkit/enabling_classkit_in_your_app.
|
||||
* Also note that you can’t test ClassKit behavior in Simulator because Schoolwork isn’t available in that environment.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { ClassKit, CCKContext, CCKBinaryItem, CCKQuantityItem, CCKScoreItem, CCKContextTopic, CCKContextType, CCKBinaryType } from '@ionic-native/class-kit';
|
||||
*
|
||||
* // Init contexts defined in XML file 'CCK-contexts.xml'
|
||||
* constructor( ..., private classKit: ClassKit) {
|
||||
* platform.ready().then(() => {
|
||||
* classKit.initContextsFromXml("classkitplugin://")
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
* });
|
||||
* }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* // Init context with identifier path
|
||||
* const context: CCKContext = {
|
||||
* identifierPath: ["parent_title_one", "child_one", "child_one_correct_quiz"],
|
||||
* title: "child one correct quiz",
|
||||
* type: CCKContextType.exercise,
|
||||
* topic: CCKContextTopic.science,
|
||||
* displayOrder: 0
|
||||
* };
|
||||
*
|
||||
* this.classKit.addContext("classkitplugin://", context)
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Remove all contexts
|
||||
* this.classKit.removeContexts()
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Remove context with identifier path
|
||||
* this.classKit.removeContext(["parent_title_one", "child_one", "child_one_correct_quiz"])
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Begin a new activity or restart an activity for a given context
|
||||
* this.classKit.beginActivity(["parent_title_one", "child_two", "child_two_quiz"], false)
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Adds a progress range to the active given activity
|
||||
* this.classKit.setProgressRange(0, 0.66)
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Adds a progress to the active given activity
|
||||
* this.classKit.setProgress(0.66)
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Adds activity information that is true or false, pass or fail, yes or no
|
||||
* const binaryItem: CCKBinaryItem = {
|
||||
* identifier: "child_two_quiz_IDENTIFIER_1",
|
||||
* title: "CHILD TWO QUIZ 1",
|
||||
* type: CCKBinaryType.trueFalse,
|
||||
* isCorrect: isCorrect,
|
||||
* isPrimaryActivityItem: false
|
||||
* };
|
||||
*
|
||||
* this.classKit.setBinaryItem(binaryItem)
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Adds activity information that signifies a score out of a possible maximum
|
||||
* const scoreItem: CCKScoreItem = {
|
||||
* identifier: "total_score",
|
||||
* title: "Total Score :-)",
|
||||
* score: 0.66,
|
||||
* maxScore: 1.0,
|
||||
* isPrimaryActivityItem: true
|
||||
* };
|
||||
*
|
||||
* this.classKit.setScoreItem(scoreItem)
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
*
|
||||
* // Activity information that signifies a quantity
|
||||
* const quantityItem: CCKQuantityItem = {
|
||||
* identifier: "quantity_item_hints",
|
||||
* title: "Hints",
|
||||
* quantity: 12,
|
||||
* isPrimaryActivityItem: false
|
||||
* };
|
||||
*
|
||||
* this.classKit.setQuantityItem(quantityItem)
|
||||
* .then(() => console.log("success"))
|
||||
* .catch(e => console.log("error: ", e));
|
||||
*
|
||||
* ```
|
||||
*
|
||||
* @interfaces
|
||||
* CCKContext
|
||||
* CCKContextType
|
||||
* CCKContextTopic
|
||||
* CCKBinaryItem
|
||||
* CCKBinaryType
|
||||
* CCKScoreItem
|
||||
* CCKQuantityItem
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'ClassKit',
|
||||
plugin: 'cordova-plugin-classkit',
|
||||
pluginRef: 'CordovaClassKit',
|
||||
repo: 'https://github.com/sebastianbaar/cordova-plugin-classkit.git',
|
||||
platforms: ['iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class ClassKit extends IonicNativePlugin {
|
||||
/**
|
||||
* Init contexts defined in XML file 'CCK-contexts.xml'
|
||||
* @param {string} urlPrefix URL prefix to use for custom URLs to locate activities (deeplink).
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
initContextsFromXml(urlPrefix: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Init context with identifier path
|
||||
* @param {string} urlPrefix URL prefix to use for custom URLs to locate activities (deeplink).
|
||||
* @param {CCKContext} context Context to initialize.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
addContext(urlPrefix: string, context: CCKContext): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all contexts
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
removeContexts(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove context with identifier path
|
||||
* @param {string[]} identifierPath Full identifier path from root, including the context identifier itself.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
removeContext(identifierPath: string[]): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Begin a new activity or restart an activity for a given context
|
||||
* @param {string[]} identifierPath Full identifier path from root, including the context identifier itself.
|
||||
* @param {boolean} asNew Should a new activity be created (or an old activity be restarted).
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
beginActivity(identifierPath: string[], asNew: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* End the active activity
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
endActivity(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a progress range to the active given activity
|
||||
* @param {number} fromStart The beginning of the new range to add. This should be fractional value between 0 and 1, inclusive.
|
||||
* @param {number} toEnd The end of the new range to add. This should be larger than the start value and less than or equal to one.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setProgressRange(fromStart: number, toEnd: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a progress to the active given activity
|
||||
* @param {number} progress A measure of progress through the task, given as a fraction in the range [0, 1].
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setProgress(progress: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds activity information that is true or false, pass or fail, yes or no
|
||||
* @param {CCKBinaryItem} binaryItem The binary item to add to the activity.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setBinaryItem(binaryItem: CCKBinaryItem): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds activity information that signifies a score out of a possible maximum
|
||||
* @param {CCKScoreItem} scoreItem The score item to add to the activity.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setScoreItem(scoreItem: CCKScoreItem): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activity information that signifies a quantity.
|
||||
* @param {CCKQuantityItem} quantityItem The quantity item to add to the activity.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setQuantityItem(quantityItem: CCKQuantityItem): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -27,14 +25,16 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
* alert('Error: ' + reject);
|
||||
* }
|
||||
* );
|
||||
*
|
||||
* this.clipboard.clear();
|
||||
* ```
|
||||
*/
|
||||
@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 {
|
||||
@@ -54,4 +54,11 @@ export class Clipboard extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
paste(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Clear the text stored in clipboard
|
||||
* @returns {Promise<any>} Returns a promise after the text has been cleaned
|
||||
*/
|
||||
@Cordova()
|
||||
clear(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
|
||||
91
src/@ionic-native/plugins/cloud-settings/index.ts
Normal file
91
src/@ionic-native/plugins/cloud-settings/index.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Cloud Settings
|
||||
* @description
|
||||
* Stores app settings in cloud storage so if the user re-installs the app or installs it on a different device, the settings will be restored and available in the new installation.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { CloudSettings } from '@ionic-native/cloud-settings';
|
||||
*
|
||||
*
|
||||
* constructor(private cloudSettings: CloudSettings) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.cloudSettings.exists()
|
||||
* .then((exists: boolean) => console.log("Saved settings exist: " + exists) )
|
||||
*
|
||||
* this.cloudSettings.load()
|
||||
* .then((settings: any) => this.settings = settings)
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* this.cloudSettings.save(this.settings)
|
||||
* .then((savedSettings: any) => console.log("Saved settings: " + JSON.stringify(savedSettings)))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'CloudSettings',
|
||||
plugin: 'cordova-plugin-cloud-settings',
|
||||
pluginRef: 'cordova.plugin.cloudsettings',
|
||||
repo: 'https://github.com/dpa99c/cordova-plugin-cloud-settings',
|
||||
install:
|
||||
'ionic cordova plugin add cordova-plugin-cloud-settings --variable ANDROID_BACKUP_SERVICE_KEY=myapikey',
|
||||
installVariables: ['ANDROID_BACKUP_SERVICE_KEY'],
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class CloudSettings extends IonicNativePlugin {
|
||||
/**
|
||||
* Indicates if any stored cloud settings currently exist for the current user.
|
||||
* @return {Promise<boolean>} Will be passed a boolean flag which indicates whether an store settings exist for the user.
|
||||
*/
|
||||
@Cordova()
|
||||
exists(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the settings to cloud backup.
|
||||
* @param {object} settings - a JSON structure representing the user settings to save to cloud backup.
|
||||
* @param {boolean} [overwrite] - (optional) if true, existing settings will be replaced rather than updated. Defaults to false.
|
||||
* If false, existing settings will be merged with the new settings passed to this function.
|
||||
* @return {Promise<any>} Will be passed a single object argument which contains the saved settings as a JSON object.
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
})
|
||||
save(settings: any, overwrite?: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the current settings.
|
||||
* @return {Promise<any>} Will be passed a single object argument which contains the saved settings as a JSON object.
|
||||
*/
|
||||
@Cordova()
|
||||
load(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a function which will be called if/when settings on the device have been updated from the cloud.
|
||||
* @param {Function} handler - callback function to invoke when device settings have been updated from the cloud.
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
onRestore(handler: Function): void {}
|
||||
|
||||
/**
|
||||
* Outputs verbose log messages from the native plugin components to the JS console.
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
enableDebug(): Promise<void> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,18 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
namespace Http {
|
||||
export const enum Verb {
|
||||
GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH
|
||||
GET,
|
||||
HEAD,
|
||||
POST,
|
||||
PUT,
|
||||
DELETE,
|
||||
TRACE,
|
||||
OPTIONS,
|
||||
CONNECT,
|
||||
PATCH
|
||||
}
|
||||
|
||||
export interface Response {
|
||||
@@ -13,7 +22,12 @@ namespace Http {
|
||||
|
||||
export interface Requester {
|
||||
request(verb: Verb, url: string, callback: Callback<Response>): void;
|
||||
request(verb: Verb, url: string, requestBody: string, callback: Callback<Response>): void;
|
||||
request(
|
||||
verb: Verb,
|
||||
url: string,
|
||||
requestBody: string,
|
||||
callback: Callback<Response>
|
||||
): void;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,19 +60,26 @@ export interface IRemotePackage extends IPackage {
|
||||
/**
|
||||
* Downloads the package update from the CodePush service.
|
||||
*
|
||||
* @param downloadSuccess Called with one parameter, the downloaded package information, once the download completed successfully.
|
||||
* @param downloadError Optional callback invoked in case of an error.
|
||||
* @param downloadProgress Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter.
|
||||
* @param {SuccessCallback} downloadSuccess Called with one parameter, the downloaded package information, once the download completed successfully.
|
||||
* @param {ErrorCallback} [downloadError] Optional callback invoked in case of an error.
|
||||
* @param {SuccessCallback<DownloadProgress>} [downloadProgress] Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter.
|
||||
*/
|
||||
download(downloadSuccess: SuccessCallback<ILocalPackage>, downloadError?: ErrorCallback, downloadProgress?: SuccessCallback<DownloadProgress>): void;
|
||||
download(
|
||||
downloadSuccess: SuccessCallback<ILocalPackage>,
|
||||
downloadError?: ErrorCallback,
|
||||
downloadProgress?: SuccessCallback<DownloadProgress>
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Aborts the current download session, previously started with download().
|
||||
*
|
||||
* @param abortSuccess Optional callback invoked if the abort operation succeeded.
|
||||
* @param abortError Optional callback invoked in case of an error.
|
||||
* @param {SuccessCallback<void>} [abortSuccess] Optional callback invoked if the abort operation succeeded.
|
||||
* @param {ErrorCallback} [abortError] Optional callback invoked in case of an error.
|
||||
*/
|
||||
abortDownload(abortSuccess?: SuccessCallback<void>, abortError?: ErrorCallback): void;
|
||||
abortDownload(
|
||||
abortSuccess?: SuccessCallback<void>,
|
||||
abortError?: ErrorCallback
|
||||
): void;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,11 +103,15 @@ export interface ILocalPackage extends IPackage {
|
||||
* On the first run after the update, the application will wait for a codePush.notifyApplicationReady() call. Once this call is made, the install operation is considered a success.
|
||||
* Otherwise, the install operation will be marked as failed, and the application is reverted to its previous version on the next run.
|
||||
*
|
||||
* @param installSuccess Callback invoked if the install operation succeeded.
|
||||
* @param installError Optional callback inovoked in case of an error.
|
||||
* @param installOptions Optional parameter used for customizing the installation behavior.
|
||||
* @param {SuccessCallback<InstallMode>} installSuccess Callback invoked if the install operation succeeded.
|
||||
* @param {ErrorCallback} [installError] Optional callback invoked in case of an error.
|
||||
* @param {InstallOptions} [installOptions] Optional parameter used for customizing the installation behavior.
|
||||
*/
|
||||
install(installSuccess: SuccessCallback<InstallMode>, errorCallback?: ErrorCallback, installOptions?: InstallOptions): void;
|
||||
install(
|
||||
installSuccess: SuccessCallback<InstallMode>,
|
||||
errorCallback?: ErrorCallback,
|
||||
installOptions?: InstallOptions
|
||||
): void;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -109,8 +134,8 @@ interface LocalPackage_Static {
|
||||
}
|
||||
/* tslint:enable */
|
||||
|
||||
declare var RemotePackage: RemotePackage_Static;
|
||||
declare var LocalPackage: LocalPackage_Static;
|
||||
declare const RemotePackage: RemotePackage_Static;
|
||||
declare const LocalPackage: LocalPackage_Static;
|
||||
|
||||
/**
|
||||
* Defines the JSON format of the current package information file.
|
||||
@@ -123,13 +148,19 @@ interface IPackageInfoMetadata extends ILocalPackage {
|
||||
}
|
||||
|
||||
interface NativeUpdateNotification {
|
||||
updateAppVersion: boolean; // Always true
|
||||
updateAppVersion: boolean; // Always true
|
||||
appVersion: string;
|
||||
}
|
||||
|
||||
export interface Callback<T> { (error: Error, parameter: T): void; }
|
||||
export interface SuccessCallback<T> { (result?: T): void; }
|
||||
export interface ErrorCallback { (error?: Error): void; }
|
||||
export interface Callback<T> {
|
||||
(error: Error, parameter: T): void;
|
||||
}
|
||||
export interface SuccessCallback<T> {
|
||||
(result?: T): void;
|
||||
}
|
||||
export interface ErrorCallback {
|
||||
(error?: Error): void;
|
||||
}
|
||||
|
||||
interface Configuration {
|
||||
appVersion: string;
|
||||
@@ -146,53 +177,80 @@ declare class AcquisitionStatus {
|
||||
|
||||
declare class AcquisitionManager {
|
||||
constructor(httpRequester: Http.Requester, configuration: Configuration);
|
||||
public queryUpdateWithCurrentPackage(currentPackage: IPackage, callback?: Callback<IRemotePackage | NativeUpdateNotification>): void;
|
||||
public reportStatusDeploy(pkg?: IPackage, status?: string, previousLabelOrAppVersion?: string, previousDeploymentKey?: string, callback?: Callback<void>): void;
|
||||
public queryUpdateWithCurrentPackage(
|
||||
currentPackage: IPackage,
|
||||
callback?: Callback<IRemotePackage | NativeUpdateNotification>
|
||||
): void;
|
||||
public reportStatusDeploy(
|
||||
pkg?: IPackage,
|
||||
status?: string,
|
||||
previousLabelOrAppVersion?: string,
|
||||
previousDeploymentKey?: string,
|
||||
callback?: Callback<void>
|
||||
): void;
|
||||
public reportStatusDownload(pkg: IPackage, callback?: Callback<void>): void;
|
||||
}
|
||||
|
||||
interface CodePushCordovaPlugin {
|
||||
|
||||
/**
|
||||
* Get the current package information.
|
||||
*
|
||||
* @param packageSuccess Callback invoked with the currently deployed package information.
|
||||
* @param packageError Optional callback invoked in case of an error.
|
||||
*/
|
||||
getCurrentPackage(packageSuccess: SuccessCallback<ILocalPackage>, packageError?: ErrorCallback): void;
|
||||
getCurrentPackage(
|
||||
packageSuccess: SuccessCallback<ILocalPackage>,
|
||||
packageError?: ErrorCallback
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Gets the pending package information, if any. A pending package is one that has been installed but the application still runs the old code.
|
||||
* This happends only after a package has been installed using ON_NEXT_RESTART or ON_NEXT_RESUME mode, but the application was not restarted/resumed yet.
|
||||
* This happens only after a package has been installed using ON_NEXT_RESTART or ON_NEXT_RESUME mode, but the application was not restarted/resumed yet.
|
||||
*/
|
||||
getPendingPackage(packageSuccess: SuccessCallback<ILocalPackage>, packageError?: ErrorCallback): void;
|
||||
getPendingPackage(
|
||||
packageSuccess: SuccessCallback<ILocalPackage>,
|
||||
packageError?: ErrorCallback
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Checks with the CodePush server if an update package is available for download.
|
||||
*
|
||||
* @param querySuccess Callback invoked in case of a successful response from the server.
|
||||
* @param {SuccessCallback<IRemotePackage>} querySuccess Callback invoked in case of a successful response from the server.
|
||||
* The callback takes one RemotePackage parameter. A non-null package is a valid update.
|
||||
* A null package means the application is up to date for the current native application version.
|
||||
* @param queryError Optional callback invoked in case of an error.
|
||||
* @param deploymentKey Optional deployment key that overrides the config.xml setting.
|
||||
* @param {ErrorCallback} [queryError] Optional callback invoked in case of an error.
|
||||
* @param {string} [deploymentKey] Optional deployment key that overrides the config.xml setting.
|
||||
*/
|
||||
checkForUpdate(querySuccess: SuccessCallback<IRemotePackage>, queryError?: ErrorCallback, deploymentKey?: string): void;
|
||||
checkForUpdate(
|
||||
querySuccess: SuccessCallback<IRemotePackage>,
|
||||
queryError?: ErrorCallback,
|
||||
deploymentKey?: string
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Notifies the plugin that the update operation succeeded and that the application is ready.
|
||||
* Calling this function is required on the first run after an update. On every subsequent application run, calling this function is a noop.
|
||||
* If using sync API, calling this function is not required since sync calls it internally.
|
||||
*
|
||||
* @param notifySucceeded Optional callback invoked if the plugin was successfully notified.
|
||||
* @param notifyFailed Optional callback invoked in case of an error during notifying the plugin.
|
||||
* @param {SuccessCallback<void>} [notifySucceeded] Optional callback invoked if the plugin was successfully notified.
|
||||
* @param {ErrorCallback} [notifyFailed] Optional callback invoked in case of an error during notifying the plugin.
|
||||
*/
|
||||
notifyApplicationReady(notifySucceeded?: SuccessCallback<void>, notifyFailed?: ErrorCallback): void;
|
||||
notifyApplicationReady(
|
||||
notifySucceeded?: SuccessCallback<void>,
|
||||
notifyFailed?: ErrorCallback
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Reloads the application. If there is a pending update package installed using ON_NEXT_RESTART or ON_NEXT_RESUME modes, the update
|
||||
* will be immediately visible to the user. Otherwise, calling this function will simply reload the current version of the application.
|
||||
*
|
||||
* @param {SuccessCallback<void>} installSuccess
|
||||
* @param {ErrorCallback} [errorCallback]
|
||||
*/
|
||||
restartApplication(installSuccess: SuccessCallback<void>, errorCallback?: ErrorCallback): void;
|
||||
restartApplication(
|
||||
installSuccess: SuccessCallback<void>,
|
||||
errorCallback?: ErrorCallback
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Convenience method for installing updates in one method call.
|
||||
@@ -209,13 +267,17 @@ interface CodePushCordovaPlugin {
|
||||
* - If no update is available on the server, or if a previously rolled back update is available and the ignoreFailedUpdates is set to true, the syncCallback will be invoked with the SyncStatus.UP_TO_DATE.
|
||||
* - If an error occurs during checking for update, downloading or installing it, the syncCallback will be invoked with the SyncStatus.ERROR.
|
||||
*
|
||||
* @param syncCallback Optional callback to be called with the status of the sync operation.
|
||||
* @param {SuccessCallback<SyncStatus>} [syncCallback] Optional callback to be called with the status of the sync operation.
|
||||
* The callback will be called only once, and the possible statuses are defined by the SyncStatus enum.
|
||||
* @param syncOptions Optional SyncOptions parameter configuring the behavior of the sync operation.
|
||||
* @param downloadProgress Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter.
|
||||
* @param {SyncOptions} [syncOptions] Optional SyncOptions parameter configuring the behavior of the sync operation.
|
||||
* @param {SuccessCallback<DownloadProgress>} [downloadProgress] Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter.
|
||||
*
|
||||
*/
|
||||
sync(syncCallback?: SuccessCallback<SyncStatus>, syncOptions?: SyncOptions, downloadProgress?: SuccessCallback<DownloadProgress>): void;
|
||||
sync(
|
||||
syncCallback?: SuccessCallback<SyncStatus>,
|
||||
syncOptions?: SyncOptions,
|
||||
downloadProgress?: SuccessCallback<DownloadProgress>
|
||||
): void;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -400,7 +462,7 @@ export interface DownloadProgress {
|
||||
* @description
|
||||
* CodePush plugin for Cordova by Microsoft that supports iOS and Android.
|
||||
*
|
||||
* For more info, please see https://github.com/ksachdeva/ionic2-code-push-example
|
||||
* For more info, please see https://github.com/Dellos7/example-cordova-code-push-plugin
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
@@ -428,12 +490,9 @@ export interface DownloadProgress {
|
||||
})
|
||||
@Injectable()
|
||||
export class CodePush extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Get the current package information.
|
||||
*
|
||||
* @param packageSuccess Callback invoked with the currently deployed package information.
|
||||
* @param packageError Optional callback invoked in case of an error.
|
||||
* @returns {Promise<ILocalPackage>}
|
||||
*/
|
||||
@Cordova()
|
||||
@@ -443,7 +502,7 @@ export class CodePush extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Gets the pending package information, if any. A pending package is one that has been installed but the application still runs the old code.
|
||||
* This happends only after a package has been installed using ON_NEXT_RESTART or ON_NEXT_RESUME mode, but the application was not restarted/resumed yet.
|
||||
* This happens only after a package has been installed using ON_NEXT_RESTART or ON_NEXT_RESUME mode, but the application was not restarted/resumed yet.
|
||||
* @returns {Promise<ILocalPackage>}
|
||||
*/
|
||||
@Cordova()
|
||||
@@ -454,11 +513,7 @@ export class CodePush extends IonicNativePlugin {
|
||||
/**
|
||||
* Checks with the CodePush server if an update package is available for download.
|
||||
*
|
||||
* @param querySuccess Callback invoked in case of a successful response from the server.
|
||||
* The callback takes one RemotePackage parameter. A non-null package is a valid update.
|
||||
* A null package means the application is up to date for the current native application version.
|
||||
* @param queryError Optional callback invoked in case of an error.
|
||||
* @param deploymentKey Optional deployment key that overrides the config.xml setting.
|
||||
* @param {string} [deploymentKey] Optional deployment key that overrides the config.xml setting.
|
||||
* @returns {Promise<IRemotePackage>}
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -473,8 +528,6 @@ export class CodePush extends IonicNativePlugin {
|
||||
* Calling this function is required on the first run after an update. On every subsequent application run, calling this function is a noop.
|
||||
* If using sync API, calling this function is not required since sync calls it internally.
|
||||
*
|
||||
* @param notifySucceeded Optional callback invoked if the plugin was successfully notified.
|
||||
* @param notifyFailed Optional callback invoked in case of an error during notifying the plugin.
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
@@ -507,9 +560,8 @@ export class CodePush extends IonicNativePlugin {
|
||||
* - If no update is available on the server, or if a previously rolled back update is available and the ignoreFailedUpdates is set to true, the syncCallback will be invoked with the SyncStatus.UP_TO_DATE.
|
||||
* - If an error occurs during checking for update, downloading or installing it, the syncCallback will be invoked with the SyncStatus.ERROR.
|
||||
*
|
||||
* @param syncCallback Optional callback to be called with the status of the sync operation.
|
||||
* @param syncOptions Optional SyncOptions parameter configuring the behavior of the sync operation.
|
||||
* @param downloadProgress Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter.
|
||||
* @param {SyncOptions} [syncOptions] Optional SyncOptions parameter configuring the behavior of the sync operation.
|
||||
* @param {SuccessCallback<DownloadProgress>} [downloadProgress] Optional callback invoked during the download process. It is called several times with one DownloadProgress parameter.
|
||||
* @returns {Observable<SyncStatus>}
|
||||
*
|
||||
*/
|
||||
@@ -518,8 +570,10 @@ export class CodePush extends IonicNativePlugin {
|
||||
successIndex: 0,
|
||||
errorIndex: 3 // we don't need this, so we set it to a value higher than # of args
|
||||
})
|
||||
sync(syncOptions?: SyncOptions, downloadProgress?: SuccessCallback<DownloadProgress>): Observable<SyncStatus> {
|
||||
sync(
|
||||
syncOptions?: SyncOptions,
|
||||
downloadProgress?: SuccessCallback<DownloadProgress>
|
||||
): Observable<SyncStatus> {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,47 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
|
||||
import {
|
||||
checkAvailability,
|
||||
CordovaCheck,
|
||||
CordovaInstance,
|
||||
getPromise,
|
||||
InstanceCheck,
|
||||
InstanceProperty,
|
||||
IonicNativePlugin,
|
||||
Plugin
|
||||
} from '@ionic-native/core';
|
||||
|
||||
declare var window: any,
|
||||
navigator: any;
|
||||
declare const window: any, navigator: any;
|
||||
|
||||
export type ContactFieldType = '*' | 'addresses' | 'birthday' | 'categories' | 'country' | 'department' | 'displayName' | 'emails' | 'familyName' | 'formatted' | 'givenName' | 'honorificPrefix' | 'honorificSuffix' | 'id' | 'ims' | 'locality' | 'middleName' | 'name' | 'nickname' | 'note' | 'organizations' | 'phoneNumbers' | 'photos' | 'postalCode' | 'region' | 'streetAddress' | 'title' | 'urls';
|
||||
export type ContactFieldType =
|
||||
| '*'
|
||||
| 'addresses'
|
||||
| 'birthday'
|
||||
| 'categories'
|
||||
| 'country'
|
||||
| 'department'
|
||||
| 'displayName'
|
||||
| 'emails'
|
||||
| 'name.familyName'
|
||||
| 'name.formatted'
|
||||
| 'name.givenName'
|
||||
| 'name.honorificPrefix'
|
||||
| 'name.honorificSuffix'
|
||||
| 'id'
|
||||
| 'ims'
|
||||
| 'locality'
|
||||
| 'name.middleName'
|
||||
| 'name'
|
||||
| 'nickname'
|
||||
| 'note'
|
||||
| 'organizations'
|
||||
| 'phoneNumbers'
|
||||
| 'photos'
|
||||
| 'postalCode'
|
||||
| 'region'
|
||||
| 'streetAddress'
|
||||
| 'title'
|
||||
| 'urls';
|
||||
|
||||
export interface IContactProperties {
|
||||
|
||||
/** A globally unique identifier. */
|
||||
id?: string;
|
||||
|
||||
@@ -71,15 +105,19 @@ export class Contact implements IContactProperties {
|
||||
@InstanceProperty categories: IContactField[];
|
||||
@InstanceProperty urls: IContactField[];
|
||||
|
||||
[key: string]: any;
|
||||
|
||||
constructor() {
|
||||
if (checkAvailability('navigator.contacts', 'create', 'Contacts') === true) {
|
||||
if (
|
||||
checkAvailability('navigator.contacts', 'create', 'Contacts') === true
|
||||
) {
|
||||
this._objectInstance = navigator.contacts.create();
|
||||
}
|
||||
}
|
||||
|
||||
@InstanceCheck()
|
||||
clone(): Contact {
|
||||
let newContact = new Contact();
|
||||
let newContact: any = new Contact();
|
||||
for (let prop in this) {
|
||||
if (prop === 'id') return;
|
||||
newContact[prop] = this[prop];
|
||||
@@ -88,12 +126,14 @@ export class Contact implements IContactProperties {
|
||||
}
|
||||
|
||||
@CordovaInstance()
|
||||
remove(): Promise<any> { return; }
|
||||
remove(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@InstanceCheck()
|
||||
save(): Promise<any> {
|
||||
return getPromise((resolve, reject) => {
|
||||
this._objectInstance.save((contact) => {
|
||||
return getPromise((resolve: Function, reject: Function) => {
|
||||
this._objectInstance.save((contact: any) => {
|
||||
this._objectInstance = contact;
|
||||
resolve(this);
|
||||
}, reject);
|
||||
@@ -114,7 +154,7 @@ export interface IContactError {
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
export declare var ContactError: {
|
||||
export declare const ContactError: {
|
||||
new (code: number): IContactError;
|
||||
UNKNOWN_ERROR: number;
|
||||
INVALID_ARGUMENT_ERROR: number;
|
||||
@@ -122,7 +162,7 @@ export declare var ContactError: {
|
||||
PENDING_OPERATION_ERROR: number;
|
||||
IO_ERROR: number;
|
||||
NOT_SUPPORTED_ERROR: number;
|
||||
PERMISSION_DENIED_ERROR: number
|
||||
PERMISSION_DENIED_ERROR: number;
|
||||
};
|
||||
|
||||
export interface IContactName {
|
||||
@@ -144,17 +184,19 @@ export interface IContactName {
|
||||
* @hidden
|
||||
*/
|
||||
export class ContactName implements IContactName {
|
||||
constructor(public formatted?: string,
|
||||
public familyName?: string,
|
||||
public givenName?: string,
|
||||
public middleName?: string,
|
||||
public honorificPrefix?: string,
|
||||
public honorificSuffix?: string) {}
|
||||
constructor(
|
||||
public formatted?: string,
|
||||
public familyName?: string,
|
||||
public givenName?: string,
|
||||
public middleName?: string,
|
||||
public honorificPrefix?: string,
|
||||
public honorificSuffix?: string
|
||||
) {}
|
||||
}
|
||||
|
||||
export interface IContactField {
|
||||
/** A string that indicates what type of field this is, home for example. */
|
||||
type?: string;
|
||||
type?: string;
|
||||
/** The value of the field, such as a phone number or email address. */
|
||||
value?: string;
|
||||
/** Set to true if this ContactField contains the user's preferred value. */
|
||||
@@ -165,16 +207,18 @@ export interface IContactField {
|
||||
* @hidden
|
||||
*/
|
||||
export class ContactField implements IContactField {
|
||||
constructor(public type?: string,
|
||||
public value?: string,
|
||||
public pref?: boolean) {}
|
||||
constructor(
|
||||
public type?: string,
|
||||
public value?: string,
|
||||
public pref?: boolean
|
||||
) {}
|
||||
}
|
||||
|
||||
export interface IContactAddress {
|
||||
/** Set to true if this ContactAddress contains the user's preferred value. */
|
||||
pref?: boolean;
|
||||
/** A string indicating what type of field this is, home for example. */
|
||||
type?: string;
|
||||
type?: string;
|
||||
/** The full address formatted for display. */
|
||||
formatted?: string;
|
||||
/** The full street address. */
|
||||
@@ -193,21 +237,23 @@ export interface IContactAddress {
|
||||
* @hidden
|
||||
*/
|
||||
export class ContactAddress implements IContactAddress {
|
||||
constructor(public pref?: boolean,
|
||||
public type?: string,
|
||||
public formatted?: string,
|
||||
public streetAddress?: string,
|
||||
public locality?: string,
|
||||
public region?: string,
|
||||
public postalCode?: string,
|
||||
public country?: string) {}
|
||||
constructor(
|
||||
public pref?: boolean,
|
||||
public type?: string,
|
||||
public formatted?: string,
|
||||
public streetAddress?: string,
|
||||
public locality?: string,
|
||||
public region?: string,
|
||||
public postalCode?: string,
|
||||
public country?: string
|
||||
) {}
|
||||
}
|
||||
|
||||
export interface IContactOrganization {
|
||||
/** Set to true if this ContactOrganization contains the user's preferred value. */
|
||||
pref?: boolean;
|
||||
/** A string that indicates what type of field this is, home for example. */
|
||||
type?: string;
|
||||
type?: string;
|
||||
/** The name of the organization. */
|
||||
name?: string;
|
||||
/** The department the contract works for. */
|
||||
@@ -247,10 +293,12 @@ export interface IContactFindOptions {
|
||||
* @hidden
|
||||
*/
|
||||
export class ContactFindOptions implements IContactFindOptions {
|
||||
constructor(public filter?: string,
|
||||
public multiple?: boolean,
|
||||
public desiredFields?: string[],
|
||||
public hasPhoneNumber?: boolean) {}
|
||||
constructor(
|
||||
public filter?: string,
|
||||
public multiple?: boolean,
|
||||
public desiredFields?: string[],
|
||||
public hasPhoneNumber?: boolean
|
||||
) {}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -291,11 +339,19 @@ 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',
|
||||
'Browser',
|
||||
'Firefox OS',
|
||||
'iOS',
|
||||
'Ubuntu',
|
||||
'Windows',
|
||||
'Windows 8',
|
||||
'Windows Phone'
|
||||
]
|
||||
})
|
||||
@Injectable()
|
||||
export class Contacts extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Create a single contact.
|
||||
* @returns {Contact} Returns a Contact object
|
||||
@@ -306,16 +362,24 @@ export class Contacts extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Search for contacts in the Contacts list.
|
||||
* @param fields {ContactFieldType[]} Contact fields to be used as a search qualifier
|
||||
* @param options {IContactFindOptions} Optional options for the query
|
||||
* @param {ContactFieldType[]} fields Contact fields to be used as a search qualifier
|
||||
* @param {IContactFindOptions} [options] Optional options for the query
|
||||
* @returns {Promise<Contact[]>} Returns a Promise that resolves with the search results (an array of Contact objects)
|
||||
*/
|
||||
@CordovaCheck()
|
||||
find(fields: ContactFieldType[], options?: IContactFindOptions): Promise<Contact[]> {
|
||||
return getPromise((resolve, reject) => {
|
||||
navigator.contacts.find(fields, (contacts) => {
|
||||
resolve(contacts.map(processContact));
|
||||
}, reject, options);
|
||||
find(
|
||||
fields: ContactFieldType[],
|
||||
options?: IContactFindOptions
|
||||
): Promise<Contact[]> {
|
||||
return getPromise((resolve: Function, reject: Function) => {
|
||||
navigator.contacts.find(
|
||||
fields,
|
||||
(contacts: any[]) => {
|
||||
resolve(contacts.map(processContact));
|
||||
},
|
||||
reject,
|
||||
options
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -325,17 +389,19 @@ export class Contacts extends IonicNativePlugin {
|
||||
*/
|
||||
@CordovaCheck()
|
||||
pickContact(): Promise<Contact> {
|
||||
return getPromise((resolve, reject) => {
|
||||
navigator.contacts.pickContact((contact) => resolve(processContact(contact)), reject);
|
||||
return getPromise((resolve: Function, reject: Function) => {
|
||||
navigator.contacts.pickContact(
|
||||
(contact: any) => resolve(processContact(contact)),
|
||||
reject
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
function processContact(contact) {
|
||||
function processContact(contact: any) {
|
||||
let newContact = new Contact();
|
||||
for (let prop in contact) {
|
||||
if (typeof contact[prop] === 'function') continue;
|
||||
|
||||
@@ -8,22 +8,113 @@ import { Injectable } from '@angular/core';
|
||||
* Plugin to install Couchbase Lite in your PhoneGap app on iOS or Android
|
||||
*
|
||||
* @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']
|
||||
@@ -38,6 +129,6 @@ export class CouchbaseLite extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
callbackStyle: 'node'
|
||||
})
|
||||
getURL(): Promise<any> { return; }
|
||||
getURL(): Promise<any> { return; }
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
export interface CropOptions {
|
||||
quality?: number;
|
||||
targetHeight?: number;
|
||||
targetWidth?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Crop
|
||||
* @description Crops images
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { Crop } from '@ionic-native/crop';
|
||||
*
|
||||
* constructor(private crop: Crop) { }
|
||||
@@ -14,10 +20,12 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
*
|
||||
* this.crop.crop('path/to/image.jpg', {quality: 75})
|
||||
* .then(
|
||||
* newImage => console.log("new image path is: " + newImage),
|
||||
* error => console.error("Error cropping image", error)
|
||||
* newImage => console.log('new image path is: ' + newImage),
|
||||
* error => console.error('Error cropping image', error)
|
||||
* );
|
||||
* ```
|
||||
* @interfaces
|
||||
* CropOptions
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Crop',
|
||||
@@ -28,16 +36,16 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
})
|
||||
@Injectable()
|
||||
export class Crop extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Crops an image
|
||||
* @param pathToImage
|
||||
* @param options
|
||||
* @param {string} pathToImage
|
||||
* @param {CropOptions} [options]
|
||||
* @returns {Promise<string>} Returns a promise that resolves with the new image path, or rejects if failed to crop.
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
crop(pathToImage: string, options?: {quality: number}): Promise<string> { return; }
|
||||
|
||||
crop(pathToImage: string, options?: CropOptions): Promise<string> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface DatePickerOptions {
|
||||
/**
|
||||
@@ -21,13 +21,13 @@ export interface DatePickerOptions {
|
||||
|
||||
/**
|
||||
* Maximum date
|
||||
* Default?: empty String
|
||||
* Default: empty String
|
||||
*/
|
||||
maxDate?: Date | string | number;
|
||||
|
||||
/**
|
||||
* Label for the dialog title. If empty, uses android default (Set date/Set time).
|
||||
* Default?: empty String
|
||||
* Default: empty String
|
||||
*/
|
||||
titleText?: string;
|
||||
|
||||
@@ -116,7 +116,6 @@ export interface DatePickerOptions {
|
||||
* Force locale for datePicker.
|
||||
*/
|
||||
locale?: string;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -155,7 +154,6 @@ export interface DatePickerOptions {
|
||||
})
|
||||
@Injectable()
|
||||
export class DatePicker extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
@@ -176,5 +174,4 @@ export class DatePicker extends IonicNativePlugin {
|
||||
show(options: DatePickerOptions): Promise<Date> {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
/**
|
||||
@@ -21,7 +21,7 @@ import { Observable } from 'rxjs/Observable';
|
||||
*
|
||||
* // Check if we are listening
|
||||
* this.dbMeter.isListening().then(
|
||||
* (isListening: boolean) => console.log(isListening)
|
||||
* isListening => console.log(isListening)
|
||||
* );
|
||||
*
|
||||
* // Stop listening
|
||||
@@ -39,11 +39,10 @@ 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 {
|
||||
|
||||
/**
|
||||
* Starts listening
|
||||
* @returns {Observable<any>} Returns an observable. Subscribe to start listening. Unsubscribe to stop listening.
|
||||
@@ -52,27 +51,34 @@ export class DBMeter extends IonicNativePlugin {
|
||||
observable: true,
|
||||
clearFunction: 'stop'
|
||||
})
|
||||
start(): Observable<any> { return; }
|
||||
start(): Observable<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops listening
|
||||
* @hidden
|
||||
*/
|
||||
@Cordova()
|
||||
stop(): Promise<any> { return; }
|
||||
stop(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the DB Meter is listening
|
||||
* @returns {Promise<boolean>} Returns a promise that resolves with a boolean that tells us whether the DB meter is listening
|
||||
*/
|
||||
@Cordova()
|
||||
isListening(): Promise<boolean> { return; }
|
||||
isListening(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the DB Meter instance
|
||||
* @returns {Promise<any>} Returns a promise that will resolve if the instance has been deleted, and rejects if errors occur.
|
||||
*/
|
||||
@Cordova()
|
||||
delete(): Promise<any> { return; }
|
||||
|
||||
delete(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -38,36 +45,36 @@ export interface DeeplinkMatch {
|
||||
* '/about-us': AboutPage,
|
||||
* '/universal-links-test': AboutPage,
|
||||
* '/products/:productId': ProductPage
|
||||
* }).subscribe((match) => {
|
||||
* }).subscribe(match => {
|
||||
* // match.$route - the route we matched, which is the matched entry from the arguments to route()
|
||||
* // match.$args - the args passed in the link
|
||||
* // match.$link - the full link data
|
||||
* console.log('Successfully matched route', match);
|
||||
* }, (nomatch) => {
|
||||
* }, nomatch => {
|
||||
* // nomatch.$link - the full link data
|
||||
* console.error('Got a deeplink that didn\'t match', nomatch);
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* 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
|
||||
* this.deeplinks.routeWithNavController(this.navController, {
|
||||
* '/about-us': AboutPage,
|
||||
* '/products/:productId': ProductPage
|
||||
* }).subscribe((match) => {
|
||||
* }).subscribe(match => {
|
||||
* // match.$route - the route we matched, which is the matched entry from the arguments to route()
|
||||
* // match.$args - the args passed in the link
|
||||
* // match.$link - the full link data
|
||||
* console.log('Successfully matched route', match);
|
||||
* }, (nomatch) => {
|
||||
* }, nomatch => {
|
||||
* // nomatch.$link - the full link data
|
||||
* console.error('Got a deeplink that didn\'t match', nomatch);
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* 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 {
|
||||
@@ -88,7 +95,7 @@ export class Deeplinks extends IonicNativePlugin {
|
||||
/**
|
||||
* Define a set of paths to match against incoming deeplinks.
|
||||
*
|
||||
* @param {paths} Define a set of paths to match against incoming deeplinks.
|
||||
* @param {paths} paths Define a set of paths to match against incoming deeplinks.
|
||||
* paths takes an object of the form { 'path': data }. If a deeplink
|
||||
* matches the path, the resulting path-data pair will be returned in the
|
||||
* promise result which you can then use to navigate in the app as you see fit.
|
||||
@@ -98,29 +105,33 @@ export class Deeplinks extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
route(paths): Observable<DeeplinkMatch> { return; }
|
||||
route(paths: any): Observable<DeeplinkMatch> { return; }
|
||||
|
||||
/**
|
||||
*
|
||||
* 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){}
|
||||
*
|
||||
* This handler will automatically navigate when a route matches. If you need finer-grained
|
||||
* control over the behavior of a matching deeplink, use the plain `route` method.
|
||||
*
|
||||
* @param {paths} Define a set of paths to match against incoming deeplinks.
|
||||
* @param {Nav} navController Define a set of paths to match against incoming deeplinks.
|
||||
* paths takes an object of the form { 'path': data }. If a deeplink
|
||||
* matches the path, the resulting path-data pair will be returned in the
|
||||
* 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.
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true
|
||||
})
|
||||
routeWithNavController(navController, paths): Observable<DeeplinkMatch> { return; }
|
||||
routeWithNavController(navController: any, paths: any, options?: DeeplinkOptions): Observable<DeeplinkMatch> { return; }
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AndroidAccount {
|
||||
/** Account creator */
|
||||
CREATOR: AndroidAccount;
|
||||
|
||||
/** Account name */
|
||||
name: string;
|
||||
|
||||
/** Account type */
|
||||
type: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Device Accounts
|
||||
@@ -19,43 +30,52 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
* .catch(error => console.error(error));
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* AndroidAccount
|
||||
*/
|
||||
@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()
|
||||
export class DeviceAccounts extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Gets all accounts registered on the Android Device
|
||||
* @returns {Promise<any>}
|
||||
* @returns {Promise<AndroidAccount[]>}
|
||||
*/
|
||||
@Cordova()
|
||||
get(): Promise<any> { return; }
|
||||
get(): Promise<AndroidAccount[]> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all accounts registered on Android device for requested type
|
||||
* @returns {Promise<any>}
|
||||
* @param {string} type
|
||||
* @returns {Promise<AndroidAccount[]>}
|
||||
*/
|
||||
@Cordova()
|
||||
getByType(type: string): Promise<any> { return; }
|
||||
getByType(type: string): Promise<AndroidAccount[]> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all emails registered on Android device (accounts with 'com.google' type)
|
||||
* @returns {Promise<any>}
|
||||
* @returns {Promise<string[]>}
|
||||
*/
|
||||
@Cordova()
|
||||
getEmails(): Promise<any> { return; }
|
||||
getEmails(): Promise<string[]> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first email registered on Android device
|
||||
* @returns {Promise<any>}
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
getEmail(): Promise<any> { return; }
|
||||
|
||||
getEmail(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface DeviceFeedbackEnabled {
|
||||
/** Haptic Feedback */
|
||||
haptic: boolean;
|
||||
|
||||
/** Acoustic Feedback */
|
||||
acoustic: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Device Feedback
|
||||
* @description
|
||||
@@ -7,7 +16,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
* Plugin that lets you provide haptic or acoustic feedback on Android devices.
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* ```typescript
|
||||
* import { DeviceFeedback } from '@ionic-native/device-feedback';
|
||||
*
|
||||
* constructor(private deviceFeedback: DeviceFeedback) { }
|
||||
@@ -19,8 +28,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
*
|
||||
* this.deviceFeedback.haptic(0);
|
||||
*
|
||||
* this.deviceFeedback.isFeedbackEnabled()
|
||||
* .then((feedback) => {
|
||||
* this.deviceFeedback.isFeedbackEnabled().then(feedback => {
|
||||
* console.log(feedback);
|
||||
* // {
|
||||
* // acoustic: true,
|
||||
@@ -29,6 +37,8 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
* @innterfaces
|
||||
* DeviceFeedbackEnabled
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'DeviceFeedback',
|
||||
@@ -39,25 +49,25 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
})
|
||||
@Injectable()
|
||||
export class DeviceFeedback extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Provide sound feedback to user, nevertheless respect user's settings and current active device profile as native feedback do.
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
acoustic(): void { }
|
||||
acoustic(): void {}
|
||||
|
||||
/**
|
||||
* Provide vibrate feedback to user, nevertheless respect user's tactile feedback setting as native feedback do.
|
||||
* @param type {Number} Specify type of vibration feedback. 0 for long press, 1 for virtual key, or 3 for keyboard tap.
|
||||
* @param {number} type Specify type of vibration feedback. 0 for long press, 1 for virtual key, or 3 for keyboard tap.
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
haptic(type: number): void { }
|
||||
haptic(type: number): void {}
|
||||
|
||||
/**
|
||||
* Check if haptic and acoustic feedback is enabled by user settings.
|
||||
* @returns {Promise<any>}
|
||||
* @returns {Promise<DeviceFeedbackEnabled>}
|
||||
*/
|
||||
@Cordova()
|
||||
isFeedbackEnabled(): Promise<{ haptic: boolean; acoustic: boolean; }> { return; }
|
||||
|
||||
isFeedbackEnabled(): Promise<DeviceFeedbackEnabled> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
export interface DeviceOrientationCompassHeading {
|
||||
|
||||
/**
|
||||
* The heading in degrees from 0-359.99 at a single moment in time. (Number)
|
||||
*/
|
||||
@@ -22,12 +21,10 @@ export interface DeviceOrientationCompassHeading {
|
||||
/**
|
||||
* The time at which this heading was determined. (DOMTimeStamp)
|
||||
*/
|
||||
timestamp: any;
|
||||
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
export interface DeviceOrientationCompassOptions {
|
||||
|
||||
/**
|
||||
* How often to retrieve the compass heading in milliseconds. (Number) (Default: 100)
|
||||
*/
|
||||
@@ -37,7 +34,6 @@ export interface DeviceOrientationCompassOptions {
|
||||
* The change in degrees required to initiate a watchHeading success callback. When this value is set, frequency is ignored. (Number)
|
||||
*/
|
||||
filter?: number;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,23 +73,35 @@ 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 {
|
||||
|
||||
/**
|
||||
* Get the current compass heading.
|
||||
* @returns {Promise<DeviceOrientationCompassHeading>}
|
||||
*/
|
||||
@Cordova()
|
||||
getCurrentHeading(): Promise<DeviceOrientationCompassHeading> { return; }
|
||||
getCurrentHeading(): Promise<DeviceOrientationCompassHeading> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the device current heading at a regular interval
|
||||
*
|
||||
* Stop the watch by unsubscribing from the observable
|
||||
* @param {DeviceOrientationCompassOptions} options Options for compass. Frequency and Filter. Optional
|
||||
* @param {DeviceOrientationCompassOptions} [options] Options for compass. Frequency and Filter. Optional
|
||||
* @returns {Observable<DeviceOrientationCompassHeading>} Returns an observable that contains the compass heading
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -101,6 +109,9 @@ export class DeviceOrientation extends IonicNativePlugin {
|
||||
observable: true,
|
||||
clearFunction: 'clearWatch'
|
||||
})
|
||||
watchHeading(options?: DeviceOrientationCompassOptions): Observable<DeviceOrientationCompassHeading> { return; }
|
||||
|
||||
watchHeading(
|
||||
options?: DeviceOrientationCompassOptions
|
||||
): Observable<DeviceOrientationCompassHeading> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
declare var window: any;
|
||||
declare const window: any;
|
||||
|
||||
/**
|
||||
* @name Device
|
||||
@@ -24,7 +24,7 @@ declare var 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', 'Browser', 'iOS', 'macOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class Device extends IonicNativePlugin {
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
|
||||
import {
|
||||
Cordova,
|
||||
CordovaProperty,
|
||||
IonicNativePlugin,
|
||||
Plugin
|
||||
} from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Diagnostic
|
||||
@@ -43,7 +48,6 @@ import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-nati
|
||||
})
|
||||
@Injectable()
|
||||
export class Diagnostic extends IonicNativePlugin {
|
||||
|
||||
permission = {
|
||||
READ_CALENDAR: 'READ_CALENDAR',
|
||||
WRITE_CALENDAR: 'WRITE_CALENDAR',
|
||||
@@ -92,9 +96,23 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
CONTACTS: ['READ_CONTACTS', 'WRITE_CONTACTS', 'GET_ACCOUNTS'],
|
||||
LOCATION: ['ACCESS_FINE_LOCATION', 'ACCESS_COARSE_LOCATION'],
|
||||
MICROPHONE: ['RECORD_AUDIO'],
|
||||
PHONE: ['READ_PHONE_STATE', 'CALL_PHONE', 'ADD_VOICEMAIL', 'USE_SIP', 'PROCESS_OUTGOING_CALLS', 'READ_CALL_LOG', 'WRITE_CALL_LOG'],
|
||||
PHONE: [
|
||||
'READ_PHONE_STATE',
|
||||
'CALL_PHONE',
|
||||
'ADD_VOICEMAIL',
|
||||
'USE_SIP',
|
||||
'PROCESS_OUTGOING_CALLS',
|
||||
'READ_CALL_LOG',
|
||||
'WRITE_CALL_LOG'
|
||||
],
|
||||
SENSORS: ['BODY_SENSORS'],
|
||||
SMS: ['SEND_SMS', 'RECEIVE_SMS', 'READ_SMS', 'RECEIVE_WAP_PUSH', 'RECEIVE_MMS'],
|
||||
SMS: [
|
||||
'SEND_SMS',
|
||||
'RECEIVE_SMS',
|
||||
'READ_SMS',
|
||||
'RECEIVE_WAP_PUSH',
|
||||
'RECEIVE_MMS'
|
||||
],
|
||||
STORAGE: ['READ_EXTERNAL_STORAGE', 'WRITE_EXTERNAL_STORAGE']
|
||||
};
|
||||
|
||||
@@ -125,13 +143,25 @@ 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.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isLocationAvailable(): Promise<any> { return; }
|
||||
isLocationAvailable(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if Wifi is connected/enabled. On iOS this returns true if the device is connected to a network by WiFi. On Android and Windows 10 Mobile this returns true if the WiFi setting is set to enabled.
|
||||
@@ -139,15 +169,21 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isWifiAvailable(): Promise<any> { return; }
|
||||
isWifiAvailable(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the device has a camera. On Android this returns true if the device has a camera. On iOS this returns true if both the device has a camera AND the application is authorized to use it. On Windows 10 Mobile this returns true if both the device has a rear-facing camera AND the
|
||||
* application is authorized to use it.
|
||||
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
|
||||
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isCameraAvailable(): Promise<any> { return; }
|
||||
@Cordova({ callbackOrder: 'reverse' })
|
||||
isCameraAvailable(externalStorage?: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the device has Bluetooth capabilities and if so that Bluetooth is switched on (same on Android, iOS and Windows 10 Mobile)
|
||||
@@ -155,57 +191,64 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isBluetoothAvailable(): Promise<any> { return; }
|
||||
isBluetoothAvailable(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the device location settings to allow user to enable location services/change location mode.
|
||||
*/
|
||||
@Cordova({ sync: true, platforms: ['Android', 'Windows 10'] })
|
||||
switchToLocationSettings(): void { }
|
||||
@Cordova({ sync: true, platforms: ['Android', 'Windows 10', 'iOS'] })
|
||||
switchToLocationSettings(): void {}
|
||||
|
||||
/**
|
||||
* Displays mobile settings to allow user to enable mobile data.
|
||||
*/
|
||||
@Cordova({ sync: true, platforms: ['Android', 'Windows 10'] })
|
||||
switchToMobileDataSettings(): void { }
|
||||
switchToMobileDataSettings(): void {}
|
||||
|
||||
/**
|
||||
* Displays Bluetooth settings to allow user to enable Bluetooth.
|
||||
*/
|
||||
@Cordova({ sync: true, platforms: ['Android', 'Windows 10'] })
|
||||
switchToBluetoothSettings(): void { }
|
||||
switchToBluetoothSettings(): void {}
|
||||
|
||||
/**
|
||||
* Displays WiFi settings to allow user to enable WiFi.
|
||||
*/
|
||||
@Cordova({ sync: true, platforms: ['Android', 'Windows 10'] })
|
||||
switchToWifiSettings(): void { }
|
||||
switchToWifiSettings(): void {}
|
||||
|
||||
/**
|
||||
* Returns true if the WiFi setting is set to enabled, and is the same as `isWifiAvailable()`
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'Windows 10'] })
|
||||
isWifiEnabled(): Promise<boolean> { return; }
|
||||
isWifiEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables/disables WiFi on the device.
|
||||
* Requires `ACCESS_WIFI_STATE` and `CHANGE_WIFI_STATE` permissions on Android
|
||||
* @param state {boolean}
|
||||
* @param {boolean} state
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ callbackOrder: 'reverse', platforms: ['Android', 'Windows 10'] })
|
||||
setWifiState(state: boolean): Promise<any> { return; }
|
||||
setWifiState(state: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables/disables Bluetooth on the device.
|
||||
* Requires `BLUETOOTH` and `BLUETOOTH_ADMIN` permissions on Android
|
||||
* @param state {boolean}
|
||||
* @param {boolean} state
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ callbackOrder: 'reverse', platforms: ['Android', 'Windows 10'] })
|
||||
setBluetoothState(state: boolean): Promise<any> { return; }
|
||||
|
||||
setBluetoothState(state: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
// ANDROID AND IOS ONLY
|
||||
|
||||
@@ -214,7 +257,9 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
isLocationEnabled(): Promise<boolean> { return; }
|
||||
isLocationEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized to use location.
|
||||
@@ -222,14 +267,18 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
isLocationAuthorized(): Promise<any> { return; }
|
||||
isLocationAuthorized(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the location authorization status for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
getLocationAuthorizationStatus(): Promise<any> { return; }
|
||||
getLocationAuthorizationStatus(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the location authorization status for the application.
|
||||
@@ -239,78 +288,106 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
|
||||
requestLocationAuthorization(mode?: string): Promise<any> { return; }
|
||||
requestLocationAuthorization(mode?: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if camera hardware is present on device.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
isCameraPresent(): Promise<any> { return; }
|
||||
isCameraPresent(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized to use the camera.
|
||||
* Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return TRUE as permissions are already granted at installation time.
|
||||
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
|
||||
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
isCameraAuthorized(): Promise<any> { return; }
|
||||
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
|
||||
isCameraAuthorized(externalStorage?: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the camera authorization status for the application.
|
||||
* @param {boolean} [externalStorage] Android only: If true, checks permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
|
||||
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
getCameraAuthorizationStatus(): Promise<any> { return; }
|
||||
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
|
||||
getCameraAuthorizationStatus(externalStorage?: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests camera authorization for the application.
|
||||
* @param {boolean} [externalStorage] Android only: If true, requests permission for READ_EXTERNAL_STORAGE in addition to CAMERA run-time permission.
|
||||
* cordova-plugin-camera@2.2+ requires both of these permissions. Defaults to true.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
requestCameraAuthorization(): Promise<any> { return; }
|
||||
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
|
||||
requestCameraAuthorization(externalStorage?: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized to use the microphone.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
isMicrophoneAuthorized(): Promise<boolean> { return; }
|
||||
isMicrophoneAuthorized(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the microphone authorization status for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
getMicrophoneAuthorizationStatus(): Promise<any> { return; }
|
||||
getMicrophoneAuthorizationStatus(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests microphone authorization for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
requestMicrophoneAuthorization(): Promise<any> { return; }
|
||||
requestMicrophoneAuthorization(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized to use contacts (address book).
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
isContactsAuthorized(): Promise<boolean> { return; }
|
||||
isContactsAuthorized(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the contacts authorization status for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
getContactsAuthorizationStatus(): Promise<any> { return; }
|
||||
getContactsAuthorizationStatus(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests contacts authorization for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
requestContactsAuthorization(): Promise<any> { return; }
|
||||
requestContactsAuthorization(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized to use the calendar.
|
||||
@@ -323,7 +400,9 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
isCalendarAuthorized(): Promise<boolean> { return; }
|
||||
isCalendarAuthorized(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the calendar authorization status for the application.
|
||||
@@ -337,7 +416,9 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
getCalendarAuthorizationStatus(): Promise<any> { return; }
|
||||
getCalendarAuthorizationStatus(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests calendar authorization for the application.
|
||||
@@ -354,7 +435,9 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
requestCalendarAuthorization(): Promise<any> { return; }
|
||||
requestCalendarAuthorization(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens settings page for this app.
|
||||
@@ -363,39 +446,44 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
switchToSettings(): Promise<any> { return; }
|
||||
switchToSettings(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the state of Bluetooth on the device.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'] })
|
||||
getBluetoothState(): Promise<any> { return; }
|
||||
getBluetoothState(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a function to be called when a change in Bluetooth state occurs.
|
||||
* @param handler
|
||||
* @param {Function} handler
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'], sync: true })
|
||||
registerBluetoothStateChangeHandler(handler: Function): void { }
|
||||
registerBluetoothStateChangeHandler(handler: Function): void {}
|
||||
|
||||
/**
|
||||
* Registers a function to be called when a change in Location state occurs.
|
||||
* @param handler
|
||||
* @param {Function} handler
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'], sync: true })
|
||||
registerLocationStateChangeHandler(handler: Function): void { }
|
||||
|
||||
registerLocationStateChangeHandler(handler: Function): void {}
|
||||
|
||||
// ANDROID ONLY
|
||||
|
||||
/**
|
||||
* Checks if high-accuracy locations are available to the app from GPS hardware.
|
||||
* Returns true if Location mode is enabled and is set to "Device only" or "High accuracy" AND if the app is authorised to use location.
|
||||
* Returns true if Location mode is enabled and is set to "Device only" or "High accuracy" AND if the app is authorized to use location.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isGpsLocationAvailable(): Promise<boolean> { return; }
|
||||
isGpsLocationAvailable(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if location mode is set to return high-accuracy locations from GPS hardware.
|
||||
@@ -405,15 +493,19 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isGpsLocationEnabled(): Promise<any> { return; }
|
||||
isGpsLocationEnabled(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if low-accuracy locations are available to the app from network triangulation/WiFi access points.
|
||||
* Returns true if Location mode is enabled and is set to "Battery saving" or "High accuracy" AND if the app is authorised to use location.
|
||||
* Returns true if Location mode is enabled and is set to "Battery saving" or "High accuracy" AND if the app is authorized to use location.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isNetworkLocationAvailable(): Promise<any> { return; }
|
||||
isNetworkLocationAvailable(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if location mode is set to return low-accuracy locations from network triangulation/WiFi access points.
|
||||
@@ -423,50 +515,62 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isNetworkLocationEnabled(): Promise<any> { return; }
|
||||
isNetworkLocationEnabled(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current location mode setting for the device.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
getLocationMode(): Promise<any> { return; }
|
||||
getLocationMode(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current authorisation status for a given permission.
|
||||
* Returns the current authorization status for a given permission.
|
||||
* Note: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return GRANTED status as permissions are already granted at installation time.
|
||||
* @param permission
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'], callbackOrder: 'reverse' })
|
||||
getPermissionAuthorizationStatus(permission: any): Promise<any> { return; }
|
||||
getPermissionAuthorizationStatus(permission: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current authorisation status for multiple permissions.
|
||||
* Returns the current authorization status for multiple permissions.
|
||||
* Note: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return GRANTED status as permissions are already granted at installation time.
|
||||
* @param permissions
|
||||
* @param {any[]} permissions
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'], callbackOrder: 'reverse' })
|
||||
getPermissionsAuthorizationStatus(permissions: any[]): Promise<any> { return; }
|
||||
getPermissionsAuthorizationStatus(permissions: any[]): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests app to be granted authorisation for a runtime permission.
|
||||
* Requests app to be granted authorization for a runtime permission.
|
||||
* Note: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will have no effect as the permissions are already granted at installation time.
|
||||
* @param permission
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'], callbackOrder: 'reverse' })
|
||||
requestRuntimePermission(permission: any): Promise<any> { return; }
|
||||
requestRuntimePermission(permission: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests app to be granted authorisation for multiple runtime permissions.
|
||||
* Requests app to be granted authorization for multiple runtime permissions.
|
||||
* Note: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return GRANTED status as permissions are already granted at installation time.
|
||||
* @param permissions
|
||||
* @param {any[]} permissions
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'], callbackOrder: 'reverse' })
|
||||
requestRuntimePermissions(permissions: any[]): Promise<any> { return; }
|
||||
requestRuntimePermissions(permissions: any[]): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the plugin is currently requesting a runtime permission via the native API.
|
||||
@@ -476,15 +580,19 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {boolean}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
isRequestingPermission(): boolean { return; }
|
||||
isRequestingPermission(): boolean {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a function to be called when a runtime permission request has completed.
|
||||
* Pass in a falsey value to de-register the currently registered function.
|
||||
* @param handler {Function}
|
||||
* Pass in a falsy value to de-register the currently registered function.
|
||||
* @param {Function} handler
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
registerPermissionRequestCompleteHandler(handler: Function): void { return; }
|
||||
registerPermissionRequestCompleteHandler(handler: Function): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the device setting for Bluetooth is switched on.
|
||||
@@ -492,49 +600,63 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isBluetoothEnabled(): Promise<boolean> { return; }
|
||||
isBluetoothEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the device has Bluetooth capabilities.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
hasBluetoothSupport(): Promise<boolean> { return; }
|
||||
hasBluetoothSupport(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the device has Bluetooth Low Energy (LE) capabilities.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
hasBluetoothLESupport(): Promise<boolean> { return; }
|
||||
hasBluetoothLESupport(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the device supports Bluetooth Low Energy (LE) Peripheral mode.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
hasBluetoothLEPeripheralSupport(): Promise<boolean> { return; }
|
||||
hasBluetoothLEPeripheralSupport(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized to use external storage.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isExternalStorageAuthorized(): Promise<boolean> { return; }
|
||||
isExternalStorageAuthorized(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* CReturns the external storage authorization status for the application.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
getExternalStorageAuthorizationStatus(): Promise<any> { return; }
|
||||
getExternalStorageAuthorizationStatus(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests external storage authorization for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
requestExternalStorageAuthorization(): Promise<any> { return; }
|
||||
requestExternalStorageAuthorization(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns details of external SD card(s): absolute path, is writable, free space.
|
||||
@@ -547,7 +669,9 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
getExternalSdCardDetails(): Promise<any> { return; }
|
||||
getExternalSdCardDetails(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Switches to the wireless settings page in the Settings app. Allows configuration of wireless controls such as Wi-Fi, Bluetooth and Mobile networks.
|
||||
@@ -556,7 +680,7 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
platforms: ['Android'],
|
||||
sync: true
|
||||
})
|
||||
switchToWirelessSettings(): void { }
|
||||
switchToWirelessSettings(): void {}
|
||||
|
||||
/**
|
||||
* Displays NFC settings to allow user to enable NFC.
|
||||
@@ -565,14 +689,16 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
platforms: ['Android'],
|
||||
sync: true
|
||||
})
|
||||
switchToNFCSettings(): void { }
|
||||
switchToNFCSettings(): void {}
|
||||
|
||||
/**
|
||||
* Checks if NFC hardware is present on device.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isNFCPresent(): Promise<boolean> { return; }
|
||||
isNFCPresent(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the device setting for NFC is switched on.
|
||||
@@ -580,7 +706,9 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isNFCEnabled(): Promise<boolean> { return; }
|
||||
isNFCEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if NFC is available to the app. Returns true if the device has NFC capabilities AND if NFC setting is switched on.
|
||||
@@ -588,20 +716,47 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android'] })
|
||||
isNFCAvailable(): Promise<boolean> { return; }
|
||||
isNFCAvailable(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a function to be called when a change in NFC state occurs. Pass in a falsey value to de-register the currently registered function.
|
||||
* @param hander {Function} callback function to be called when NFC state changes
|
||||
* Registers a function to be called when a change in NFC state occurs. Pass in a falsy value to de-register the currently registered function.
|
||||
* @param {Function} hander callback function to be called when NFC state changes
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android'],
|
||||
sync: true
|
||||
})
|
||||
registerNFCStateChangeHandler(handler: Function): void { }
|
||||
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
|
||||
|
||||
@@ -610,14 +765,18 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isCameraRollAuthorized(): Promise<boolean> { return; }
|
||||
isCameraRollAuthorized(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the authorization status for the application to use the Camera Roll in Photos app.
|
||||
* @returns {Promise<boolean>}
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
getCameraRollAuthorizationStatus(): Promise<boolean> { return; }
|
||||
getCameraRollAuthorizationStatus(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests camera roll authorization for the application.
|
||||
@@ -626,21 +785,37 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
requestCameraRollAuthorization(): Promise<any> { return; }
|
||||
requestCameraRollAuthorization(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if remote (push) notifications are enabled.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isRemoteNotificationsEnabled(): Promise<boolean> { return; }
|
||||
@Cordova({ platforms: ['iOS', 'Android'] })
|
||||
isRemoteNotificationsEnabled(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the app is registered for remote (push) notifications on the device.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isRegisteredForRemoteNotifications(): Promise<boolean> { return; }
|
||||
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.
|
||||
@@ -648,42 +823,54 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
getRemoteNotificationTypes(): Promise<any> { return; }
|
||||
getRemoteNotificationTypes(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized to use reminders.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isRemindersAuthorized(): Promise<boolean> { return; }
|
||||
isRemindersAuthorized(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the reminders authorization status for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
getRemindersAuthorizationStatus(): Promise<any> { return; }
|
||||
getRemindersAuthorizationStatus(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests reminders authorization for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
requestRemindersAuthorization(): Promise<any> { return; }
|
||||
requestRemindersAuthorization(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the application is authorized for background refresh.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isBackgroundRefreshAuthorized(): Promise<boolean> { return; }
|
||||
isBackgroundRefreshAuthorized(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the background refresh authorization status for the application.
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
getBackgroundRefreshStatus(): Promise<any> { return; }
|
||||
getBackgroundRefreshStatus(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests Bluetooth authorization for the application.
|
||||
@@ -692,14 +879,18 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
requestBluetoothAuthorization(): Promise<any> { return; }
|
||||
requestBluetoothAuthorization(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if motion tracking is available on the current device.
|
||||
* @return {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isMotionAvailable(): Promise<boolean> { return; }
|
||||
isMotionAvailable(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if it's possible to determine the outcome of a motion authorization request on the current device.
|
||||
@@ -709,16 +900,31 @@ export class Diagnostic extends IonicNativePlugin {
|
||||
* @return {Promise<boolean>}
|
||||
*/
|
||||
@Cordova({ platforms: ['iOS'] })
|
||||
isMotionRequestOutcomeAvailable(): Promise<boolean> { return; }
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
|
||||
export interface DialogsPromptCallback {
|
||||
|
||||
/**
|
||||
* The index of the pressed button. (Number) Note that the index uses one-based indexing, so the value is 1, 2, 3, etc.
|
||||
*/
|
||||
@@ -13,10 +11,8 @@ export interface DialogsPromptCallback {
|
||||
* The text entered in the prompt dialog box. (String)
|
||||
*/
|
||||
input1: string;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @name Dialogs
|
||||
* @description
|
||||
@@ -45,52 +41,65 @@ 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', 'Browser', 'iOS', 'Windows']
|
||||
})
|
||||
@Injectable()
|
||||
export class Dialogs extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Shows a custom alert or dialog box.
|
||||
* @param {string} message Dialog message.
|
||||
* @param {string} title Dialog title. (Optional, defaults to Alert)
|
||||
* @param {string} buttonName Button name. (Optional, defaults to OK)
|
||||
* @param {string} [title] Dialog title. (Optional, defaults to Alert)
|
||||
* @param {string} [buttonName] Button name. (Optional, defaults to OK)
|
||||
* @returns {Promise<any>} Returns a blank promise once the user has dismissed the alert.
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 4
|
||||
})
|
||||
alert(message: string, title?: string, buttonName?: string): Promise<any> { return; }
|
||||
alert(message: string, title?: string, buttonName?: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a customizable confirmation dialog box.
|
||||
* @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.
|
||||
* @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, 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,
|
||||
errorIndex: 4
|
||||
})
|
||||
confirm(message, title?: string, buttonLabels?: string[]): Promise<number> { return; }
|
||||
confirm(
|
||||
message: string,
|
||||
title?: string,
|
||||
buttonLabels?: string[]
|
||||
): Promise<number> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a native dialog box that is more customizable than the browser's prompt function.
|
||||
* @param {string} message Dialog message.
|
||||
* @param {string} title Dialog title. (Optional, defaults to Prompt)
|
||||
* @param {Array<string>} buttonLabels Array of strings specifying button labels. (Optional, defaults to ["OK","Cancel"])
|
||||
* @param {string} defaultText Default textbox input value. (Optional, Default: empty string)
|
||||
* @param {string} [message] Dialog message.
|
||||
* @param {string} [title] Dialog title. (Optional, defaults to Prompt)
|
||||
* @param {Array<string>} [buttonLabels] Array of strings specifying button labels. (Optional, defaults to ["OK","Cancel"])
|
||||
* @param {string} [defaultText] Default text box input value. (Optional, Default: empty string)
|
||||
* @returns {Promise<DialogsPromptCallback>} Returns a promise that resolves an object with the button index clicked and the text entered
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 5
|
||||
})
|
||||
prompt(message?: string, title?: string, buttonLabels?: string[], defaultText?: string): Promise<DialogsPromptCallback> { return; }
|
||||
|
||||
prompt(
|
||||
message?: string,
|
||||
title?: string,
|
||||
buttonLabels?: string[],
|
||||
defaultText?: string
|
||||
): Promise<DialogsPromptCallback> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* The device plays a beep sound.
|
||||
@@ -99,6 +108,5 @@ export class Dialogs extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
beep(times: number): void { }
|
||||
|
||||
beep(times: number): void {}
|
||||
}
|
||||
|
||||
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; }
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user