Compare commits

..

902 Commits

Author SHA1 Message Date
Ibby Hadeed
a3c46216f6 chore(): update changelog 2018-04-09 07:44:58 -04:00
Ibby Hadeed
1be1d5b577 4.7.0 2018-04-09 07:44:51 -04:00
Daniel Sogl
eb760a5136 Merge pull request #2441 from hahahannes/master
feat(plugin): Add google nearby plugin
2018-04-09 06:49:47 +02:00
Hannes
8f1854c180 refactor(GoogleNearby): add requested changes 2018-04-08 22:21:18 +02:00
Daniel
5d1c8c225b docs(ftp): fix jsdoc 2018-04-08 21:48:34 +02:00
Daniel
237ea0d90d docs(flurry-analytics): fix jsdoc 2018-04-08 21:47:25 +02:00
Daniel
bee3d639cb docs(firebase-analytics): fix jsdoc 2018-04-08 21:45:48 +02:00
Daniel
1cc7243ef9 docs(firebase): fix docs 2018-04-08 21:44:57 +02:00
Daniel
87f8505d93 docs(fingerprint-aio): typo 2018-04-08 21:39:33 +02:00
Daniel
7e0b9a488d docs(file-transfer): fix jsdoc 2018-04-08 21:33:19 +02:00
Daniel
3e9e578781 docs(file-path): fix jsdoc 2018-04-08 21:32:20 +02:00
Daniel
06094c2b53 docs(file-opener): typo 2018-04-08 21:31:06 +02:00
Daniel
d598bf3416 docs(file-encryption): typo 2018-04-08 21:30:20 +02:00
Daniel
624f94f9f6 docs(file): typo 2018-04-08 21:29:39 +02:00
Daniel
e70885ca2f docs(fcm): typo 2018-04-08 21:26:14 +02:00
Daniel
095a6c5cf7 docs(estimote-beacons): typos 2018-04-08 21:24:30 +02:00
Daniel
38e7e65557 docs(email-composer): fix jsdoc 2018-04-08 21:21:37 +02:00
Daniel
4ab4aaf178 docs(document-picker): fix docs 2018-04-08 21:20:35 +02:00
Daniel
fc9add88dc docs(dialogs): fix jsdoc 2018-04-08 21:05:44 +02:00
Daniel
9e744e7c29 docs(diagnostic): typo 2018-04-08 21:00:17 +02:00
Daniel
a235b2493f docs(device-orientation): fix jsodc 2018-04-08 20:51:53 +02:00
Daniel
48ccc4c24e docs(device-feedback): fix jsdoc 2018-04-08 20:50:25 +02:00
Daniel
18da591f03 docs(device-accounts): add missing docs 2018-04-08 20:49:46 +02:00
Daniel
bca7f38bbf docs(crop): add missing docs 2018-04-08 20:48:14 +02:00
Daniel
7f24f89fc4 docs(contacts): fix jsdoc 2018-04-08 20:47:18 +02:00
Daniel
62241105c8 docs(card-io): fix jsdoc 2018-04-08 20:44:06 +02:00
Daniel Sogl
1e8626c435 chore(travis): fix lint 2018-04-08 19:52:33 +02:00
Daniel
7520a96cc6 docs(camera-preview): fix typos 2018-04-08 19:32:19 +02:00
Daniel
0af33923a8 BREAKING CHANGE: Removed Google Maps Plugin
Use this repository instead: https://github.com/ionic-team/ionic-native-google-maps
2018-04-08 19:30:04 +02:00
Daniel
9b83615af6 docs(call-number): fix jsdoc 2018-04-08 19:28:24 +02:00
Daniel
7f274ba9a3 docs(call-log): fix jsdoc 2018-04-08 19:27:40 +02:00
Daniel
1e539f8cd9 docs(calendar): typos 2018-04-08 19:20:20 +02:00
Daniel
87ba4b4d32 docs(browser-tab): improve example 2018-04-08 19:18:36 +02:00
Daniel
7ed6ab894b docs(broadcaster): fix jsdocs 2018-04-08 19:17:17 +02:00
Daniel
e095eecf5b docs(brightness): add missing doc 2018-04-08 19:12:38 +02:00
Daniel
502203936c docs(braintree): typo 2018-04-08 19:11:52 +02:00
Daniel
7cbe7a6287 docs(ble): add missing documentations 2018-04-08 19:09:43 +02:00
Daniel
376d16904c docs(battery-status): typo 2018-04-08 19:06:48 +02:00
Daniel
7a6b8ac917 docs(barcode-scanner): fix wrong jsdocs 2018-04-08 19:05:45 +02:00
Daniel
64cbb6181a docs(background-mode): add missing return types 2018-04-08 19:04:37 +02:00
Daniel
c26735f366 docs(apple-pay): typos 2018-04-08 19:00:09 +02:00
Daniel
2e07a7c04e docs(app-update): add missing param 2018-04-08 18:56:49 +02:00
Daniel
3bfc95ed78 refactor(app-center-push): rename variable 2018-04-08 18:52:49 +02:00
Daniel
4be721b8f5 refactor(core): beautify files and reorder imports 2018-04-08 18:48:55 +02:00
Daniel
15c73e46d0 docs(android-permissions): fix wrong jsdocs 2018-04-08 18:47:50 +02:00
Daniel
dd4d35d9e0 docs(android-fingerprint-auth): add missing interfaces 2018-04-08 18:46:21 +02:00
Daniel
d8f030b67d docs(android-exoplayer): fix typo and jsdocs 2018-04-08 18:39:07 +02:00
Daniel
3f82cfa527 docs(code-push): fix wrong jsdocs 2018-04-08 18:37:34 +02:00
Daniel
348dbb85b3 docs(alipay): fix wrong jsdoc 2018-04-08 18:28:52 +02:00
Daniel
2fda70a3c6 docs(admob-pro): fix wrong jsdocs 2018-04-08 18:27:59 +02:00
Daniel
5648bfc70f docs(action-sheet): add missing param interface 2018-04-08 18:26:01 +02:00
Daniel
1c03c3ff3c docs(admob-free): add missing documentation 2018-04-08 18:24:41 +02:00
Daniel
31c696d59d docs(action-sheet): fix wrong jsdocs 2018-04-08 18:22:48 +02:00
Hannes
eb1bcdd078 feat(plugin): Add google nearby plugin 2018-04-07 14:47:33 +02:00
Daniel Sogl
f7b5e2f15f docs(uptime): add iOS support
docs(uptime): add iOS support
2018-04-07 11:06:03 +02:00
Daniel Sogl
2628798064 docs(uptime): remove unneeded lines of code 2018-04-07 11:01:53 +02:00
Daniel Sogl
b3082bf5ac refactor(uptime): beautify 2018-04-07 11:00:19 +02:00
Silviu Bogdan Stroe
e6f6158b43 feat(uptime): add iOS support 2018-04-07 11:49:53 +03:00
Daniel
548860b1ff Merge remote-tracking branch 'origin/master' 2018-04-06 23:14:28 +02:00
Daniel
9aff5eaa13 fix(speech-recognition): add missing options
fix:  #2165
2018-04-06 23:14:11 +02:00
Daniel
67cf61d2a8 fear(speech-recognition): add missing options
fix:  #2165
2018-04-06 23:05:07 +02:00
Daniel
707ca8ea3c docs(qr-scanner): improve example
fix: #1876
2018-04-06 22:57:43 +02:00
Daniel
4cb28c41c8 feat(social-sharing): add missing function
fix: #2209
2018-04-06 22:54:11 +02:00
Daniel
e828100a40 refactor(sms): reorder imports 2018-04-06 22:48:42 +02:00
Daniel
439960092e fix(email-composer): add missing options
#175
2018-04-06 22:38:59 +02:00
Daniel
a81a4d3edf fix(uuid): add correct plugin source
fix: #2324
2018-04-06 22:34:06 +02:00
Daniel
859cbfcfc6 fix(image-resizer): add missing option 2018-04-06 22:30:25 +02:00
Daniel Sogl
4b4eb76352 feat(plugin): add Uptime plugin
feat(plugin): add Uptime plugin
2018-04-06 16:34:35 +02:00
Daniel Sogl
bc7bdc60b7 refactor(uptime): beautify 2018-04-06 16:33:00 +02:00
Silviu Bogdan Stroe
35ad7f6387 style(uptime): remove the unneeded comments
perf(uptime): add promise return type
2018-04-06 16:11:55 +03:00
Daniel Sogl
399055b963 docs(camera): fix small typo
docs(camera): fix small typo
2018-04-05 22:03:51 +02:00
Benjamin Morel
3a286b0243 Fix typo 2018-04-05 11:34:50 +02:00
Daniel Sogl
830b0e0ef9 feat(plugin): add Microsoft App Center Push plugin
feat(plugin): add Microsoft App Center Push plugin
2018-04-04 18:58:32 +02:00
Daniel
cdabebd487 feat(plugin): add Microsoft App Center Push plugin 2018-04-04 18:56:38 +02:00
Daniel Sogl
a38381d06c feat(plugin): add Microsoft App Center Analytics plugin
feat(plugin): add Microsoft App Center Analytics plugin
2018-04-04 18:34:37 +02:00
Daniel
44e0e2483a feat(plugin): add Microsoft App Center Crashes plugin 2018-04-04 18:25:34 +02:00
Daniel
a1ad658d05 Merge remote-tracking branch 'origin/master' into app-center-crashes 2018-04-04 18:07:31 +02:00
Daniel Sogl
7362a41b55 feat(plugin): add Microsoft App Center Analytics plugin
feat(plugin): add Microsoft App Center Analytics plugin
2018-04-04 18:06:58 +02:00
Daniel Sogl
b65946b1a8 feat(plugin): add Microdoft App Center Analytics plugin 2018-04-04 17:42:30 +02:00
Daniel
7a5bee914f feat(plugin): add Microdoft App Center Analytics plugin 2018-04-04 17:28:29 +02:00
Daniel
84c9bfbca3 feat(plugin): add Microdoft App Center Analytics plugin 2018-04-04 17:24:29 +02:00
Silviu Bogdan Stroe
6be38328b0 feat(plugin): add Uptime plugin 2018-04-04 16:53:19 +03:00
Daniel Sogl
e27009e7b5 docs(autostart): add correct plugin description
docs(autostart): add correct plugin description
2018-04-04 10:56:06 +02:00
Daniel Sogl
fa1cb407dd fix(file-picker): use correct plugin ref
fix(file-picker): use correct plugin ref
2018-04-04 10:54:30 +02:00
Hanut Singh
6314c28aa8 Fixed the description text 2018-04-04 14:06:16 +05:30
Mark
7f55a8f963 Use Correct Plugin Ref 2018-04-04 14:17:47 +09:30
Daniel Sogl
25f158629d fix(card-io): Fix typo in the "suppressManual" property name
fix(card-io): Fix typo in the "suppressManual" property name.
2018-04-02 13:57:26 +02:00
Said A
5c81ff4875 Fix typo in the "suppressManual" property name. 2018-03-31 11:24:10 +05:00
Daniel Sogl
f33eaed266 docs(launch-review): fix example 2018-03-30 20:02:11 +02:00
Daniel Sogl
40807b8c8c docs(ble): fix typo
docs(ble): fix typo
2018-03-27 11:40:22 +02:00
Iván Pérez
17a3ac1b70 Small typo 2018-03-27 10:23:16 +02:00
Daniel Sogl
c8bce6fef9 feat(camera-preview): disable exif stripping conf
feat(camera-preview): disable exif stripping conf
2018-03-26 11:19:21 +02:00
David Quon
e231bf8507 feat(camera-preview): disable exif stripping conf 2018-03-26 02:00:13 -07:00
Daniel Sogl
50ac4e711e fix(firebase): optional params, callback indexes fix
fix(firebase): optional params, callback indexes fix
2018-03-25 10:14:52 +02:00
Vlado Velichkovski
22cb2e3f45 Merge branch 'master' into patch-1 2018-03-25 00:32:45 +01:00
Daniel Sogl
3d081b5f60 feat(plugin): add OpenALPR plugin
feat(plugin): add OpenALPR plugin
2018-03-23 22:08:31 +01:00
Daniel Sogl
2ae2a683d2 lint 2018-03-23 22:06:20 +01:00
Perry Govier
6d68167530 fixing typo in install instructions 2018-03-23 12:40:03 -05:00
Daniel Sogl
3bd6135730 add CODE_OF_CONDUCT 2018-03-23 11:07:24 +01:00
Daniel Sogl
0aaec10a3e feat(http): add support for new methods
feat(http): add support for new methods
2018-03-23 08:22:18 +01:00
Daniel Sogl
761ac4a328 feat(zeroconf): add watchAddressFamily and registerAddressFamily
feat(zeroconf): add watchAddressFamily and registerAddressFamily
2018-03-23 08:20:20 +01:00
Daniel Sogl
ff4a61d0ec feat(local-notifications): Support latest beta
feat(local-notifications): Support latest beta
2018-03-23 08:19:52 +01:00
Daniel Sogl
3c6122e503 feat(call-log): add operator 'like' and array of values
feat(call-log): add operator 'like' and array of values
2018-03-23 08:16:19 +01:00
Nicolas
84cecf7841 feat(call-log): add operator 'like' and array of values 2018-03-22 22:42:45 +01:00
Lorenz an Mey
37833fe41d docs(local-notifications): Complete sourcecode docs 2018-03-22 17:25:41 +01:00
Lorenz an Mey
8a2637789f fix(local-notifications): fixed linting errors 2018-03-22 17:18:44 +01:00
Thomas Linford
b05c9a4f8b feat(zeroconf) add watchAddressFamily and registerAddressFamily properties 2018-03-22 17:10:35 +01:00
Lorenz an Mey
e5034bf827 feat(local-notifications): Support version 0.9.0-beta.3 of cordova-plugin-local-notifications 2018-03-22 17:08:23 +01:00
Daniel Sogl
8b8ccfbdc3 docs(file-picker): change plugin name
fixes: #2413
2018-03-22 12:12:52 +01:00
Sefa Ilkimen
c2a62cd3c8 feat(http): add support for new properties (#2135) 2018-03-21 21:58:48 +01:00
Sefa Ilkimen
4497e00670 feat(http): add support for new methods (#2249) 2018-03-21 21:58:47 +01:00
Daniel Sogl
0e68bd91f2 fix(web-intent): rename onNewIntent to onIntent
fix(web-intent): rename `onNewIntent` to `onIntent`
2018-03-20 20:53:39 +01:00
Rodrigo Fernández
df7f629127 Merge branch 'master' into master 2018-03-20 20:29:46 +01:00
Daniel
0b1e8f9b9d chore(): update changelog 2018-03-19 19:42:12 +01:00
Max Lynch
560d708002 4.6.0 2018-03-19 13:37:30 -05:00
Daniel Sogl
f700bb3817 Revert "fix(google-maps): wrong decorators"
This reverts commit e5b9d53b17.
2018-03-19 09:14:11 +01:00
Daniel Sogl
e5b9d53b17 fix(google-maps): wrong decorators 2018-03-19 09:10:25 +01:00
Mick Vleeshouwer
bf88f6ee51 Update countries 2018-03-17 21:45:24 +01:00
Mick Vleeshouwer
11a402626c Update documentation 2018-03-17 20:44:56 +01:00
Mick Vleeshouwer
e27fbf47bd feat(plugin): add OpenALPR plugin 2018-03-17 20:37:57 +01:00
Daniel Sogl
f1bf2fa151 fix circle 2018-03-17 16:00:52 +01:00
Daniel Sogl
1bedb49152 docs(uid): add correct npm repository
fixes: #2105
2018-03-17 15:57:14 +01:00
Daniel Sogl
4948640db2 fix(Radmob-pro): add offsetTopBar option
fixes: #2100
2018-03-17 15:55:09 +01:00
Daniel Sogl
6862389651 docs(geolocation): add notes for iOS platform 2018-03-17 15:47:37 +01:00
Daniel
247a1a1d74 feat(appodeal): add new functions
fixes: #2065
2018-03-17 15:36:42 +01:00
Daniel
571df3a251 feat(plugin): add iOS File Picker 2018-03-17 14:33:21 +01:00
Daniel Sogl
1113bbad57 feat(plugin): add SpeechKit plugin
feat(plugin): add SpeechKit plugin
2018-03-17 11:51:38 +01:00
Daniel Sogl
c99524c5ec feat(plugin): add cordova-hot-code-push
feat(plugin): add cordova-hot-code-push
2018-03-17 11:49:21 +01:00
Daniel Sogl
33789b2d39 feat(DocumentPicker) adds DocumentPicker ios plugin
feat(DocumentPicker) adds DocumentPicker ios plugin
2018-03-17 11:46:33 +01:00
Daniel Sogl
67ea61a3cb rename plugin 2018-03-17 11:45:12 +01:00
Daniel Sogl
ab04cfe1d5 feat(BlinkupPlugin): added ElectricImp BlinkUp
feat(BlinkupPlugin): added ElectricImp BlinkUp
2018-03-17 11:44:01 +01:00
Daniel Sogl
500888e839 fix circle 2018-03-17 11:36:52 +01:00
Daniel Sogl
1c27474776 ref(globalization): change utf_offset to utc_offset
fixes: #2015
2018-03-17 11:27:16 +01:00
Daniel Sogl
a345e2c6f1 feat(camera-preview): add onBackButton function
fixes: #1967
2018-03-17 11:15:42 +01:00
Daniel Sogl
8dc5ad2ee6 fix(web-intent): allow extras
fix: #1959
2018-03-17 11:08:21 +01:00
Daniel Sogl
f7184325a7 fix(facebook): remove browserInit function
fix: #1901
2018-03-17 10:56:14 +01:00
Daniel Sogl
586c7e505f fix(badge): add correct requestPermission function
fixes: #105 #1856
2018-03-17 10:38:05 +01:00
Daniel Sogl
7c6b117643 docs(image-resize): add note about fileName for iOS platform 2018-03-17 10:03:06 +01:00
Daniel Sogl
a3f63a61b9 docs(fcm): improve example
docs(fcm): improve example
2018-03-17 01:24:42 +01:00
Daniel Sogl
b61c442fd2 fix example 2018-03-17 01:22:06 +01:00
Daniel Sogl
2e0ea0f50e feat(music-controls): add new optional parameters for icons
feat(music-controls): add new optional parameters for icons
2018-03-17 01:18:11 +01:00
Daniel Sogl
2e2c5fe82b feat(jins-meme): enable background mode data collection
feat(jins-meme): enable background mode data collection
2018-03-17 01:17:04 +01:00
Daniel Sogl
9aa73da537 fix(globalization): options as optional
fix(globalization): options as optional
2018-03-17 01:15:37 +01:00
Daniel Sogl
a6b9a9237a fix lint 2018-03-17 01:15:01 +01:00
Daniel Sogl
9816ca6650 add GlobalizationOptions interface 2018-03-17 01:11:55 +01:00
Daniel Sogl
82bc6d914d docs(broadcaster): add support for browser platform
docs(broadcaster): add support for browser platform
2018-03-17 01:07:00 +01:00
Daniel Sogl
292545dc6d docs(onesignal): change docs to match new Cordova hook specs
docs(onesignal): change docs to match new Cordova hook specs
2018-03-17 01:05:34 +01:00
Daniel Sogl
39017df2e3 docs(in-app-browser): insertCSS example update
docs(in-app-browser): insertCSS example update
2018-03-17 01:05:19 +01:00
Daniel Sogl
3841219dd5 Update index.ts 2018-03-17 01:03:46 +01:00
Daniel Sogl
ead0de9907 docs(background-mode): added push parameter description
docs(background-mode): added push parameter description
2018-03-17 01:00:30 +01:00
Daniel Sogl
00e42438aa Merge branch 'master' into patch-1 2018-03-17 00:58:32 +01:00
Daniel Sogl
54e8b90cdb docs(intercom): add deprecated notice for setSecureMode
docs(intercom): add deprecated notice for setSecureMode
2018-03-17 00:57:39 +01:00
Daniel Sogl
b9a254aa2b feat(firebase-dynamic-links): update to conform to the latest version of the plugin
feat(firebase-dynamic-links): update to conform to the latest version of the plugin
2018-03-17 00:52:55 +01:00
Daniel Sogl
9cabbd9c69 docs(navigation-bar): rename mismatched function
docs(navigation-bar): rename mismatched function
2018-03-17 00:51:41 +01:00
Daniel Sogl
0325d09472 feat(health-kit): add missing properties to HealthKitOptions
feat(health-kit): add missing properties to HealthKitOptions
2018-03-17 00:50:40 +01:00
Daniel Sogl
973888726d feat(call-log): add plugin
feat(call-log): add plugin
2018-03-17 00:49:45 +01:00
Daniel Sogl
a0a540c768 feat(in-app-browser): add new footer options for Android
feat(in-app-browser): add new footer options for Android
2018-03-17 00:49:28 +01:00
Daniel Sogl
5e40f3412a add CallLogObject interface 2018-03-17 00:47:46 +01:00
Daniel Sogl
c55998c5b6 feat(local-notifications) add silent configuration parameter
feat(local-notifications) add silent configuration parameter
2018-03-17 00:39:58 +01:00
Daniel Sogl
dfcc281e56 docs(cordova-file): added ArrayBuffer
docs(cordova-file): added ArrayBuffer
2018-03-17 00:37:48 +01:00
Daniel Sogl
0fe5102801 feat(push): add missing decorator option to channel
feat(push): add missing decorator option to channel
2018-03-17 00:37:14 +01:00
Daniel Sogl
c8361841f4 ref jsdocs 2018-03-17 00:35:41 +01:00
Daniel Sogl
09e7afb3b4 feat(mix panel): add missing events
feat(mix panel): add missing events
2018-03-17 00:31:08 +01:00
Daniel Sogl
3d9703bfe1 docs(http): linking Stackoverflow answer for .pem to .cer
docs(http): linking Stackoverflow answer for .pem to .cer
2018-03-17 00:27:09 +01:00
Daniel Sogl
76dee252aa fix lint 2018-03-17 00:26:07 +01:00
Daniel
6c938bfdb7 Revert "chore(package): bump dependencies and lint rules"
This reverts commit 21ad4734fa.
2018-03-17 00:13:08 +01:00
Daniel
21ad4734fa chore(package): bump dependencies and lint rules 2018-03-16 22:04:01 +01:00
Daniel
7547a94c80 fix(sqlite): remove trailing whitespaces 2018-03-16 20:48:02 +01:00
Daniel Sogl
f607a03c9b fix(contacts): refactor wrong ContactFieldTypes 2018-03-16 20:25:12 +01:00
Daniel Sogl
9ae9f19717 Merge pull request #2251 from Dellos7/patch-1
docs(code-push) updated example link to an up to date one
2018-03-16 19:10:51 +01:00
Daniel Sogl
72d78ec729 Merge pull request #2205 from JKH4/master
ref(local-notifications): Replace registerPermission by requestPermission
2018-03-16 18:18:19 +01:00
Daniel Sogl
f795b4f917 Merge pull request #2200 from fbaew/patch-1
correct typo
2018-03-16 18:17:22 +01:00
Daniel Sogl
dc5b58144c Merge pull request #2199 from mike-roberts/master
docs(GoogleMaps): GoogleMaps.prototype.create is deprecated
2018-03-16 18:17:03 +01:00
Daniel Sogl
241f0733ee feat(sqlite): add selfTest function
fix: #963
2018-03-16 17:55:42 +01:00
Daniel Sogl
9cc3d8fd74 Merge pull request #2027 from qligier/master
docs(spinner-dialog): improve options documentation
2018-03-16 17:02:51 +01:00
Daniel Sogl
e58eb6e6b1 Merge pull request #2374 from andrewlively/master
Added setAnalyticsCollectionEnabled to Firebase plugin
2018-03-16 17:01:58 +01:00
Daniel Sogl
91288266cd Merge pull request #2376 from musou1500/fix-firebase-analytics
fix(firebase-analytics): add `sync` option for all methods
2018-03-16 17:01:32 +01:00
Daniel Sogl
7a31768f3d feat(device-accounts): add android account interface
feat(device-accounts): add android account interface
2018-03-16 16:58:53 +01:00
Daniel Sogl
1cf3d7da82 feat(device-feedback): add feedback interface
feat(device-feedback): add feedback interface
2018-03-16 16:58:27 +01:00
Daniel Sogl
50ae6f0888 feat(base64-to-gallery): add options interface
feat(base64-to-gallery): add options interface
2018-03-16 16:57:55 +01:00
Daniel Sogl
1bd0b591b4 docs(barcode-scanner): optimize example code
docs(barcode-scanner): optimize example code
2018-03-16 16:57:12 +01:00
Daniel Sogl
4fb73ca224 docs(battery-status): refactored example code
docs(battery-status): refactored example code
2018-03-16 16:56:33 +01:00
Daniel Sogl
11f4d208ad docs(call-number): add return values to example
docs(call-number): add return values to example
2018-03-16 16:56:05 +01:00
Daniel Sogl
020eec26b9 docs(db-meter): refactored example
docs(db-meter): refactored example
2018-03-16 16:55:45 +01:00
Daniel Sogl
73d6fa1998 docs(date-picker): fix some typos
docs(date-picker): fix some typos
2018-03-16 16:55:11 +01:00
Daniel Sogl
a9674f0348 feat(calendar): add getCreateCalendarOptions function
feat(calendar): add getCreateCalendarOptions function
2018-03-16 16:53:48 +01:00
Daniel Sogl
2536ef2009 docs(brightness): add correct types
docs(brightness): add correct types
2018-03-16 16:52:56 +01:00
Daniel Sogl
6066f9f8ad feat(ble): add scan options interface
feat(ble): add scan options interface
2018-03-16 16:52:20 +01:00
Daniel Sogl
c421d43155 ref(background-mode): fix wrong types
ref(background-mode): fix wrong types
2018-03-16 16:51:23 +01:00
Daniel Sogl
6fe3a5f90a ref(app-version): add corrent return types
ref(app-version): add corrent return types
2018-03-16 16:49:01 +01:00
Daniel Sogl
d1d7404a09 feat(app-update): add app update options
feat(app-update): add app update options
2018-03-16 16:48:35 +01:00
Daniel Sogl
c774466e62 feat(app-rate): add custom locale interface
feat(app-rate): add custom locale interface
2018-03-16 16:47:58 +01:00
Daniel Sogl
b8e101de5a ref(android-full-screen): remove unsupported flag
ref(android-full-screen): remove unsupported flag
2018-03-16 16:47:25 +01:00
Daniel Sogl
f3f83de008 ref(action-sheet): add corrent types
ref(action-sheet): add corrent types
2018-03-16 16:46:45 +01:00
Daniel Sogl
a456738d15 docs(debug): Improve example
docs(debug): Improve example
2018-03-16 16:46:27 +01:00
Daniel Sogl
428b36e948 fix(index-app-content): remove onItemPressed function
fix(index-app-content): remove onItemPressed function
2018-03-16 16:45:55 +01:00
Daniel Sogl
57696a9ade ref(crop): add options interface
ref(crop): add options interface
2018-03-16 16:41:42 +01:00
Daniel Sogl
91f66decab feat(one-signal): add clearOneSignalNotifications function
feat(one-signal): add clearOneSignalNotifications function
2018-03-16 16:41:01 +01:00
Daniel Sogl
d3dece4c52 fix(push): Android senderID as optional
fix(push): Android senderID as optional
2018-03-16 16:39:40 +01:00
Daniel Sogl
a8415dab39 feat(google-analytics): add missing functions
feat(google-analytics): add missing functions
2018-03-16 16:36:21 +01:00
Daniel Sogl
658bb75b42 fix(printer): add correct npm repository
fix(printer): add correct npm repository
2018-03-16 16:35:53 +01:00
Daniel Sogl
6dcebd03ef feat(badge) add isSupported function
feat(badge) add isSupported function
2018-03-16 16:35:27 +01:00
Daniel Sogl
c4eed9f362 Merge pull request #2379 from danielsogl/patch-12
feat(web-intent): add startService function
2018-03-16 16:34:33 +01:00
Daniel Sogl
be02f835bc Merge pull request #2378 from danielsogl/patch-11
refactor(WheelSelector): add union type for theme
2018-03-16 16:34:08 +01:00
Daniel Sogl
8d2681a9fc ref(device-orientation): add missing type 2018-03-16 16:32:43 +01:00
Daniel Sogl
7cafebd0e8 feat(device-feedback): add feedback interface 2018-03-16 15:17:29 +01:00
Daniel Sogl
d2261b6432 feat(device-accounts): add android account interface 2018-03-16 15:11:08 +01:00
Daniel Sogl
03c219936c docs(db-meter): refactored example 2018-03-16 15:00:45 +01:00
Daniel Sogl
a393e5c55d date-picker(date-picker): fix some typos 2018-03-16 14:56:22 +01:00
Daniel Sogl
ac303d6f7f docs(call-number): add return values to example 2018-03-16 14:45:03 +01:00
Daniel Sogl
13765d2d6a feat(calendar): add getCreateCalendarOptions function 2018-03-16 14:42:22 +01:00
Daniel Sogl
5f88ff02f2 Update index.ts 2018-03-16 14:35:12 +01:00
Daniel Sogl
447f00a202 docs(brightness): add correct types 2018-03-16 14:34:51 +01:00
Daniel Sogl
e345fed09f feat(ble): add scan options interface 2018-03-16 14:30:32 +01:00
Daniel Sogl
957f278738 docs(battery-status): refactored example code 2018-03-16 14:26:33 +01:00
Daniel Sogl
11d516fb28 feat(base64-to-gallery): add options interface 2018-03-16 14:23:50 +01:00
Daniel Sogl
1546cec694 doc(barcode-scanner): optimize example code 2018-03-16 14:19:16 +01:00
Daniel Sogl
7961768803 ref(background-mode): fix wront types 2018-03-16 14:13:26 +01:00
Daniel Sogl
7e1630f5e5 ref(app-versionn): add corrent return types 2018-03-16 13:57:44 +01:00
Daniel Sogl
0f325ed772 feat(app-update): add app update options 2018-03-16 13:53:28 +01:00
Daniel Sogl
2a18dbcf3e feat(app-rate): add custom locale interface 2018-03-16 13:46:08 +01:00
Daniel Sogl
bd72bbc87f ref(android-full-screen): remove unsupported flag 2018-03-16 13:36:12 +01:00
Daniel Sogl
e44229471e Update index.ts 2018-03-16 13:26:49 +01:00
Daniel Sogl
b616e0f0bf ref(action-sheet): add corrent types 2018-03-16 13:22:33 +01:00
Daniel Sogl
50f40bc46b docs(debug): Improve example 2018-03-16 11:29:20 +01:00
Daniel Sogl
679ad2cefc fix lint 2018-03-16 09:11:59 +01:00
Daniel Sogl
270678fb55 fix(index-app-content): remove onItemPressed function 2018-03-16 09:09:19 +01:00
Daniel Sogl
504838556e Update index.ts 2018-03-16 09:01:33 +01:00
Daniel Sogl
1e0d5ce30d ref(crop): add options interface 2018-03-16 09:00:47 +01:00
Daniel Sogl
fc0338a1c5 feat(one-signal): add clearOneSignalNotifications function 2018-03-16 08:49:49 +01:00
Daniel Sogl
1b237aa996 fix(push): Android senderID as optional 2018-03-15 22:12:36 +01:00
Daniel Sogl
ff0008e7eb feat(google-analytics): add missing functions 2018-03-15 22:02:58 +01:00
Daniel Sogl
4bf55d3b1a fix(printer): add correct npm repository 2018-03-15 21:30:07 +01:00
Daniel Sogl
bebc5c2a50 fix lint 2018-03-15 18:06:25 +01:00
Daniel Sogl
6d07cf1a84 fix lint 2018-03-15 18:05:09 +01:00
Daniel Sogl
95822aeac2 feat(badge) add isSupported function 2018-03-15 18:02:35 +01:00
Daniel Sogl
ec14e179c6 Update index.ts 2018-03-15 17:44:16 +01:00
Daniel Sogl
15bb350d8e feat(web-intent): add startService function 2018-03-15 17:42:38 +01:00
Daniel Sogl
e612c5fcc3 fix linter 2018-03-15 17:29:25 +01:00
Daniel Sogl
ee3a0c7c6a refactor(WheelSelector): add union type for theme 2018-03-15 17:00:54 +01:00
musou1500
42fd1f2400 fix(firebase-analytics): add sync option for all methods 2018-03-14 22:28:21 +09:00
Prabesh Niraula
7e0300a75f Added space after // 2018-03-12 14:20:40 -04:00
Andrew Lively
2e711b94bb Added setAnalyticsCollectionEnabled to Firebase plugin 2018-03-12 11:00:31 -04:00
pniraula
5fe579b2f3 Fixed whitespaces 2018-03-05 11:38:14 -05:00
KULDIP PIPALIYA
af75b49aa4 Update index.ts 2018-03-02 02:00:17 +05:30
Josh Babb
1932f2dd66 feat(jins-meme): enable background mode data collection
In order to enable background mode data collection we used the cordova-plugin-background-mode plugin in a new Cordova plugin repo, cordova-plugin-jins-meme (vs. cordova-plugin-jins-meme-es.)  We opted to maintain the old repository for backwards-compatibility as we have multiple apps using various versions; this is simplest.

Another unrelated change was made to silence unnecessary console logging.
2018-03-01 11:12:29 -06:00
Prabesh Niraula
8ece08379c Added new optional parameters for Icons in Interface 2018-03-01 12:03:14 -05:00
Pedro L.C.A
f11be24f74 feat(google-maps): update to match latest plugin version (#2320)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions

* Bug fix: the zoom option is missing

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1712

* Update index.ts

* fix: need to convert instance type from the JS class to the wrapper class

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1706

* remove test file

* fix: Error: Illegal use of "@private" tag.

* fix: The Environment, Encode, and Spherical  are static class

* fix:  convert JS instance to the ionic instance
add: BaseClass.destroy()
add: getId() method for all instance classes

* Documentation Error https://github.com/ionic-team/ionic-native/issues/1994

* Need to create another way to convert the instance for marker cluster

* save

* Remove the instance of wrapper class if the JS instance is removed.

* Bug fix: HtmlInfoWindow missing .on and .one methods
https://github.com/ionic-team/ionic-native/issues/2034

* Bug fix: HtmlInfoWindow constructor cause the error
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1661

* Fix: Error when removing map
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1823

* Add: the cssOptions argument for HtmlInfoWindow.setContent() method

* Bug fix: Polyline.getPoints(), Polygon.getPoints() and Polygon.getHoles()

Those methods need to create new instance of BaseArrayClass of wrapper plugin.

* Add: forEachAsync(), mapAsync(), and filterAsync() methods into BaseArray class

* update: use document.querySelector() instead of document.getElementById() if the passed element is string

update: map.setDiv()

Bug fix: can not create empty GoogleMap (pure JS version is available way)

* Fix: wait until the page is fully ready

* Fix: missing `clickable` option for PolygonOptions and PolylineOptions

* Add: accept own properties for `addMarker()` and others #2087

Fix: some properties are required, but specified as optional.

Add: descriptions for properties

* Bug fix: Static classes are defined as non static class
https://stackoverflow.com/questions/47083289/ionic-native-google-maps-plugin-set-app-background-color/47165721#47165721

* Add: poly class (plugin.google.maps.geometory.poly namespace)

* Bug fix: Ionic native googlemaps decodePath() returns undefined
https://forum.ionicframework.com/t/ionic-native-googlemaps-decodepath-returns-undefined/118624/

* PR #2254
https://github.com/ionic-team/ionic-native/pull/2254

* PR #2199
https://github.com/ionic-team/ionic-native/pull/2199

* Change defined event names for the cordova-plugin-googlemaps v2.0

* Change defined event names for the cordova-plugin-googlemaps v2.2.0

* Add Geolocation class

* Implement the `setMyLocationButtonEnabled()` method

* add: baseArrayClass.mapSeries() method
update: change internal methods

* update: implementation of the LocationService

* Implement the map.addKmlOverlay() method

* Update for the cordova-plugin-googlemaps v2.2.x
2018-02-26 07:52:58 -05:00
Attila Vago
8b829101ff insertCSS example update
The current example in the docs is incomplete and thus quite useless. Just on its own won't manipulate the CSS of a loaded page. It requires the InAppBrowserEvent, and using it in the callback.
2018-02-25 23:12:16 +00:00
Karri Rasinmäki
97d5d10c71 Updated to match new Cordova hook specs
- Script to match module definition (fixes paths)  
- Instructions to define hooks in recommend way
2018-02-25 00:46:08 +02:00
Markus Karileet
41e5a0f7fe feat(speechkit): plugin implementation 2018-02-22 22:02:44 +02:00
jeffreyramia
19c0b5812d Update index.ts
As stated in the plugin repo, the options field is optional. Also, the plugin returns a `iana_timezone` property such as 'America/New_York' which was not included.
2018-02-22 21:08:14 +02:00
bsorrentino
ee42cd3471 add support for Browser platform 2018-02-14 12:29:19 +01:00
Elian Cordoba
714bc46342 Update index.ts
Added missing descriptions taken from the plugin repo README.
2018-02-13 12:45:53 -03:00
Ionitron
7be82a40b5 Update Intercom docs to use setUserHash 2018-02-12 17:42:20 +08:00
Adam Duren
d50639fc55 Update firebase-dynamic-links to conform to the latest version of the plugin 2018-02-02 11:40:01 -05:00
Rajitha Kumara
84a8dbc9d2 Update index.ts
In line 20, "this.navigationBar.hide(autoHide);". But there is no such a function .hide(). It shoud be correct as "this.navigationBar.setUp(autoHide);".
2018-02-02 15:38:25 +05:30
Tyler VanZanten
f8e79cec5f fix(health-kit): add missing properties to HealthKitOptions 2018-02-01 15:07:28 -06:00
Niklas Merz
7db5492816 feat(inappbrowser) Add new footer options for Android 2018-02-01 19:28:45 +01:00
Guillaume Royer
04bdadedd8 feat(hot code push): add update events 2018-02-01 10:44:54 +00:00
Nicolas
61c0ecfa4f fix(call-log): update getCallLog signature 2018-01-30 22:35:48 +01:00
Nicolas
4b9cf17cbb fix(call-log): comments erratum 2018-01-28 13:53:16 +01:00
Nicolas
76a644d122 feat(call-log): add plugin 2018-01-28 02:19:09 +01:00
Max Lynch
954bd876de Tweaked pro constructor 2018-01-25 11:44:58 -06:00
Max Lynch
f419db5d80 fix(Pro): CordovaCheck should sync. #2136 #2127 2018-01-25 11:39:17 -06:00
Max Lynch
c8ecee01d6 fix(pro): Tweak to pro plugin. #2136 #2127 2018-01-25 11:35:39 -06:00
Max Lynch
eaa87fae9b chore(): update changelog 2018-01-25 11:35:39 -06:00
Ibby Hadeed
d0adae55cb Merge branch 'master' of github.com:ionic-team/ionic-native 2018-01-25 12:23:32 -05:00
Max Lynch
61293c33cc fix(pro): proper callback type and guard for plugin instantiate. #2136 #2127 2018-01-25 11:11:06 -06:00
Rory Standley
e4dd8dcb89 docs(): type of yes is boolean not string (#2290) 2018-01-25 06:18:18 -05:00
Guillaume Royer
e7968da7f4 feat(hot code push): add cordova-hot-code-push 2018-01-19 11:01:44 +00:00
Pedro Plasencia
6e58192630 feat(local-notifications): added a new param to specify if the notification will be silent 2018-01-18 10:47:04 -04:00
App Evangelist
288d6ed894 docs(cordova-file): added ArrayBuffer 2018-01-16 14:39:12 +01:00
Dominik García
03fc978db2 fix channels
fix channels

add sound to channels

fix channels
2018-01-15 16:42:37 -06:00
Miguel
4fc97037ac Update mixpanel
Added events: getSuperProperties, registerSuperPropertiesOnce, unregisterSuperProperty
2018-01-15 15:48:08 +01:00
Rodrigo Fernández
dbcb103adc fix(web-intent): rename onNewIntent to onIntent
The `onNewIntent` function doesn't exist in `darryncampbell-cordova-plugin-intent`, it's actually called `onIntent`.
2018-01-09 20:12:49 +01:00
David López Castellote
a413cf02e4 updated example link to an up to date one
The example: https://github.com/Dellos7/example-cordova-code-push-plugin contains an up-to-date example of how to use this plugin with Ionic; the current link is an outdated one.
2018-01-06 01:53:06 +01:00
Daniel Sogl
9ebd92ecb9 docs(globalization): mark plugin as deprecated (#2239) 2017-12-28 21:27:53 -05:00
Daniel Sogl
8e9907dc53 docs(contact): mark as deprecated (#2238)
* docs(contact): mark as deprecated

* Update index.ts
2017-12-28 21:23:04 -05:00
Jay Ordway
9990df8953 feat(crop): add targetHeight and targetWidth options (#2213)
Adding support for targetHeight and targetWidth options
2017-12-28 07:11:10 -05:00
Daniel Müller
98db2e710c docs(): deprecation notice (#2212) 2017-12-28 07:10:34 -05:00
Daniel Sogl
23578de056 docs(vibration): remove unsupported platforms (#2234) 2017-12-28 07:10:14 -05:00
Daniel Sogl
60d32be095 docs(screen-orientation): remove unsupported platforms (#2233) 2017-12-28 07:10:07 -05:00
Daniel Sogl
a82b2903d6 docs(statusbar): remove unsupported platforms (#2232) 2017-12-28 07:10:00 -05:00
Daniel Sogl
aa54444e33 docs(splashscreen): remove unsupported platforms (#2231) 2017-12-28 07:09:52 -05:00
Daniel Sogl
292a9c3722 docs(network-information): remove unsupported platforms (#2230) 2017-12-28 07:09:42 -05:00
Daniel Sogl
eb6aee2d69 docs(media-capture): remove unsupported platforms (#2229) 2017-12-28 07:09:34 -05:00
Daniel Sogl
e77bce67db docs(media): remove unsupported platforms (#2228) 2017-12-28 07:09:26 -05:00
Daniel Sogl
ecc46bacf1 docs(in-app-browser): remove unsupported platforms (#2227) 2017-12-28 07:09:17 -05:00
Daniel Sogl
d256916621 docs(globalization): remove unsupported platforms (#2226)
* docs(globalization): remove unsupported platforms

* Update index.ts
2017-12-28 07:09:04 -05:00
Daniel Sogl
5e77ed9317 docs(geolocation): remove unsupported platforms (#2225)
* docs(geolocation): remove unsupported platforms

* Update index.ts
2017-12-28 07:08:54 -05:00
Daniel Sogl
6f7cdf6214 docs(file): remove unsupported platforms (#2224) 2017-12-28 07:08:40 -05:00
Daniel Sogl
ac0015b91d docs(dialogs): remove unsupported platforms (#2223) 2017-12-28 07:08:09 -05:00
Daniel Sogl
35f6c15ad4 docs(device): remove unsupported platforms (#2222)
* docs(device): remove unsupported platforms

* Update index.ts
2017-12-28 07:07:48 -05:00
Daniel Sogl
f43a657fdd docs(contacts): remove unsupported platforms (#2221) 2017-12-28 07:07:39 -05:00
Daniel Sogl
c0c044bf89 docs(battery-status): remove unsupported platforms (#2218) 2017-12-28 07:07:26 -05:00
Daniel Sogl
8179805ad9 docs(camera): remove unsupported platforms (#2220) 2017-12-28 07:07:09 -05:00
JKH4
bfe9fadf5a Merge pull request #1 from JKH4/JKH4-patch-1-2
Replace registerPermission by requestPermission
2017-12-15 14:05:24 +01:00
JKH4
2714bcae7e Replace registerPermission by requestPermission
According to cordova-plugin-local-notifications update :
cordova.plugins.notification.local.requestPermission(function (granted) { ... });
2017-12-15 14:05:07 +01:00
Gregg Lewis
c309a3027f correct typo 2017-12-13 21:24:27 -07:00
Mike Roberts
2da568616d docs(GoogleMaps): GoogleMaps.prototype.create is deprecated, so updating docs to use static method. 2017-12-13 19:27:52 -05:00
Andrew Crites
adf10a301e docs(http): linking Stackoverflow answer for .pem to .cer 2017-12-13 14:52:45 -05:00
Ibby Hadeed
e480d296fe 4.5.2 2017-12-11 19:34:54 -05:00
Ibby Hadeed
995fd56894 fix(push): fix finish method 2017-12-11 19:34:44 -05:00
Ibby Hadeed
9d70ec025d chore(): update changelog 2017-12-11 19:30:24 -05:00
Ibby Hadeed
8d4406ae82 4.5.1 2017-12-11 19:30:16 -05:00
Ibby Hadeed
ca922761b6 Update 2017-12-11 19:30:07 -05:00
Ibby Hadeed
3bb669b6ba 4.6.0 2017-12-11 19:27:22 -05:00
Ibby Hadeed
6cd97ca0ee fix(core): fix issue with CordovaFunctionOverride decorator
Decorator should not check if the method exists, only if the plugin exists
2017-12-11 19:26:41 -05:00
Ibby Hadeed
0a12dc0792 chore(): update changelog 2017-12-08 15:11:23 -05:00
Ibby Hadeed
2093c5cb29 4.5.0 2017-12-08 15:11:17 -05:00
jing-zhou
d43fe72f7b fix(alipay): add 'string' as an alternative type for 'pay()' input parameter; (#2172)
change 'installVariables' name to 'ALI_PID' for Alipay cordova plugin
2017-12-08 15:10:31 -05:00
Philip Browning
c038c6331c fix(ms-adal): add userInfo in the AuthenticationResult (#2160)
User Info is also included in the authentication result
2017-12-08 15:10:04 -05:00
Precious Jahlom Agboado
212bd63191 feat(dns): add cordova-plugin-dns plugin (#2083)
* feat(cordova-plugin-dns added): Resolve hostnames into an underlying network address.

* Update index.ts
2017-12-08 15:09:07 -05:00
Chris Morbitzer
4694c422aa fix(push): add senderID to AndroidPushOptions (#2060) 2017-12-08 15:07:29 -05:00
Sandip Gadekar
38bbf01e8c docs(couchbase-lite): update usage (#2059)
* adding detailed usage for couchbase lite

* added get url method

* create database method added

* delete database method added

* get all database method added

* space added in comments

* comments added unwanted import removed

* whitespaces added

* usage added in commented section

* get all documents,create document methods added

* spell mistake corrected

* getAllDocs Method Usage added

* create document example added

* update document example added

* delete document example added
2017-12-08 15:07:04 -05:00
Victor Ramos
b9b781ddee fix(camera-preview): add missing tapToFocus camera option (#2046) 2017-12-08 15:05:59 -05:00
Jesús Gómez Bellido
6053296998 feat(call-number): add isCallSupported method (#2051) 2017-12-08 15:05:34 -05:00
lehrenberg
9f72592fcc feat(nfc): add support for iOS (#2050)
* Added missing methods beginSession and invalidateSession for iOS support

* Removed invalidateSession function and package-lock.json

* added current package-lock again
2017-12-08 15:05:11 -05:00
Niklas Merz
7c2a761078 refactor(three-dee-touch): use CordovaFunctionOverride decorator (#2028) 2017-12-08 14:58:53 -05:00
Niklas Merz
9a5211001f fix(indexappcontent): Return observable for onItemPressed (#2006) 2017-12-08 14:57:58 -05:00
Martin Hughes
03f578909b feat(GooglePlayGamesServices): add plugin (#1904)
* feat(GooglePlayGamesServices): add plugin

* feat(GooglePlayGamesServices): add plugin

* fix(GooglePlayGamesServices): trailing whitespace
2017-12-08 14:57:13 -05:00
Matheus Valiente Souza
acd1a80e4d Missing single quotation mark (#2175)
Missing single quotation mark on doc.
2017-12-08 14:57:02 -05:00
Andrew Crites
bf41506324 feat(apple-pay): update for version 3 of the Apple Pay plugin. (#2177)
trueflywood's fork is currently used for this plugin. I'm changing it back to the original which contains the current changes and also includes type definitions and methods for the new version as well as documentation updates
2017-12-08 14:56:53 -05:00
Developer
47dd7e90ed docs(@ionic-native/ibeacon): remove semicolon on the example (#2179) 2017-12-08 14:56:27 -05:00
Gaven Henry
afca8761d7 fix(music-controls): various fixes (#2094)
Add hasScrubbing variable to options - used to enable or disable scrubbing from the iOS control center or lockscreen progress bar
Make optional items actually optional...
2017-12-08 14:56:12 -05:00
Paul John Diwa
5159367db8 fix(ftp): return observable (not promise) for upload and download method (#2174)
* style(network-interface): remove trailing whitespace

* fix(ftp): return an observable instead of a promise for upload and download method
2017-12-08 14:55:30 -05:00
Guillaume
d06fa48866 feat(android exoplayer): add cordova-plugin-exoplayer (#2180) 2017-12-08 14:53:21 -05:00
Ibby Hadeed
8f00e44d21 Merge branch 'master' of github.com:ionic-team/ionic-native 2017-12-08 14:51:12 -05:00
Ibby Hadeed
9e6f178378 chore(): lint 2017-12-08 14:51:03 -05:00
Josh Babb
997c96b97f docs(android-permissions): note checkPermission return/result format and Android API version 26 changes that impact requestPermission and requestPermissions (#2183)
* docs(android-permissions): note checkPermission() return/result format

* docs(android-permissions): note requestPermission API ver. 26 behavior
2017-12-08 14:50:20 -05:00
Hugo Des
ae94c710af fix(web-intent): fix false negative of plugin installation (#2062)
* fix(web-intent): Fix false negative of plugin installation

* Update index.ts
2017-12-01 23:09:34 -05:00
Samer Albahra
86b2a2ca73 feat(network-interface): add plugin support (#2063)
* feat(network-interface): add plugin support

* Remove unnecessary options

* add getIPAddress method
2017-12-01 23:09:08 -05:00
Dominik Garcia
c1ce5dac18 feat(push): add support for version 2.1.0 (#2064) 2017-12-01 23:07:25 -05:00
codinronan
091ac7a68c feat(braintree): add support for cordova-plugin-braintree to @ionic-native (#2073) 2017-12-01 23:06:57 -05:00
Nik Martin
bd5bcdc9b7 feat(android-fingerprint): add getSigningCertificateFingerprint() method (#2076)
* Add getSigningCertificateFingerprint() method

Method was added in 5.0.3

* fix lint whitespace error
2017-12-01 23:05:51 -05:00
Jan Peeters
dc707fd80c docs(): add missing comma in example (#2077) 2017-12-01 23:05:27 -05:00
dbandstra
3e933bbaff chore(): fix comment in sms plugin referring to wrong cordova plugin (#2079) 2017-12-01 23:05:09 -05:00
Nik Martin
86181afc27 feat(firebase): add new Firebase phone verification methods (#2157)
* feat(firebase): add missing method

* feat(firebase): add missing ios method

* Update index.ts
2017-12-01 23:04:54 -05:00
Aleksey Kompanets
784f948a5b feat(apple-pay): add cordova-plugin-applepay (#2081)
* feat(apple-pay) add cordova-plugin-applepay

* Update index.ts
2017-12-01 23:03:40 -05:00
mburger81
2a4bcee6a0 feat(ble): support startStateNotifications & stopStateNotifications (#2085) 2017-12-01 23:00:13 -05:00
jdgeier
d95ae68c9c fix(app-rate): change openStoreInApp to inAppReview (#2097) 2017-12-01 22:57:29 -05:00
Thomas Waldecker
8b78644680 feat(nfc): add interfaces and missing references to UriHelper and TextHelper (#2104)
* feat(nfc): Add interfaces and missing references to UriHelper and TextHelper

This commit adds the missing references to UriHelper and TextHeler.

There were missing references to some methods of nfc and ndef modules.

The constants for ndef has ben added.

* feat(nfc): add NfcUtil class.
2017-12-01 22:57:12 -05:00
Alex
5d48cfd419 docs(): fix typo (#2123)
love contributing
2017-12-01 22:56:28 -05:00
Kelvin Dart
b2c873cc99 fix(mobile-accessibility): change signature references to the correct names (#2139) 2017-12-01 22:54:39 -05:00
Harshith Kashyap
bb2291cd16 fix(deeplinks): add options parameter(#1601) (#2141) 2017-12-01 22:54:16 -05:00
Eric McNiece
7255795ae5 feat(zeroconf): add reInit() method (#2144) 2017-12-01 22:53:38 -05:00
Josh Babb
c9b49ccc39 docs(jins-meme): update plugin information (#2150)
The most important change here is to point to the BlyncSync version of the plugin, which is actively maintained.  The jins-meme version lacks a package.json, which causes issues on some platforms that will result in an inability to build.

The BlyncSync plugin uses standard naming convention for cordova plugins (cordova-plugin-jins-meme-es)

The plugin name should be JINS MEME ES (ES for Eye-Sensing,) as this is how the product is actually named: not "Jins Meme."
2017-12-01 22:52:57 -05:00
Stephen Redeker
9844274213 fix(app-rate): add simpleMode (#2155)
Adding the simpleMode preference from https://github.com/pushandplay/cordova-plugin-apprate#options--preferences to resolve https://github.com/ionic-team/ionic-native/issues/2154.
2017-12-01 22:51:49 -05:00
Dave Alden
154a4bcacb refactor(launch-review): update the definitions for new v3 plugin API (#2162) 2017-12-01 22:50:21 -05:00
Dave Alden
10a96fcdd6 refactor(diagnostic): update API to plugin v3.7.2(#2163)
closes #2161
2017-12-01 22:50:12 -05:00
Jay Ordway
7ab522edec docs(): fix import statement (#2166) 2017-12-01 22:49:46 -05:00
mhartington
50d7762b8a docs(): update plugin name for local-notifications 2017-11-27 09:15:39 -05:00
Ibby Hadeed
0a8146b76c 4.4.2 2017-11-15 08:52:51 -05:00
Ibby Hadeed
2d60db9d3b chore(): update changelog 2017-11-13 16:21:09 -05:00
Ibby Hadeed
3378d7a398 4.4.1 2017-11-13 16:12:23 -05:00
Ibby Hadeed
61defd480c chore(): revert back to angular 4.4.4 2017-11-13 16:11:45 -05:00
Ibby Hadeed
4e28295486 Hide function/interface properly 2017-11-09 18:13:29 -05:00
Ibby Hadeed
dee32c921c Fix build issue 2017-11-09 18:09:40 -05:00
Ibby Hadeed
2475c57e00 Update 2017-11-09 16:19:48 -05:00
Ibby Hadeed
79b522f832 chore(): update changelog 2017-11-09 16:18:09 -05:00
Ibby Hadeed
ccb2e55435 4.4.0 2017-11-09 16:18:01 -05:00
FallenRiteMonk
f09c9cfe9a docs(): fix typo (#2071) 2017-11-09 16:13:47 -05:00
Sefa Ilkimen
d96d3eef07 feat(http): add support for new methods (#2054)
* feat(http): add patch request support (#2052)

* feat(http): add "disableRedirect" support (#2022)

* fix(http): remove obsolete "validateDomainName" function (#2053)
2017-11-09 16:13:36 -05:00
Daniel Sogl
95daca166b chore(package): Angular 5 support (#2089)
* docs(github): issue template

* initial commit

* Added StatusObject Interface

* style(wrap.tmpl): added missing field

* style(wrap.tmpl): added missing field

* chore(package.json): Angular 5 support

I also bumped the tslint rules and tslint

* Update package.json
2017-11-09 16:12:48 -05:00
Masashi Katsumata
196be026ea feat(google-maps): accept own properties for addMarker() and others (#2093)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions

* Bug fix: the zoom option is missing

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1712

* Update index.ts

* fix: need to convert instance type from the JS class to the wrapper class

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1706

* remove test file

* fix: Error: Illegal use of "@private" tag.

* fix: The Environment, Encode, and Spherical  are static class

* fix:  convert JS instance to the ionic instance
add: BaseClass.destroy()
add: getId() method for all instance classes

* Documentation Error https://github.com/ionic-team/ionic-native/issues/1994

* Need to create another way to convert the instance for marker cluster

* save

* Remove the instance of wrapper class if the JS instance is removed.

* Bug fix: HtmlInfoWindow missing .on and .one methods
https://github.com/ionic-team/ionic-native/issues/2034

* Bug fix: HtmlInfoWindow constructor cause the error
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1661

* Fix: Error when removing map
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1823

* Add: the cssOptions argument for HtmlInfoWindow.setContent() method

* Bug fix: Polyline.getPoints(), Polygon.getPoints() and Polygon.getHoles()

Those methods need to create new instance of BaseArrayClass of wrapper plugin.

* Add: forEachAsync(), mapAsync(), and filterAsync() methods into BaseArray class

* update: use document.querySelector() instead of document.getElementById() if the passed element is string

update: map.setDiv()

Bug fix: can not create empty GoogleMap (pure JS version is available way)

* Fix: wait until the page is fully ready

* Fix: missing `clickable` option for PolygonOptions and PolylineOptions

* Add: accept own properties for `addMarker()` and others #2087

Fix: some properties are required, but specified as optional.

Add: descriptions for properties

* Bug fix: Static classes are defined as non static class
https://stackoverflow.com/questions/47083289/ionic-native-google-maps-plugin-set-app-background-color/47165721#47165721

* Add: poly class (plugin.google.maps.geometory.poly namespace)
2017-11-08 08:12:07 -05:00
Daniel Sogl
1fa7c91105 chore(package): bump Angular (#2096) 2017-11-08 04:46:25 -05:00
Jonathan Tavares
e9580b46ef fix(DocumentPicker) uses String instead of DocumentPickerOptions 2017-11-02 16:38:18 +00:00
Jonathan Tavares
bfbbc2ee12 feat(DocumentPicker) adds DocumentPicker ios plugin 2017-11-02 16:21:51 +00:00
Ibby Hadeed
ba105be55f chore(): update changelog 2017-11-01 05:01:25 -04:00
Ibby Hadeed
92d26eab94 4.3.3 2017-11-01 05:01:21 -04:00
Masashi Katsumata
ce6e412788 fix(google-maps): HtmlInfoWindow should extend BaseClass #2034 (#2035)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions

* Bug fix: the zoom option is missing

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1712

* Update index.ts

* fix: need to convert instance type from the JS class to the wrapper class

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1706

* remove test file

* fix: Error: Illegal use of "@private" tag.

* fix: The Environment, Encode, and Spherical  are static class

* fix:  convert JS instance to the ionic instance
add: BaseClass.destroy()
add: getId() method for all instance classes

* Documentation Error https://github.com/ionic-team/ionic-native/issues/1994

* Need to create another way to convert the instance for marker cluster

* save

* Remove the instance of wrapper class if the JS instance is removed.

* Bug fix: HtmlInfoWindow missing .on and .one methods
https://github.com/ionic-team/ionic-native/issues/2034

* Bug fix: HtmlInfoWindow constructor cause the error
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1661

* Fix: Error when removing map
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1823

* Add: the cssOptions argument for HtmlInfoWindow.setContent() method

* Bug fix: Polyline.getPoints(), Polygon.getPoints() and Polygon.getHoles()

Those methods need to create new instance of BaseArrayClass of wrapper plugin.

* Add: forEachAsync(), mapAsync(), and filterAsync() methods into BaseArray class

* update: use document.querySelector() instead of document.getElementById() if the passed element is string

update: map.setDiv()

Bug fix: can not create empty GoogleMap (pure JS version is available way)

* Fix: wait until the page is fully ready

* Fix: missing `clickable` option for PolygonOptions and PolylineOptions
2017-11-01 05:00:52 -04:00
Max Lynch
7243ed3960 Update index.ts 2017-10-19 14:24:37 -05:00
Ibby Hadeed
264670211d chore(): update changelog 2017-10-18 03:25:01 -04:00
Ibby Hadeed
847147a5fa 4.3.2 2017-10-18 03:24:54 -04:00
Ibby Hadeed
4639bf9a94 fix(google-maps): remove type from GoogleMapsEvent constant 2017-10-17 17:37:15 -04:00
William Pelrine
abb77e3e08 Merge pull request #2042 from ionic-team/pro-js-update
feat(pro): support corova-plugin-ionic v2.0.0
2017-10-13 09:28:53 -05:00
William Pelrine
975f08b7b5 feat(pro): support corova-plugin-ionic v2.0.0 2017-10-12 14:54:13 -05:00
Niklas Merz
773722b767 docs(DEVELOPER) Add documentation for CordovaFunctionOverride decorator (#2029) 2017-10-10 23:48:27 -04:00
Daniel Sogl
447aa56e3c chore(package): bump Angular (#2036) 2017-10-10 23:46:31 -04:00
Max Lynch
8d22798278 RxJS 5.4.2 -> 5.4.3 2017-10-10 09:12:49 -05:00
Max Lynch
30297fb81d Merge pull request #1799 from GulinSS/master
Use RxJS 5.4.2 to fix generics checking in TS 2.4.1
2017-10-10 09:12:17 -05:00
Max Lynch
ac777fca40 Merge branch 'master' into master 2017-10-10 09:11:48 -05:00
Max Lynch
43b70a12b5 Merge branch 'master' into master 2017-10-10 09:10:54 -05:00
Vlado Velichkovski
2c5aed9619 fix,docs(firebase): make 'namespace' param optional in setDefault; remove callback indexes; docs fix
Add optional label for optional parameters in docs
remove wrong callback indexes
make 'namespace' param optional in setDefault
2017-10-09 19:25:50 +02:00
Paulo Vitor Magacho da Silva
38eaeffe7e Added Electric Imp Blinkup Plugin support 2017-10-08 10:44:50 -03:00
quentin
0daab8c31d docs(spinner-dialog): improve options documentation 2017-10-06 20:12:39 +02:00
Ibby Hadeed
ef28078815 Merge branch 'master' of github.com:ionic-team/ionic-native 2017-10-06 13:45:10 -04:00
Ibby Hadeed
e304ce0e53 chore(): fix readmes script 2017-10-06 13:44:58 -04:00
William Pelrine
9e5f03f15d chore(): update changelog 2017-10-06 10:41:37 -05:00
William Pelrine
465d5519d0 feat(pro): Add support for Ionic Pro by incorporating cordova-plugin-ionic 2017-10-06 10:35:54 -05:00
Ibby Hadeed
d683b9e5df chore(): update changelog 2017-10-05 23:28:48 -04:00
Ibby Hadeed
2b2476e873 4.3.1 2017-10-05 23:28:42 -04:00
Sandip Gadekar
196adc8b2f docs(): added methods that can guide how to create document and get all docs (#2005)
* adding detailed usage for couchbase lite

* added get url method

* create database method added

* delete database method added

* get all database method added

* space added in comments

* comments added unwanted import removed

* whitespaces added

* usage added in commented section

* get all documents,create document methods added

* spell mistake corrected
2017-10-05 23:26:43 -04:00
Daniel Olivares
363b41e075 fix(BLE): make readRSSI() not static (#2011) 2017-10-05 23:24:07 -04:00
Dmitry Smolyakov
2179699622 feat(regula-document-reader): separate initialization and scanning, add android (#2013) 2017-10-05 23:23:51 -04:00
Quentin Ligier
e65406cc2f refactor(photo-viewer): improve options documentation (#2014) 2017-10-05 23:23:09 -04:00
Thomas S
ddb6d43ffa docs(geolocation): update install command (#2016)
Hello guys,

I make this pull request to add the installation variable `GEOLOCATION_USAGE_DESCRIPTION` needed on iOS, since version 10.

Without this variable, using `getCurrentPosition` do nothing on iOS because phone wait user authorization. But that authorization is not display because there is no message defined.

This variable make this part of code in `info.plist` : 

```
<key>NSLocationWhenInUseUsageDescription</key>
<string>To allow locate you</string>
``` 

Source : https://github.com/apache/cordova-plugin-geolocation#ios-quirks

Have a good coding day :)
2017-10-05 23:22:43 -04:00
Kamil Piskorski
30ed33a046 fix(onesignal): fix property name (#2019) 2017-10-05 23:22:03 -04:00
Rene Escobar
3d0a12d40d refactor(): update return value in hasPermission() (#2023) 2017-10-05 23:21:34 -04:00
Masashi Katsumata
6ca5beaf0b fix(google-maps): various fixed introduced in previous release (#2024)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions

* Bug fix: the zoom option is missing

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1712

* Update index.ts

* fix: need to convert instance type from the JS class to the wrapper class

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1706

* remove test file

* fix: Error: Illegal use of "@private" tag.

* fix: The Environment, Encode, and Spherical  are static class

* fix:  convert JS instance to the ionic instance
add: BaseClass.destroy()
add: getId() method for all instance classes

* Documentation Error https://github.com/ionic-team/ionic-native/issues/1994

* Need to create another way to convert the instance for marker cluster

* save

* Remove the instance of wrapper class if the JS instance is removed.
2017-10-05 23:20:40 -04:00
Ibby Hadeed
536a906366 chore(): update changelog 2017-09-27 18:06:52 -04:00
Ibby Hadeed
7fcafaae81 4.3.0 2017-09-27 18:06:43 -04:00
Ibby Hadeed
1a7a0e7cc0 Merge branch 'master' of github.com:ionic-team/ionic-native 2017-09-27 17:58:55 -04:00
Euler Menezes Junior
34bf136703 feat(push): update PushOptions interfaces to match new version (#1908)
BREAKING CHANGE: this wrapper will work only with `phonegap-plugin-push@2.0.0`
2017-09-27 17:56:43 -04:00
Ibby Hadeed
bb798340c5 Merge branch 'master' of github.com:ionic-team/ionic-native 2017-09-27 17:48:54 -04:00
Iván Pérez
1b04ebb5e2 Zerconf: Action can also be resolved (#1924) 2017-09-27 17:48:45 -04:00
mflynnKVD
a150d4d522 fix(launch-navigator): fix navigate method (#1940) 2017-09-27 17:48:23 -04:00
Josh Armstrong
4246d47a6c feat(android-full-screen): add support for setSystemUiVisiblity (#1942) 2017-09-27 17:47:51 -04:00
Jan Piotrowski
024099a772 add note about limitation (#1953) 2017-09-27 17:47:15 -04:00
Buddy Reno
fff99694ba feat(music-controls): add support for next/prev track and skip forward/backward in control center (#1927) 2017-09-27 17:47:05 -04:00
Ibby Hadeed
429529a5ee Merge branch 'master' of github.com:ionic-team/ionic-native 2017-09-27 17:45:49 -04:00
Gordeev Artem
e2419a26b2 feat(uid): add UID plugin (#1946) 2017-09-27 17:45:44 -04:00
Inconspicuously
10eb3eeeeb feat(qr-scanner): added destroy method (#1916) (#1971)
fix(qr-scanner): added destroy method (#1916)
2017-09-27 17:44:38 -04:00
Ibby Hadeed
533cc4efc9 docs(): update docs 2017-09-27 17:44:06 -04:00
Ibby Hadeed
6b433b5373 Refactor 2017-09-27 17:42:40 -04:00
Niklas Merz
e684db479e feat(index-app-content) add Index-App-Content plugin (#1954) 2017-09-27 17:42:01 -04:00
Everett
81c576c28e docs(firebase-dynamic-links): update docs (#1964)
Variable REVERSED_CLIENT_ID can be found in your GoogleService-Info.plist under the same key name.
Variable PHOTO_LIBRARY_USAGE_DESCRIPTION specifies required value for NSPhotoLibraryUsageDescription on iOS.

See: https://github.com/chemerisuk/cordova-plugin-firebase-dynamiclinks
2017-09-27 17:39:05 -04:00
excelulous
e2f3702d0b fix(zeroconf): extend the ZeroconfResult.action definition (#1985)
This now includes the value 'resolved', as it is a valid action passed by the service browser on iOS (at least) when IP addresses for the chosen service have been resolved.
2017-09-27 17:36:32 -04:00
Daniel Ehrhardt
806766e33e feat(extended-device-information): add Extended Device Info plugin (#1980)
* Added Cordova Device Information Wrapper

* Updated Usage Description

* Removed unsued line

* Added Total Storage
2017-09-27 17:36:00 -04:00
Sandip Gadekar
432c0e901d docs(couchbase-lite): add usage (#1988)
* adding detailed usage for couchbase lite

* added get url method

* create database method added

* delete database method added

* get all database method added

* space added in comments

* comments added unwanted import removed

* whitespaces added

* usage added in commented section
2017-09-27 17:03:10 -04:00
Ibby Hadeed
fb70a24c61 refactor(regula-document-reader): rename plugin 2017-09-27 17:01:12 -04:00
Ibby Hadeed
202c680643 refactor(document-reader): add beta and paid tags 2017-09-27 16:59:06 -04:00
Dmitry Smolyakov
7b94d4fccf feat(document-reader): add cordova-plugin-documentreader (#1996) 2017-09-27 16:58:31 -04:00
Akshay Dwivedi
5b15bb9f46 fix(stripe): fix stripe create card token (#2002)
fix stripe create card token promise
2017-09-27 16:56:25 -04:00
Ibby Hadeed
c3930c814a refactor(google-maps): use es6 syntax 2017-09-27 16:52:06 -04:00
Masashi Katsumata
57af5c5e73 fix(google-maps): convert JS classes to Ionic Native (#1956)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions

* Bug fix: the zoom option is missing

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1712

* Update index.ts

* fix: need to convert instance type from the JS class to the wrapper class

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1706

* remove test file

* fix: Error: Illegal use of "@private" tag.

* fix: The Environment, Encode, and Spherical  are static class

* fix:  convert JS instance to the ionic instance
add: BaseClass.destroy()
add: getId() method for all instance classes
2017-09-27 15:56:30 -04:00
Ibby Hadeed
29604d6d3d Update README.md 2017-09-11 09:56:07 -04:00
AniketPant02
76effe98f8 docs(): fix typo
Typo
2017-09-11 04:12:23 -04:00
Ibby Hadeed
0783520723 chore(): bump core dependency to 4.2.0 2017-09-06 02:36:48 -04:00
Masashi Katsumata
ef898efcc6 fix(google-maps): the zoom option is missing in the GoogleMapOptions class (#1948)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions

* Bug fix: the zoom option is missing

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1712

* Update index.ts
2017-09-06 02:34:18 -04:00
fredroo
fdd12b58b3 fix(twitter-connect (#1903)
* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts
2017-09-01 23:24:28 -04:00
Masashi Katsumata
80047907ea fix(google-maps): fix icons property of MarkerClusterOptions (#1937)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions
2017-09-01 21:38:26 -04:00
Raman Rasliuk
3a1034eab0 fix(http): fix plugin ref (#1934) 2017-08-30 15:06:32 -04:00
Ibby Hadeed
c8586927c3 chore(): update changelog 2017-08-29 19:44:23 -04:00
Ibby Hadeed
f22c603c30 4.2.1 2017-08-29 19:44:15 -04:00
Masashi Katsumata
957396b5e5 fix(google-maps): fix issue when creating new instance of BaseArrayClass (#1931)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass
2017-08-29 18:58:44 -04:00
Perry Govier
d891c3eea0 Merge pull request #1867 from janpio/patch-10
docs(navigation): add trailing slash to navigation items
2017-08-28 10:59:19 -05:00
Ibby Hadeed
37aa9a82fe chore(): update changelog 2017-08-26 04:04:12 -04:00
Ibby Hadeed
392b11bd05 4.2.0 2017-08-26 04:03:34 -04:00
Ibby Hadeed
d4fe051d56 update 2017-08-26 04:03:29 -04:00
Raman Rasliuk
a2d33963b1 feat(http): use a different plugin source with better features (#1921) 2017-08-26 03:57:23 -04:00
Leonardo Ruhland
332f9aefe5 docs(safariview): usage fix (#1923)
The show method returns a Observable, not a Promise.
2017-08-26 03:55:06 -04:00
Heather Lemieux
4942b88873 docs(google-maps): update docs (#1833)
Since the new googlemaps plugin uses the native code, you need to wait for the platform to be ready before loading the map.
2017-08-26 03:53:57 -04:00
frank10gm
39ec5158a0 fix(google-maps): add missing debug option (#1832)
added debug option to TileOverlayOptions.
2017-08-26 03:51:39 -04:00
Masashi Katsumata
c11aec33a7 feat(google-maps): update plugin and fix a few issues (#1834)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class
2017-08-26 03:37:40 -04:00
Keepertje
21045ea535 fix(ms-adal): make userId optional (#1894)
The docs say User Identifier is optional but the method does not reflect it.
2017-08-23 19:55:46 -04:00
Rohin Mohanadas
955c450483 docs(): update supported platforms (#1879)
Removing browser from the list of supported platforms.
2017-08-23 19:55:05 -04:00
Ibby Hadeed
00c0707dad fix(geofence): remove duplicate onTransitionReceived method 2017-08-23 19:54:11 -04:00
Ibby Hadeed
79f88d6a02 Merge branch 'master' of github.com:ionic-team/ionic-native 2017-08-23 19:47:05 -04:00
Yasin Simsek
ce5966bf10 feat(local-notifications): add un method to unsubscribe from events (#1871) 2017-08-23 19:46:58 -04:00
Ibby Hadeed
fb8dbe5fc0 Merge branch 'master' of github.com:ionic-team/ionic-native 2017-08-23 19:42:51 -04:00
martinhanke
cde87e2113 feat(paypal): add payeeEmail for third party merchants (#1864) 2017-08-23 19:42:47 -04:00
Fatih Kızmaz
262e18f409 fix(native-spinner): update pluginRef (#1859)
Wrong pluginRef causes errors:
Native: tried calling SpinnerDialog.show, but the SpinnerDialog plugin is not installed.
Install the SpinnerDialog plugin: 'ionic cordova plugin add cordova-plugin-native-spinner'

Fix pluginRef to work properly.
2017-08-23 19:41:03 -04:00
Davor Peic
39ef066875 docs(cardio): update docs (#1858)
Added iOS10 permission message and corrected requireCVV use
2017-08-23 19:40:14 -04:00
Chris
35d317f7f3 docs(): add missing import (#1853)
BackgroundGeolocationResponse was not declared in classes to import from @ionic-native/background-geolocation
2017-08-23 19:39:29 -04:00
Tom Sundstrom
5505e5f064 docs(): adjust log messages in photo library example callbacks (#1851)
* Move error message to the error callback

* Log a debug message in complete callback
2017-08-23 19:39:04 -04:00
Ibby Hadeed
e6b0250d97 refactor 2017-08-23 19:38:30 -04:00
Mario Mol
aa4c3b3787 feat(push): add Browser Push notification support (#1848)
* Browser Push interface with options to use push notification with browsers , as a proxy to phonegap-plush-plugin

* making both properties optional
2017-08-23 19:38:04 -04:00
foysal
57bbcdebfb docs(nfc): update usage doc of the nfc plugin (#1846)
* docs(nfc): update usage doc of the nfc plugin

show an example of how the event listeners work with observable subscription and implement an nfc share within the event listener.

* docs(AndroidPermissions): requestPermissions->requestPermission
2017-08-23 19:37:31 -04:00
Josh McRae
85825c7b91 fix(fingerprint-aio): add missing FingerprintOptions properties (#1845)
* docs(fingerprint-aio): add missing FingerprintOptions properties

* fix(fingerprint-aio): fix circle lint error
2017-08-23 19:37:04 -04:00
Josh Miles
1acade4883 fix(serial): add missing options for the open method (#1844) 2017-08-23 19:36:41 -04:00
Sebastian Baar
7c1b409542 fix(native-geocoder): update NativeGeocoderReverse result (#1840)
* feat(nativegeocoder): add NativeGeocoder plugin

* add district

* update NativeGeocoderReverseResult & refactor code

* delete plugins

* delete index.ts
2017-08-23 19:35:51 -04:00
Ibby Hadeed
fe02c84fd9 clean up 2017-08-23 19:34:55 -04:00
Moamen Mostafa
a2cc1870b4 feat(keychain-touch-id): add KeychainTouchId plugin (#1837) 2017-08-23 19:33:12 -04:00
Ibby Hadeed
1c6a3a3bc5 update package-lock 2017-08-23 19:31:23 -04:00
Robert Coie
0c097ba2be fix(sqlite): add optional key parameter to SQLiteDatabaseConfig to support sqlcipher-adapter (#1917) 2017-08-23 19:21:57 -04:00
Animesh Kumar
0dd507ff03 docs(): fix typo (#1914)
corrected `to` to `two` on line number 14
2017-08-23 19:21:25 -04:00
Jan Piotrowski
4e0673c8e9 only add trailing slash on plugin pages
fixes that the trailing slash would have been added to the root and browser-usage.html as well
2017-08-05 17:37:16 +02:00
Jan Piotrowski
0cecf4e43f add trailing slash to navigation items
fixes the problem that each navigation item first has to redirected to the version with trailing slash

closes https://github.com/ionic-team/ionic-site/issues/1223
2017-08-05 17:27:02 +02:00
Ibby Hadeed
9ab458bba2 chore(): update changelog 2017-07-21 01:16:05 -04:00
Ibby Hadeed
7e900dae22 4.1.0 2017-07-21 01:15:59 -04:00
Ibby Hadeed
0fa82e5c56 feat(open-native-settings): add Open Native Settings plugin
closes #1821
2017-07-21 01:15:51 -04:00
Ibby Hadeed
4af3d5bcc1 fix(media): add setRate method
closes #1825
2017-07-21 01:07:38 -04:00
Masashi Katsumata
976401a4e9 feat(google-maps): add missing features and fix wrong definitions (#1815)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.
2017-07-20 17:06:37 -07:00
Hayato OKUMOTO
6230958585 feat(firebase): add unregister method (#1823) 2017-07-18 22:12:59 -07:00
Daniel Olivares
47fa44c932 feat(hyper-track): add HyperTrack plugin (#1816)
* feat(HyperTrack): add base implementation for HyperTrack

* feat(HyperTrack): fix getOrCreateUser()

* docs(HyperTrack): add note about publishable key

* feat(HyperTrack): add requestPermissions

* feat(HyperTrack): add startTracking

* docs(HyperTrack): add usage for calls

* feat(HyperTrack): add stopTracking

* docs(HyperTrack): add stopTracking note

* feat(HyperTrack): add setUserId

* feat(HyperTrack): add getCurrentLocation

* style(HyperTrack): reorder functions

* feat(HyperTrack): add createAndAssignAction

* feat(HyperTrack): add completeAction

* feat(HyperTrack): add completeActionWithLookupId

* feat(HyperTrack): add checkLocationPermission

* docs(HyperTrack): add usage for requestPermissions

* docs(HyperTrack): add android note

* feat(HyperTrack): add checkLocationServices

* feat(HyperTrack): add requestLocationServices

* feat(HyperTrack): add base implementation for HyperTrack

* feat(HyperTrack): fix getOrCreateUser()

* docs(HyperTrack): add note about publishable key

* feat(HyperTrack): add requestPermissions

* feat(HyperTrack): add startTracking

* docs(HyperTrack): add usage for calls

* feat(HyperTrack): add stopTracking

* docs(HyperTrack): add stopTracking note

* feat(HyperTrack): add setUserId

* feat(HyperTrack): add getCurrentLocation

* style(HyperTrack): reorder functions

* feat(HyperTrack): add createAndAssignAction

* feat(HyperTrack): add completeAction

* feat(HyperTrack): add completeActionWithLookupId

* feat(HyperTrack): add checkLocationPermission

* docs(HyperTrack): add usage for requestPermissions

* docs(HyperTrack): add android note

* feat(HyperTrack): add checkLocationServices

* feat(HyperTrack): add requestLocationServices

* docs(HyperTrack): Fix plugin usage

* fix(HyperTrack): helloWorld param and docs

* docs(HyperTrack): document all functions

* docs(HyperTrack): move all usage documentation up

* docs(HyperTrack): fix documentation

* Add beta tag
2017-07-17 21:50:08 -04:00
Corentin H
f1dd8d61f5 docs(): improve docs (#1813)
* Improve method description grammar

* Fix some doc typos (#1)

* Fix doc
2017-07-17 18:53:47 -04:00
!Cogentx
3d387798b6 docs(local-notifications): fix package name (#1817)
$ ionic cordova plugin add phonegap-local-notifications -- should be -- 
$ ionic cordova plugin add phonegap-plugin-local-notification -- in Docs --
2017-07-17 18:51:35 -04:00
Ibby Hadeed
380eb88a39 chore(): update changelog 2017-07-15 15:52:34 -04:00
Ibby Hadeed
6e2c998dad 4.0.1 2017-07-15 15:52:10 -04:00
Ibby Hadeed
7105048b89 fix(media): fix success/error/statusUpdate observables
closes #1806
2017-07-15 14:49:18 -04:00
Ibby Hadeed
6061af6238 feat(camera): add enums for camera options 2017-07-15 14:38:09 -04:00
Ibby Hadeed
1decedd899 feat(media): add MEDIA_STATUS and MEDIA_ERROR enums 2017-07-15 14:35:00 -04:00
Ibby Hadeed
b5fe6631fe Merge branch 'master' of github.com:ionic-team/ionic-native 2017-07-15 14:29:59 -04:00
Ibby Hadeed
25c1cf4058 fix(social-sharing): fix issues caused by omitting optional params
closes #1805
2017-07-15 14:29:51 -04:00
Samuel Goodell
b265b5bd0c docs(): escape < and > from plugin install command in doc template (#1791)
* Escape < and > from plugin install command in doc template

* Fix another issue with a missing closing code fence in the same plugin file
2017-07-13 12:41:53 -05:00
Serge S. Gulin
247efa656a Use RxJS 5.4.2 to fix generics checking in TS 2.4.1 2017-07-13 11:42:17 +04:00
Ibby Hadeed
238e2ab26c tests(): add test to verify new way of creating classes 2017-07-12 14:06:06 -04:00
Ibby Hadeed
146c823f2a refactor(): remove unused import 2017-07-11 17:29:17 -04:00
Ibby Hadeed
1b55513bc4 docs(clipboard): update plugin source 2017-07-11 10:43:26 -04:00
Ibby Hadeed
953841681c feat(launch-navigator): update plugin wrapper to support v4
closes #1738
2017-07-11 10:38:22 -04:00
Ibby Hadeed
76a45a3834 refactor(launch-navigator): move constants to the top of the class 2017-07-11 10:29:26 -04:00
Ibby Hadeed
eff9bc376c refactor(action-sheet): add values for ANDROID_THEMES to prevent errors in dev environments 2017-07-11 10:04:10 -04:00
Ibby Hadeed
b9993c24f0 docs(image-picker): add npm package instead of git repo
closes #1787
2017-07-11 09:58:07 -04:00
Ibby Hadeed
9752c865fc docs(): hide AuthenticationContext class 2017-07-11 09:39:09 -04:00
Ibby Hadeed
4c4cf76f7a docs(): hide IAPError class 2017-07-11 09:37:32 -04:00
Ibby Hadeed
70cbcbf1e9 docs(google-maps): add temporary note to notify about 4.x changes 2017-07-11 09:29:12 -04:00
Ibby Hadeed
2caf0684ef docs(admob-pro): change name to AdMob Pro 2017-07-11 09:23:10 -04:00
Ibby Hadeed
aa4b2cd2ae chore(): update changelog 2017-07-11 09:22:48 -04:00
Ibby Hadeed
c56aa7e3ae 4.0.0 2017-07-11 09:22:27 -04:00
nbamj
3f8f97f015 Typo fix (#1785) 2017-07-11 05:53:18 -04:00
huli1234
1f3b97cef2 Change import for FileTransfer ... (#1786)
Changed the import, it didnt work with only transfer (seems to stem from when the plugin was called transfer instead of file-transfer)
2017-07-11 05:52:53 -04:00
Samuel Goodell
927bd1a9ba chore(): add paid tag to documentation 2017-07-10 14:16:11 -05:00
Samuel Goodell
c43a51e2bb Inline paid and beta labels for sidebar 2017-07-10 14:03:39 -05:00
Samuel Goodell
1a9a843cde Fix indentation on paid label in doc title 2017-07-10 14:01:27 -05:00
Samuel Goodell
2e543291ef Resolve conflicts with master 2017-07-10 13:58:38 -05:00
Ibby Hadeed
ad9556ca03 amend(): remove space 2017-07-10 13:02:50 -04:00
Ibby Hadeed
cbdde57681 chore(): update @ionic-native/core dependency version
no changes were made in 4.0, so older versions should work fine
2017-07-10 13:02:06 -04:00
Ibby Hadeed
d8bac2f0ab docs(google-maps): show all classes and interfaces 2017-07-10 09:59:35 -04:00
jasonmamy
12a83831c8 refactor(): added default items interface (#1725) 2017-07-10 09:55:40 -04:00
Jan Piotrowski
cdb99a74cc docs(readme) improve link to 2.x README (#1764)
link to branch instead of specific version so possible future updates are reflected after clicking the link
2017-07-10 09:55:16 -04:00
Brad Grzesiak
dd12be6722 docs(): provide "see also" for the Secure Storage plugin (#1773) 2017-07-10 09:54:53 -04:00
Ibby Hadeed
cf0c740269 feat(ms-adal): add Azure Active Directory Authentication plugin
closes #372
2017-07-10 09:40:53 -04:00
Ibby Hadeed
bde2b38668 feat(qr-scanner): add QRScanner plugin
closes #715
2017-07-10 09:15:50 -04:00
Ibby Hadeed
b35dab2634 feat(onesignal): add new methods
closes #1677
2017-07-10 09:14:56 -04:00
Ibby Hadeed
ff793d649b docs(onesignal): add iOS platform to iOSSettings method 2017-07-10 09:14:35 -04:00
Ibby Hadeed
e8faf22357 fix(sqlite): fix param type for sqlBatch method
closes #1596
2017-07-10 09:13:58 -04:00
Ibby Hadeed
a6f9714422 fix(safari-view-controller): show should return an Observable
BREAKING CHANGE: `show` method now returns an Observable

closes #1619
2017-07-10 09:13:24 -04:00
Jason Kim
71349655c0 docs(image-resizer): update plugin source (#1781)
* Update image-resizer index.ts

Running original command "ionic cordova plugin add https://github.com/protonet/cordova-plugin-image-resizer.git" will throw a Cordova error shown below. Installing the plugin via the plugin cordova id (per the original repo's package.json) will allow this plugin to install correctly and work with the ionic native "image-resizer"

An error occurred while running ionic cordova plugin add https://github.com/protonet/cordova-plugin-image-resizer.git
... (exit code 1):
Error: Failed to fetch plugin https://github.com/protonet/cordova-plugin-image-resizer.git via registry
...

* Update index.ts
2017-07-10 05:15:56 -04:00
Jan Piotrowski
f1a036d8b0 docs(printer): fix isAvailable description (#1782) 2017-07-10 05:10:40 -04:00
victor sosa
7bbd25c1a2 fix(google-analytics): fix parameter types in the trackMetric method (#1780)
* Fix parameter in the trackMetric method

In the trackMetric the first parameter is a number type;

* Update index.ts
2017-07-10 05:10:03 -04:00
Ibby Hadeed
01ae8e11fc refactor(google-maps): use MapType interface instead of string 2017-07-08 08:45:09 -04:00
Ibby Hadeed
aff653de2e feat(google-maps): add GoogleMapOptions interface 2017-07-08 08:43:11 -04:00
Ibby Hadeed
0867cfff3f fix(media): wrap plugin callbacks with Observables
BREAKING CHANGE: the plugin's `create` method no longer takes callback functions. You must use the
observables provided by the `MediaObject` instance. Refer to the updated documentation for more
information.

closes #1591
2017-07-07 19:29:03 -04:00
Ibby Hadeed
d395b42788 feat(email-composer): update plugin to latest version and use original plugin (#1771)
* change source and document interface

* document addAlias example

* feat(email-composer): add requestPermission and hasPermission methods

* refactor(): use getPlugin() instead of referencing cordova
2017-07-07 19:13:45 -04:00
Ibby Hadeed
bc6bf6671e refactor(admob-pro): rename plugin from AdMob to AdMobPro (#1770)
BREAKING CHANGE: `@ionic-native/admob` is now `@ionic-native/admob-pro`. Also, class name is changed
from `AdMob` to `AdMobPro`.
2017-07-07 19:13:35 -04:00
Ibby Hadeed
9f1a0f9585 refactor(media): rename main class to Media (#1769)
BREAKING CHANGE: `MediaObject` class is now `Media`
2017-07-07 19:13:25 -04:00
Ibby Hadeed
3c54a1c7f5 refactor(rename plugin to FileTransfer to match original plugin): (#1768)
BREAKING CHANGE: Package name is now `@ionic-native/file-transfer`. `Transfer` class has been
renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `FileTransferObject`.
2017-07-07 19:13:14 -04:00
Ibby Hadeed
06e666d6a0 feat(google-maps): update wrapper to support v2 of the plugin (#1759)
* update google maps

* more updates

* add BaseClass

* add BaseArrayClass

* add BaseArrayClass constructor

* finish up BaseArrayClass

* add Environment class

* improve docs and add missing functions to GoogleMap class

* improve TileOverlayOptions interface

* add types to constants

* add ILatLng interface

* improve types in BaseArrayClass

* fix geocoder return type

* use Cordova decorator for geocoder

* document CameraPosition and add missing duration property

* document circle class and add update functions

* tslint

* remove extra decorator

* add setVisible and getVisible to Circle class

* complete Environment class

* add convenience method to return instance of environment

* add more classes to docs

* re-organize plugin definition

* document GroundOverlayOptions

* complete GroundOverlay class

* add and complete HtmlInfoWindow class

* complete LatLngBounds class

* update MyLocation interface

* complete GoogleMap class

* fix TERRAIN spelling

* complete Marker class

* complete Polygon class

* complete TileOverlay class

* remove setDebuggable and isAvailable

developer said they're not suited for users
2017-07-07 19:13:04 -04:00
Ibby Hadeed
9a4e36d9d8 chore(): update changelog 2017-07-07 18:49:34 -04:00
Ibby Hadeed
0e970f5038 3.14.0 2017-07-07 18:49:28 -04:00
Ibby Hadeed
398d0eeac5 feat(in-app-purchase2): add a second InAppPurchase plugin (#1775)
* initial commit for iap2

* fix(iap2): fix events callbacks (#1705)

* fix(iap2): add missing decorator to register function (#1709)

* (feat): change iap2 for callbacks

* (fix): register cordova

* (doc): updated docs with usage example (#1713)

* (feat): change iap2 for callbacks

* (fix): register cordova

* (doc): adding setup for store
2017-07-07 18:46:17 -04:00
Ibby Hadeed
73d0d57bbc docs(): add paid tag 2017-07-07 05:49:45 -04:00
Ibby Hadeed
c0d27262e4 chore(): update changelog 2017-07-05 02:43:36 -04:00
Ibby Hadeed
f41dfee912 3.13.1 2017-07-05 02:43:30 -04:00
Ibby Hadeed
f5f92e191a chore(): use same deps as ionic2-app-base 2017-07-05 02:42:37 -04:00
Daniel Sogl
a6ae0919e4 chore(package): bump dev deps (#1747) 2017-07-05 02:41:35 -04:00
Tanay Parikh
5b914d7f15 fix(document-viewer): make config properties optional (#1767)
- Before it forced defining all properties
- Option arguments can be found ![here](https://github.com/sitewaerts/cordova-plugin-document-viewer#options)
2017-07-04 21:30:55 -04:00
Jan Piotrowski
2f3331e9ea docs(): add anchors to make headlines linkable (#1766) 2017-07-04 20:20:37 -04:00
Dhyey Thakore
c972497475 docs(toast): template literal in example usage (#1760)
The single quote needed to be escaped to providing proper syntax highlighting in documentation.
2017-07-04 02:17:19 -04:00
Jimmy Nguyen
3582e877d6 docs(): improve the docs for firebase dynamic links (#1718)
* Improved the docs for firebase dynamic links

The config.xml example needed to switch the ios and android tag.
Added an example how to use onDynamicLink()

* (doc) Reverted change and expanded example

* (doc) Even more comments for clarity
2017-07-03 17:31:02 -04:00
Petros
0c79ac16ec feat(app-rate): add function navigateToAppStore() (#1719) 2017-07-03 17:30:09 -04:00
Thomas
3af23023ee docs(): add example on how to use onChange() method (#1726) 2017-07-03 17:29:52 -04:00
Jan Piotrowski
f289a6bbb6 docs(screen-orientation): fix description (#1743)
by removing outdated sentence and info
2017-07-03 17:28:28 -04:00
jdgeier
e64cc0c61c feat(app-rate): add function handleNegativeFeedback() (#1748) 2017-07-03 17:27:44 -04:00
Ibby Hadeed
7144eb0afa ci(): generate readmes to ensure docs are valid 2017-07-03 07:40:38 -04:00
Ibby Hadeed
fa93226cbf docs(): fix docs 2017-07-03 07:38:36 -04:00
Ibby Hadeed
613340118c chore(): update changelog 2017-07-03 07:28:05 -04:00
Ibby Hadeed
55d573f144 3.13.0 2017-07-03 07:28:00 -04:00
Van
b56297e115 feat(qqsdk): add qqsdk plugin (#1689) 2017-07-03 07:24:12 -04:00
Nicolas Naso
b8ac7bfb6a feat(pin-check): add pin check plugin (#1734)
* feat(plugin): pin check

* fix(plugin) pluginRef fixed
2017-07-03 07:23:19 -04:00
Ibby Hadeed
7cb95f1b91 docs(): fix type 2017-07-03 07:22:20 -04:00
Ibby Hadeed
da0fd821f7 chore(): update changelog 2017-07-03 07:16:09 -04:00
Ibby Hadeed
6a18d3f1e0 3.12.2 2017-07-03 07:14:07 -04:00
Ibby Hadeed
5072c99938 Merge branch 'master' of github.com:ionic-team/ionic-native 2017-07-03 07:13:26 -04:00
Ibby Hadeed
e40247c211 fix(local-notifications): add missing priority option
closes #1683
2017-07-03 07:13:19 -04:00
Buddy Reno
593607e914 feat(music-controls): add event for ios control center seek and function to update ios elapsed time (#1727) 2017-07-03 07:11:07 -04:00
Jan Piotrowski
51fc5332ff docs(media): improve description (#1744)
(still bad as usage hint is in there, but at least not the only thing any more)
2017-06-29 20:04:00 -04:00
jeffrey n. carre
27fdac91fd docs(): fix typo (#1731)
Instead of intelSec it should be intelSecurity base on the name of the instance.
2017-06-29 02:42:31 -04:00
neoassyrian
3c125bbc84 fix(onesignal): fix getPermissionSubscriptionState return type (#1742) 2017-06-29 02:42:09 -04:00
Brad Grzesiak
62c39b33c6 docs(call-number): provide note about simulators (#1729) 2017-06-28 06:19:22 -04:00
Drake
e6f81519cc docs(background-geolocation): remove references to Windows Phone (#1704) 2017-06-19 21:00:05 -04:00
Daniel Sogl
64ce132262 fix(ibeacon): optional parameter (#1702)
Fix #1701
2017-06-19 20:59:32 -04:00
Michael Alicea
af91977f82 fix(android-fingerprint-auth): fix return type of isAvailable (#1697)
As seen in the Cordova plugin (https://github.com/mjwheatley/cordova-plugin-android-fingerprint-auth) the isAvailable method returns an object that contains 3 parameters, {isAvailable:, isHardwareDetected, hasEnrolledFingerprints}.

If you do a console log on

this.androidFingerprintAuth.isAvailable()
  .then(res => console.log(res))  //Outputs the Object {isAvailable: true, isHardwareDetected: true, hasEnrolledFingerprints: true}
  .catch(err => console.error(err));

So we are getting the data, just need to make the interface expose it.
2017-06-18 17:25:35 -04:00
Orri Arnarsson
07443e0b53 docs(): fix typo in param type (#1699)
'nuber' changed to 'number'
2017-06-18 17:22:28 -04:00
Hsuan Lee
72f838d768 docs(): add escape character (#1698) 2017-06-17 15:29:22 -04:00
Daniel Sogl
fa86cee3fa docs(clipboard): remove old plugin source (#1696) 2017-06-16 11:27:28 -04:00
Roland Brand
83c25b41ef docs(): fix typo (#1690)
fixed a typo in comment
2017-06-15 17:12:56 -04:00
Jan Piotrowski
2128703d8d docs(screenshot): fix param names (#1686) 2017-06-14 01:40:51 -04:00
Kurt De Vos
b52371b174 feat(sqlite): support pre-filled databases (#1687)
Support opening pre-filled databases with https://github.com/litehelpers/cordova-sqlite-ext.
2017-06-14 01:40:31 -04:00
Daniel Sogl
65c2665fc0 docs(transfer): fix typo (#1688) 2017-06-14 01:40:11 -04:00
Denis Glad
279b449456 docs(call-number): fix param type (#1684)
Changed first parameter to string when calling callNumber.
2017-06-12 20:05:43 -04:00
Ibby Hadeed
9bd4994f01 chore(): output to dist 2017-06-11 17:43:17 -04:00
Ibby Hadeed
ab74703841 ci(): change cache key for ionic-site repo
CircleCI can only save files one to a specific cache key. I set the cache key to depend on the checksum of package.json, so it updates the cache every time we update Ionic Native. In the long run, CircleCI will have to download the ionic-site changes less often.
2017-06-11 17:37:06 -04:00
Ibby Hadeed
18a81a77a9 refactor(one-signal): add return statement 2017-06-11 17:32:07 -04:00
Ibby Hadeed
2ebfa46437 ci(): build core before compiling ionic native 2017-06-11 17:29:03 -04:00
Ibby Hadeed
1d4fc03cba ci(): run tsc instead of custom script 2017-06-11 17:26:01 -04:00
neoassyrian
e9283a994d feat(one-signal): add getPermissionSubscriptionState (#1678)
* Create index.ts

* Create index.ts
2017-06-11 17:23:47 -04:00
Aleksandr Filatov
ed6fe880b6 refactor(spinner-dialog): change source #1603 (#1675) 2017-06-11 17:21:09 -04:00
Ibby Hadeed
a2d979a277 Create index.ts 2017-06-11 17:18:18 -04:00
Ibby Hadeed
1ccfb1d84c Merge branch 'master' of github.com:ionic-team/ionic-native 2017-06-11 15:23:19 -04:00
Daniel Sogl
2ec0f87a79 docs(globalization): fix typo (#1672) 2017-06-08 19:37:07 -04:00
Ibby Hadeed
03ac735476 fix(mobile-accessibility): fix plugin reference
fixes #1666
2017-06-08 03:17:41 -04:00
Matias Solis de la Torre
9eb29f8924 docs(): add copy icons instructions (#1670)
Add how to copy icons to use in push notifications.
2017-06-07 19:48:13 -04:00
Jan Piotrowski
85a1f6a35b docs(geofence): CLI v3: ionic platform => ionic cordova platform (#1668) 2017-06-07 19:47:50 -04:00
Daniel Sogl
3cb7d6d4d8 docs(AppMinimize): improve example (#1650) 2017-06-05 23:07:41 -04:00
Daniel Sogl
884cabd301 docs(device-accounts): updated source (#1651)
Added NPM support
2017-06-05 23:07:17 -04:00
Daniel Sogl
663c24d2fa docs(file-chooser): changed source (#1652)
* docs(filechooser): changed source

* Update index.ts
2017-06-05 23:07:06 -04:00
Daniel Sogl
fecf8ad994 docs(insomnia): npm support (#1654) 2017-06-05 23:04:11 -04:00
Daniel Sogl
b05ba586f8 docs(mobile-accessibility): npm support (#1655) 2017-06-05 23:04:02 -04:00
Daniel Sogl
4ed8f9337f docs(screenshot): nom support (#1656) 2017-06-05 23:03:50 -04:00
Daniel Sogl
25446441cf docs(stepcounter): changed source (#1657)
* docs(stepcounter): changed source

* Update index.ts
2017-06-05 23:03:07 -04:00
Daniel Sogl
0805d7754e docs(useragent): changed source (#1658) 2017-06-05 23:02:48 -04:00
Daniel Sogl
d60c0800e7 docs(youtube-video-player): changed source (#1659) 2017-06-05 23:02:33 -04:00
Daniel Sogl
35f498b82c docs(video-capture-plus): changed source (#1660) 2017-06-05 23:02:15 -04:00
Daniel Sogl
8cf4a57a77 docs(web-intent): npm support (#1661) 2017-06-05 23:01:54 -04:00
Daniel Sogl
cb51b5abd6 docs(httpd): npm support (#1664) 2017-06-05 23:01:39 -04:00
Daniel Sogl
59a8e76ba9 docs(couchbase-lite): npm support (#1663) 2017-06-05 23:01:15 -04:00
Ibby Hadeed
8f985025d1 chore 2017-06-04 16:54:12 -04:00
Ibby Hadeed
7d9df8c82f chore(): update changelog 2017-06-03 18:43:46 -04:00
Ibby Hadeed
22ccbfdf8f 3.12.1 2017-06-03 18:43:42 -04:00
Ibby Hadeed
c6a76c26e0 refactor(phonegap-local-notification): fix class name to match plugin name
BREAKING CHANGE: PhonegapLocalNotifications class has been renamed to PhonegapLocalNotification
2017-06-03 18:42:34 -04:00
Ibby Hadeed
c3f9fb4a23 chore(): update changelog 2017-06-03 18:32:17 -04:00
Ibby Hadeed
abeedbf2fa 3.12.0 2017-06-03 18:32:11 -04:00
Daniel Sogl
9bdabd3ac3 chore(ci): fix karma builds (#1648)
Looks like ts 2.3.4 breaks the ci builds. Sorry for that
2017-06-03 18:25:17 -04:00
Daniel Sogl
0467a0dd32 feat(firebase-dynamic-links): add firebase dynamic links plugin (#1649) 2017-06-03 18:24:07 -04:00
Daniel Sogl
3eb69b4056 feat(firebase-analytics): add firebase analytics plugin (#1647) 2017-06-03 18:24:00 -04:00
Lucas A. Moulin
793e2e34d3 feat(base64): add Base64 plugin (#1645)
* Add base64 plugin

* Add base64 plugin

* Apply requested changes
2017-06-03 16:04:32 -04:00
Daniel Sogl
dd7098d5bd chore(package): update deps (#1646)
* fix(package): fix Node 8 install problems

I had some problems with the outdated dependencies.

* Update package.json
2017-06-03 16:03:58 -04:00
Gianfrancø Palumbo
268e22456e docs(keyboard): Add boolean type to param in JSDoc (#1641) 2017-06-03 14:22:44 -04:00
Daniel Sogl
9950b18e38 refactor(clipboard): changed plugin source (#1643)
* refactor(tts): changed plugin source

* Update index.ts

* Update index.ts
2017-06-03 13:25:10 -04:00
Daniel Sogl
b4deaaa941 docs(): changed old cli commands (#1644)
Im also removed some V2 tags from Ionic and Angular
2017-06-03 13:23:30 -04:00
Daniel Sogl
328e5de3f3 docs(plugins): added platforms (#1638)
* added platforms

* round 2

* round 3

* Update index.ts
2017-06-02 15:34:18 -04:00
Ibby Hadeed
41dae53bf2 chore(): update changelog 2017-06-01 14:23:32 -04:00
Ibby Hadeed
3027b5ea16 3.11.0 2017-06-01 14:23:27 -04:00
Ibby Hadeed
ec773de686 chore(): rename org 2017-06-01 14:03:56 -04:00
Daniel Sogl
f3b7467ffd docs(google-plus): renamed Web to Browser (#1635) 2017-06-01 13:08:53 -04:00
Niklas Häusele
d9546f15ed docs(): fix typo (#1632) 2017-06-01 13:06:07 -04:00
Daniel Sogl
52dcd808b6 refactor(docs): read the description (#1631)
* refactor(docs): read the description

- Added missing platforms
- Unified GitHub links
- Added missing installVariables

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts
2017-06-01 13:05:47 -04:00
Raman Rasliuk
985193bebd fix(document-viewer): fix param type (#1634)
Options for  viewDocument should be an DocumentViewerOptions object, not array of DocumentViewerOptions objects
2017-06-01 13:05:20 -04:00
Daniel Sogl
9bf9e9d073 typo(package): added fields (#1633) 2017-06-01 13:01:42 -04:00
Daniel Sogl
8b9995a5af fix(secure-storage): add missing function (#1626)
* fix(secure-storage): add missing function

fix #1625

* Update index.ts
2017-05-31 21:03:46 -04:00
Daniel Sogl
2d3add6507 feat(plugin): add FTP plugin (#1627) 2017-05-31 21:03:07 -04:00
Daniel Sogl
ee59b55c29 docs(template): optimize template (#1628)
* Update wrap-min.tmpl

* Update wrap.tmpl
2017-05-31 21:01:37 -04:00
mhartington
28bb6dc1a8 docs(github): rename driftyco references to ionic-team 2017-05-30 11:01:13 -04:00
Nico
b587a0e647 docs(dialogs): confirm() can return a promise that resolves to 0 (#1617)
Document the fact that confirm() will return a promise that resolves to 0 if the user clicks outside the dialog box. This behavior was previously undocummented and could lead to issues if not handled properly.
2017-05-28 14:59:51 -04:00
Daniel Sogl
d9d7919174 chore(package): bump dependencies (#1611)
* chore(package): bump dependencies

I updated the dependencies to the latest bugfix and feature releases without any breaking changes.

* Update package.json

* Update package.json
2017-05-28 04:11:57 -04:00
Daniel Sogl
11c42757d7 docs(): rename OS X to macOS (#1614) 2017-05-28 04:01:27 -04:00
Daniel Sogl
4e4216ff6d docs(file): rename OS X to macOS (#1613) 2017-05-28 04:00:52 -04:00
Daniel Sogl
496968b9fc docs(device): rename OSX to macOS (#1612) 2017-05-28 04:00:18 -04:00
Jan Piotrowski
bf3f9d8799 refactor(core): fix "Install the plugin" command when not installed (#1606)
ionic plugin add ... => ionic cordova plugin add ...
2017-05-25 13:05:59 -04:00
Daniel Sogl
6f22134851 chore(package): bump zone.js and TS version (#1598)
* chore(package) bump zone.js version

* Update package.json
2017-05-25 13:05:29 -04:00
fabiodursoexin
aaeabb9f96 fix(flurry-analytics): fix original class reference (#1597)
fix: FlurryAnalaytics to FlurryAnalytics
2017-05-23 11:01:23 -04:00
Perry Govier
6d4da1fff4 Merge pull request #1465 from piotrowski/improved-plugin-docs
docs(template): Improved plugin docs
2017-05-22 10:03:25 -05:00
Ibby Hadeed
c0fd19fd33 chore(): update changelog 2017-05-20 06:26:59 -04:00
Ibby Hadeed
f2c4f380f8 3.10.2 2017-05-20 06:26:54 -04:00
Daniel Sogl
c96ae3db0d docs(nativegeocoder): out of beta (#1482)
Out of beta since a while
2017-05-20 06:25:45 -04:00
jasonmamy
c2a6198576 refactor(wheel-selector): added display key to override default values, added more docs (#1590) 2017-05-20 06:25:34 -04:00
Ibby Hadeed
2b3d4c9090 docs(): update install commands 2017-05-20 06:25:06 -04:00
Ibby Hadeed
dbb17d801e Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-20 06:23:38 -04:00
Jonathan Alexander
0b1e4e6e84 docs(): update install command (#1592)
The install text is missing cordova so it won't install just by copying and pasting in a terminal.
2017-05-20 06:23:15 -04:00
Ibby Hadeed
8c82c87811 chore(): update changelog 2017-05-20 05:21:46 -04:00
Ibby Hadeed
9997caf506 3.10.1 2017-05-20 05:21:31 -04:00
Ibby Hadeed
c8f53d2dc3 feat(core): add getSupportedPlatforms method 2017-05-20 05:21:27 -04:00
Ibby Hadeed
a10d763a41 docs(linkedin): update repo and install command 2017-05-19 09:48:00 -04:00
Ibby Hadeed
e44fdb6730 chore(): update changelog 2017-05-19 09:44:02 -04:00
Ibby Hadeed
bb8973a0ea 3.10.0 2017-05-19 09:43:51 -04:00
Ibby Hadeed
6031a240a2 feat(native-keyboard): add native keyboard plugin (#1588)
* add native keyboard plugin

* feat(native-keyboard): add native keyboard plugin
2017-05-19 09:37:56 -04:00
Ibby Hadeed
2bd244a536 fix(admob-free): use otherPromise to fix browser development 2017-05-19 09:24:19 -04:00
Ibby Hadeed
64bff1bbed docs(): add notice about plugin taking share of earnings 2017-05-19 07:59:06 -04:00
Ibby Hadeed
da5266cd65 docs(admob-free): improve docs 2017-05-19 07:44:47 -04:00
Ibby Hadeed
c1082b1c14 fix command since I cant change permissions 2017-05-19 06:52:49 -04:00
Ibby Hadeed
2cf132ee88 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-19 06:46:03 -04:00
Ibby Hadeed
e411146e8f docs(): refactor 2017-05-19 06:38:02 -04:00
Ibby Hadeed
5f63493bdc refactor(): use const instead of var 2017-05-19 06:37:28 -04:00
Daniel Sogl
999c288b23 docs(Speech Recognition): out of beta (#1483) 2017-05-19 06:36:29 -04:00
seshachalamyv
2e83ade978 docs(): fix method name in example (#1585)
data.wasPressed
should be change as data.wasTapped
2017-05-19 06:36:04 -04:00
Ibby Hadeed
08bf57f488 chore(): config github before running ci-tests 2017-05-19 06:35:01 -04:00
Hélder Diniz
6f6392ea5c feat(user-agent): add User-Agent plugin (#1582)
* feat(user-agent): add User-Agent plugin

* feat(user-agent): Few changes upon request
2017-05-19 06:31:31 -04:00
Ibby Hadeed
0b2227d35a Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-19 00:35:10 -04:00
Ibby Hadeed
4bfceadb65 refactor(tts): rename the speak method param 2017-05-19 00:35:06 -04:00
seshachalamyv
61c73eaa4e docs(): fix package name in import statement (#1581)
import { FCM } from 'ionic-native'; Corrected as import { FCM } from '@ionic-native/fcm';
2017-05-18 23:39:31 -04:00
Matias Solis de la Torre
c0c0c5cec5 docs(): update install command (#1584) 2017-05-18 23:38:58 -04:00
Ibby Hadeed
5b82d82d75 Update index.ts 2017-05-17 16:33:52 -04:00
mhartington
36be795623 docs(file): set filesaver class to hidden 2017-05-17 15:14:25 -04:00
mhartington
0996264483 docs(file): set classes to hidden
Set classes to hidden to prevent doc generation
2017-05-17 15:00:00 -04:00
Ibby Hadeed
2245bb8050 chore(): update changelog 2017-05-17 11:19:57 -04:00
Ibby Hadeed
e14e00edba 3.9.2 2017-05-17 11:19:55 -04:00
Ibby Hadeed
22102a7e4a fix(core): decorators should define enumerable properties 2017-05-17 11:19:35 -04:00
Ibby Hadeed
6416c2544c fix(action-sheet): destructiveButtonLast is optional 2017-05-17 11:07:34 -04:00
Ibby Hadeed
73a510f9c2 refactor(): remove unused import 2017-05-17 10:54:58 -04:00
Ibby Hadeed
b8b605db5e chore(): update changelog 2017-05-17 10:54:25 -04:00
Ibby Hadeed
12168d991a 3.9.1 2017-05-17 10:54:22 -04:00
Ibby Hadeed
93a119bf4b fix(core): fix issues when clearing observables 2017-05-17 10:54:09 -04:00
Ibby Hadeed
a7c62de389 refactor(core): otherPromise in wrapInstance shouldn't check for error 2017-05-17 10:47:39 -04:00
Ibby Hadeed
8aca6718e1 refactor(core): wrapInstance should return promise as-is
instance based method never throw errors like regular ones do
2017-05-17 10:46:47 -04:00
Ibby Hadeed
1ec4bdef8f docs(): update interface names 2017-05-17 10:36:05 -04:00
Ibby Hadeed
d6ed87d7cc fix merge conflict 2017-05-17 08:12:36 -04:00
Ibby Hadeed
55f3f37760 chore(): update changelog 2017-05-17 08:10:34 -04:00
Ibby Hadeed
4f547dae30 3.9.0 2017-05-17 08:10:31 -04:00
Ibby Hadeed
3cb83831c1 fix(app-preferences): suite is sync
closes #1321
2017-05-17 07:53:20 -04:00
Ibby Hadeed
ca7659378f fix(push): fix types
closes #1331
2017-05-17 07:51:19 -04:00
Ibby Hadeed
4333bc950d refactor(media): 2017-05-17 07:34:54 -04:00
Ibby Hadeed
ee4b61e405 fix(media): create will always return MediaObject even if plugin doesnt exist 2017-05-17 07:33:25 -04:00
Ibby Hadeed
975a65d619 fix(in-app-browser): fix on method
closes #1446
2017-05-17 07:27:51 -04:00
Ibby Hadeed
d68618f878 fix(media): create should return null if plugin is not available 2017-05-17 07:21:42 -04:00
Ibby Hadeed
e5aff0f5f0 Add TODO for 4.x 2017-05-17 07:13:04 -04:00
Ibby Hadeed
e596825ee9 docs(): update 2017-05-17 07:12:08 -04:00
Ibby Hadeed
991f2f04d4 feat(printer): add check method 2017-05-17 07:09:23 -04:00
Ibby Hadeed
ecdff8c0e5 docs(): add return type for pick 2017-05-17 07:03:27 -04:00
Ibby Hadeed
55071c0d65 fix(printer): fix implementation and add pick method 2017-05-17 07:03:07 -04:00
Ibby Hadeed
7d63e808ad docs(): fix repo link 2017-05-17 06:57:53 -04:00
Ibby Hadeed
84551cac67 docs(): fix docs 2017-05-17 06:53:13 -04:00
Ibby Hadeed
92ef4f0c33 fix(background-mode): configure doesn't return anything
closes #1457
2017-05-17 06:51:43 -04:00
Ibby Hadeed
d8eb621da4 docs(): fix param type 2017-05-17 06:50:43 -04:00
Ibby Hadeed
6534283a6f docs(): fix param type 2017-05-17 06:50:10 -04:00
Ibby Hadeed
f223481307 Merge branch 'master' into improved-plugin-docs 2017-05-17 06:48:46 -04:00
Daniel Sogl
5145395dd7 docs(template): fix install command (#1572) 2017-05-17 06:47:35 -04:00
Ibby Hadeed
dfd0514a43 refactor(): optimize code 2017-05-17 06:47:20 -04:00
Elias Boukamza
d5919d1736 fix(secure-storage): reject the promise if the plugin doesn't exist (#1562) 2017-05-17 06:45:54 -04:00
Ibby Hadeed
71f7051997 docs(): fix typo 2017-05-17 06:45:22 -04:00
Ibby Hadeed
2858b4bad7 remove support option 2017-05-17 06:39:08 -04:00
Ibby Hadeed
4c8deb2bed feat(linkedin): add getActiveSession method
closes #1570
2017-05-17 06:36:04 -04:00
Ibby Hadeed
277b2b15e6 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-17 06:32:49 -04:00
Ibby Hadeed
ebf402864b fix(android-permissions): fix PERMISSION property and add requestPermission
closes #1574
2017-05-17 06:32:27 -04:00
David Routhieau
6b702973ec docs(): update plugin install source (#1573) 2017-05-17 05:33:01 -04:00
Jan Piotrowski
7d4e8acce8 Remove --save
`ionic cordova plugin add` always adds `--save` to the Cordova call anyway
2017-05-17 11:31:41 +02:00
Ibby Hadeed
31983d8317 chore(): update changelog 2017-05-16 05:53:31 -04:00
Ibby Hadeed
8c842b00b6 3.8.1 2017-05-16 05:53:15 -04:00
Ibby Hadeed
c6feaafcca tslint 2017-05-16 05:49:09 -04:00
Ibby Hadeed
a7f7b26a76 reafactor(): amend last commit 2017-05-16 05:44:50 -04:00
Ibby Hadeed
d0dec7a17d fix(file): various fixes
closes #1564
2017-05-16 05:44:01 -04:00
Ibby Hadeed
7487293d33 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-16 05:31:42 -04:00
Ibby Hadeed
4f6ec0cfcd test(): update tests 2017-05-16 05:31:35 -04:00
Daniel Sogl
b35417a017 fix(document-viewer): fix params and docs for canViewDocument (#1568)
* refactor(document-viewer): fix example

* Update index.ts

* Update index.ts
2017-05-16 04:32:31 -04:00
David Routhieau
adf9c5a323 fix(file): fix repo link (#1566) 2017-05-16 00:38:39 -04:00
Raman Rasliuk
7c797123f5 fix(file): add toInternalURL (#1561)
* Put back toInternalURL

What was the reason to remove `toInternalURL` from `Entry`?
Fixes #1560

* Remove trailing whitespace
2017-05-15 04:55:06 -04:00
Daniel Sogl
bd1794d7f5 github(template): issue template (#1559)
* github(tempalte): issue template

* Update ISSUE_TEMPLATE.md
2017-05-15 03:23:54 -04:00
Daniel Sogl
46502cb864 docs(ionic-site): CLI V3 command (#1556) 2017-05-14 05:30:34 -04:00
Ibby Hadeed
02cc615c21 ci-tests fixes 2017-05-14 03:26:11 -04:00
Ibby Hadeed
749fd8af43 tests(): add basic tests (#1555) 2017-05-14 03:25:33 -04:00
Ibby Hadeed
e2acde5332 chore(): test plugin changes when PR is submitted (#1554)
* ci tests

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update
2017-05-14 03:19:48 -04:00
Ibby Hadeed
5203d026d4 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-14 02:09:11 -04:00
Ibby Hadeed
362ae4422b docs(sqlite): fix doc generation issue 2017-05-14 02:09:07 -04:00
Nicolas Molina Monroy
965a90c52c feat(mix-panel): add timeEvent (#1536)
* feat(mix-panel): add timeEvent

* style(mixpanel): remove params
2017-05-14 00:58:22 -04:00
Ibby Hadeed
a28de660bc refactor(): no implicit any 2017-05-14 00:55:16 -04:00
Ibby Hadeed
fec19b734c fix(sqlite): fix implementation and improve typings 2017-05-14 00:52:30 -04:00
Ibby Hadeed
6773ed341c chore(): add --ignore-errors flag 2017-05-14 00:20:38 -04:00
Ibby Hadeed
23ad074d04 chore(): update changelog 2017-05-13 23:12:36 -04:00
Ibby Hadeed
912668d8f8 3.8.0 2017-05-13 23:12:29 -04:00
Ibby Hadeed
cf531af244 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-13 23:12:20 -04:00
Ibby Hadeed
a94651dc75 chore(): update templates 2017-05-13 22:53:04 -04:00
Alexandru Albu
ad0680bd90 docs(google-map): update install command (#1525)
command for adding plugin has changed
2017-05-13 22:47:01 -04:00
IonicOnCouch
66a82dd5ce docs(): maximumImagesCount works only for Android. (#1540)
The option "maximumImagesCount" works only for Android. So there should be a comment.
2017-05-13 22:46:41 -04:00
jasonmamy
8ea8ac40e5 refactor(wheel-selector): fixed the interfaces and default values (#1544) 2017-05-13 22:46:19 -04:00
Daniel Sogl
2d477ba9a0 docs(readme): https + removed V2 tag (#1551) 2017-05-13 22:46:09 -04:00
Ibby Hadeed
f98f90a9a3 fix(file): various fixes (#1553)
* save schanges

* save changes

* save changes

* save changes
2017-05-13 22:44:10 -04:00
wleberre
fba0ce2bb6 docs(): fix typo (#1548) 2017-05-13 21:28:22 -04:00
Daniel Sogl
22d0260cde chore(package): bump angular and typescript (#1549) 2017-05-13 20:19:45 -04:00
Daniel Sogl
25aeb406ae core(package): update tslint-ionic-rules (#1539) 2017-05-12 05:03:52 -04:00
Daniel Sogl
385da017a0 feat(video-capture-plus): add Video Capture Plus plugin (#1538)
* feat(plugin): Video Capture Plus

fix #709

* Updated interfaces
2017-05-12 05:03:24 -04:00
Raman Rasliuk
efae1be116 fix(file): fix file reader (#1537)
Pass reader object on call function.
Fixes #1530
2017-05-12 04:18:38 -04:00
Eamon Bauman
7f919d5c90 docs(): fix options for prepareInterstitial (#1535)
Using the example in the previous version of this document, calling prepareInterstitial(adId) resulted in an
"-[__NSCFString count]: unrecognized selector sent to instance"
exception. This was alleviated by changing the call to prepareInterstitial({adId: adId}) 
(e.g. passing in an options object vs. just the adid string)
2017-05-12 04:16:48 -04:00
ChristopherTotty
00c156811f docs(geolocation): fix reference (#1533) 2017-05-12 04:16:14 -04:00
Jan Piotrowski
8512dd5d92 docs(header-color): improve description (#1532) 2017-05-12 04:16:01 -04:00
Niccolò Belli
ad514bbf63 fix(fcm): fix method name (#1531) 2017-05-12 04:15:35 -04:00
Dave Alden
45108c4c18 fix(diagnostic): fix Cordova decorator in camera API (#1527) 2017-05-12 03:53:56 -04:00
Diogo Trentini
17e166d04d docs(camera-preview): fix interface name (#1526) 2017-05-12 03:50:27 -04:00
Jan Piotrowski
dea9f42d5f Changed ionic pluginto ionic cordova plugin 2017-05-11 17:53:15 +02:00
Jan Piotrowski
e193baf1c1 Removed inline style block (as it was added to the main site css) 2017-05-11 11:33:19 +02:00
Ibby Hadeed
10d61c21c2 fix(app-minimize): fix pluginRef 2017-05-11 04:48:25 -04:00
Ibby Hadeed
7e322aadb8 docs(firebase): mark plugin as beta 2017-05-09 23:50:23 -04:00
Ibby Hadeed
4bd4f7fa84 chore(): update changelog 2017-05-09 18:39:58 -04:00
Ibby Hadeed
89708781bf 3.7.0 2017-05-09 18:39:50 -04:00
Ibby Hadeed
cf8d2e7f02 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:33:42 -04:00
Daniel Sogl
54b6659469 docs(firebase): update platforms (#1521)
fix #1518
2017-05-09 18:29:43 -04:00
Ibby Hadeed
36d603bdd7 docs(web-instent): mark as beta 2017-05-09 18:29:26 -04:00
Ibby Hadeed
15cf751441 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:29:13 -04:00
Daniel Sogl
252c3e4a21 fix(web-intent): updated source (#1519)
* refactor(web-intent): updated source

fix #1517

* Update index.ts
2017-05-09 18:29:06 -04:00
Chris Topaloudis
958380275c fix(google-maps): fix fromPointToLatLng params (#1514) 2017-05-09 18:27:05 -04:00
Ibby Hadeed
e35408adca docs(): remove result word 2017-05-09 18:25:48 -04:00
Ibby Hadeed
c7400b1ab1 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:25:08 -04:00
Daniel Sogl
4e9b2d917b feat(mobile-accessibility): add Mobile Accessibility plugin (#1505)
* feature(plugin): mobile-accessibility

fix #1304

* fixed linting

* lint

* usage

* optimized promises
2017-05-09 18:24:59 -04:00
Daniel Sogl
e04b7a4a24 docs(broadcaster): fix example (#1484)
fix #1369
2017-05-09 18:23:37 -04:00
Daniel Sogl
46b4e25f7b feat(plugin): add File encryption plugin (#1509)
* feat(plugin): File encryption

fix #618

* typo
2017-05-09 18:22:18 -04:00
Ibby Hadeed
12356d2d34 refactor 2017-05-09 18:21:46 -04:00
Ibby Hadeed
de320ac21c Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:20:58 -04:00
Daniel Sogl
3d747d38b2 feat(phonegap-local-notifications): add Phonegap local notifications plugin (#1474)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* added phonegap-local-notifications

* update #1

* update #3

* update #4

* cleaned up the usage part

* removed old folder

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts

* Update index.ts
2017-05-09 18:20:49 -04:00
Ibby Hadeed
1379f6389a fix(document-viewer): fix params 2017-05-09 18:18:35 -04:00
Daniel Sogl
6855fe8f7d feat(plugin): add Document Viewer plugin (#1520)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* Initial commit

* updated interface

* updated interface
2017-05-09 18:14:47 -04:00
Daniel Sogl
142525e133 feature(autostart): add Autostart plugin (#1506)
fix #1163
2017-05-09 18:13:51 -04:00
Ibby Hadeed
af66a0dbec refactor(wheel-selector): fixes & enhancements 2017-05-09 18:12:56 -04:00
Ibby Hadeed
235f51a351 Merge branch 'master' of github.com:driftyco/ionic-native 2017-05-09 18:09:16 -04:00
jasonmamy
8fe4eecbb1 feat(wheel-selector): add Native wheel Selector plugin (#1522) 2017-05-09 18:09:08 -04:00
Ibby Hadeed
14959c1162 fix(flurry-analytics): fix plugin wrapper 2017-05-09 18:07:09 -04:00
Ibby Hadeed
e84359b2b1 refactor(google-maps): accept string or number 2017-05-09 17:56:03 -04:00
Ibby Hadeed
88f393288d docs(): fix typo 2017-05-09 17:55:21 -04:00
Ibby Hadeed
eb30ad2fec docs(): update 2017-05-09 17:55:08 -04:00
Robert Coie
ec85792a10 fix(google-maps): add args to panBy (#1507) 2017-05-09 17:54:25 -04:00
Daniel Sogl
ce2cc1b815 feat(intercom): add Intercom plugin (#1504) 2017-05-09 17:53:15 -04:00
Daniel Sogl
5ee79b4672 feat(android-premissions): add Android Permissions plugin (#1508)
fix #929
2017-05-09 17:52:58 -04:00
Daniel Sogl
ce72be76bc fix(flurry-analytics): fix pluginRef (#1485)
fix #1399
2017-05-09 17:48:07 -04:00
Daniel Sogl
f96505f533 docs(email composer): out of beta (#1480)
This repo is out of beta and they fixed problems with newer android versions

https://github.com/hypery2k/cordova-email-plugin/commit/171b99b
2017-05-09 17:44:00 -04:00
Daniel Sogl
f6835dc9b8 docs(fingerprint-aio): out of beta (#1479)
This plugin is out of beta (1.1.0)
2017-05-09 17:42:36 -04:00
Daniel Sogl
302fa48e7c chore(): fix ionic native import (#1471) 2017-05-09 17:39:08 -04:00
Daniel Sogl
ed6044d4e8 feat(android-fingerprint-auth): add ERRORS constant (#1470)
* Update index.ts

* fix lint

* linter
2017-05-09 17:38:30 -04:00
Daniel Sogl
aa9826f657 feat(facebook): add EVENTS constant (#1510)
* improve(facebook): added missing EVENTS

* Update index.ts

* lint
2017-05-09 17:36:13 -04:00
Daniel Sogl
d25b2f16a9 feat(app-minimize): add AppMinimize plugin (#1501)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* Added AppMinimize plugin

* promisse

* usage
2017-05-09 17:35:13 -04:00
Daniel Sogl
14f38a0e28 feat(health-kit): add HealthKit plugin (#1499)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* Initial commit

- added Plugin infos
- added methods

* Added Interface

* Implemented all methods

* fixed retun types

TODO: Improve Interface Docs

* Interface discription

Still needs some improvements
2017-05-09 17:34:38 -04:00
Daniel Sogl
c7111a3117 fix(app-preferences): value can be any type (#1498)
* refactor(AppPreferences): changed input type

fix #1334

* Update index.ts
2017-05-09 17:33:47 -04:00
Daniel Sogl
65a8095e5f feat(social-sharing): add setIPadPopupCoordinates method (#1497)
* refactor(social sharing): added missing method

fix #1288

* Update index.ts
2017-05-09 17:33:10 -04:00
Daniel Sogl
70c9558d2b docs(youtube-video-player): update repo (#1496)
* refactor(YoutubeVideoPlayer): updated repo

fix #1352

* Update index.ts

* Update index.ts

* Update index.ts
2017-05-09 17:32:47 -04:00
Daniel Sogl
a5b2e981b3 feat(safari-view-controller): add missing options (#1490)
* update(SafariViewController): added missing options

fix #1489

* alphabetical

* fix linter

* Update index.ts

* Update index.ts
2017-05-09 17:32:24 -04:00
Daniel Sogl
21c9cd2e57 feat(native-ringtones): add Native Ringtones plugin (#1488)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.

* initial commit

Added wrapper

* Added usage guide

* Added parms
2017-05-09 17:31:57 -04:00
Patrick Bußmann
e35501d3e5 docs(media): add hints for media plugin if its not recording on iOS #1452 (#1487) 2017-05-09 17:31:21 -04:00
Daniel Sogl
e6a647b08b fix(background-mode): add missing method (#1486)
fix #1393
2017-05-09 17:31:01 -04:00
Dave Alden
a4151abebf feat(diagnostic): update to support latest signatures (#1458)
* refactor(diagnostic plugin): update camera API function signatures to support cordova.plugins.diagnostic@3.6.0. See 515317e89a

* fix(diagnostic plugin): fix whitespace linting errors in previous commit

* * fix(diagnostic plugin): add callback indices to Cordova decorator in camera API so externalStorage parameter can be optionally omitted.
See https://github.com/driftyco/ionic-native/pull/1458#issuecomment-299030833

* fix(diagnostic plugin): fix incorrect return type on getCameraRollAuthorizationStatus()
2017-05-09 17:30:11 -04:00
Askhat Saiapov
6cc6393712 feat(fcm): support Firebase Cloud Messaging plugin (#1449)
* feat(): add fcm plugin

* fix(): fix whitespace

* fix(): add observables for methods

* feat(): add NotificationData interface

* doc(): improve examples in document

* style(): remove usage examples from emthod declarations

* fix(): decorate methods appropriately
2017-05-09 17:29:29 -04:00
Daniel Sogl
8330c92921 feat(camera-preview): add tapToFocus method (#1494)
* Update index.ts

* Update index.ts
2017-05-07 10:17:00 -04:00
Fabriece Sumuni
80af55100e docs(): clarify the options for target (#1493)
I struggled to figure out what options I had for target until I read them from the github repo.
I'm assuming that the documentation is generated from the comments and I think addition clarifies the intent of `target` a bit.
2017-05-07 09:35:41 -04:00
Daniel Sogl
8311aaf893 fix(native-storage): add missing keys method (#1495)
fix #1415
2017-05-07 09:31:59 -04:00
Ibby Hadeed
b2d07b43cc refactor(file): minimize code for readFile 2017-05-05 15:07:54 -04:00
Ibby Hadeed
134eab2dcc refactor(file): fix build issues 2017-05-05 14:46:49 -04:00
Daniel Sogl
aeea03478b refactor(mixpanel): remove showSurvey (#1469)
* Update index.ts

* Update index.ts
2017-05-05 14:20:20 -04:00
Daniel Sogl
4db902b9dd docs(iab): https://ionicframework.com/ (#1468) 2017-05-05 14:19:48 -04:00
Daniel Sogl
94bd82097c docs(zbar): fix import and usage (#1467)
* docs(zbar): fixed import and usage

* Update index.ts

* Update index.ts
2017-05-05 14:19:31 -04:00
Daniel Sogl
8a445e9a31 fix(build): fix build errors (#1472) 2017-05-05 14:13:07 -04:00
Rory Standley
78e19e5f5b docs(): add the unit of measurement for radius value (#1463)
Didn't seem quite obvious to me so might help someone else
2017-05-05 14:08:15 -04:00
Daniel Sogl
7738622976 docs(): fix typo (#1476)
I missed some typo
2017-05-05 14:07:46 -04:00
Daniel Sogl
d9cc959939 feat(touch-id): add didFingerprintDatabaseChange (#1475)
fix #1466
2017-05-05 13:54:30 -04:00
Jan Piotrowski
4835182ad5 Replace inline styles with style block 2017-05-05 13:38:58 +02:00
Jan Piotrowski
49ac21145a Add link to "Add this plugin to your app's module" and make Installation into ordered list 2017-05-05 13:31:16 +02:00
Jan Piotrowski
8a81ee08e3 Switch placement of Description and Installation 2017-05-05 13:06:31 +02:00
Daniel Sogl
bf88b78c63 docs(apprate): update example (#1455)
* docs(apprate): update example

* Update index.ts

* typo

* fixed preferences

* Update index.ts
2017-05-03 17:53:42 -04:00
Daniel Sogl
c600cd622e docs(app-preferences): unified example (#1456)
I changed the usage part to match the usage part of other plugins 

1. constructor with the private import
2. Call the plugin methods
2017-05-03 17:01:28 -04:00
Daniel Sogl
14a1cb9ee7 docs(admob): improve example (#1454) 2017-05-03 17:00:22 -04:00
Daniel Sogl
92468c9b84 docs(google-maps): example fix #1444 (#1461)
It should be clearer now that the marker etc. should be added inside the .then() block

Related to: 
- https://github.com/driftyco/ionic-native/issues/1444
- https://forum.ionicframework.com/t/ionic-build-android-failed/88742/9
2017-05-03 16:40:09 -04:00
Dylan v.d Merwe
6e2fdf98a2 fix(globalization): getDatePattern return types (#1451)
Added missing return types to getDatePattern.
2017-05-01 16:46:06 -04:00
Daniel Sogl
84cd81dcaf refactor(admob): remove unneeded imports (#1450)
* refactor(admob): remove unneeded imports

* Update index.ts
2017-05-01 16:36:22 -04:00
Daniel Sogl
c6f9fa356f style(): unify docs and spacing (#1448)
* typo(barcode-scanner): fixe circle lint error

* typo(docs):  Unified the documentations

In some plugins the typescript markup was missing.
I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same.
2017-04-30 14:36:22 -04:00
Daniel Sogl
a7c9abc449 refactor(barcode-scanner): fix tslint error (#1447) 2017-04-30 14:13:21 -04:00
SVANNER
748c6bd9be feat(camera-preview): add new focus methods & getFlashMode() (#1442)
4 new methods are available in the master:
- getSupportedFocusModes();
- getFocusMode();
- seFocusMode();
- getFlashMode();
2017-04-30 13:21:28 -04:00
Daniel Sogl
1a682bc3de docs(README): Ionic 3 Update / typo (#1441)
_ Update example import for Ionic 
- Removed Ionic 2.x
- typo
2017-04-30 13:19:55 -04:00
Daniel Sogl
58ad707dc3 docs(secure storage): rename item to key (#1445) 2017-04-30 13:18:49 -04:00
Jan Piotrowski
36d101af02 remove stray "f" 2017-04-29 16:47:23 +02:00
Jan Piotrowski
8e65474c1d Add headline to install commands 2017-04-29 16:45:34 +02:00
Patrick Reames
11dbe42a0d feat(firebase): add support for firebase ErrorLog (#1440)
* feat(firebase): add support for firebase ErrorLog

* feat(firebase): add support for firebase ErrorLog
2017-04-28 11:39:28 -04:00
Robert Coie
1123299274 refactor(barcode-scanner): improve typings (#1437) 2017-04-28 09:35:33 -04:00
Gianfrancø Palumbo
4ca4f9443d docs(): fix typos (#1435)
the OCD in me is here to help :P
2017-04-28 09:33:30 -04:00
Daniel Sogl
83a3569155 docs(): remove identifier from product id (#1432) 2017-04-28 09:33:05 -04:00
Søren Bryder
f699c6d4b7 feat(native-page-transitions): add pendingTransition methods (#1344) 2017-04-28 09:32:44 -04:00
Jan Piotrowski
dd69810494 docs(printer): fix example (#1439)
`this.p` is not defined as Printer is imported as `printer`
2017-04-28 09:32:13 -04:00
Ibby Hadeed
822be1c248 chore(): update changelog 2017-04-27 03:30:56 -04:00
Ibby Hadeed
1d29ed38f6 3.6.1 2017-04-27 03:30:54 -04:00
Ibby Hadeed
bcb3c61fe0 chore(): bump core package dependency version 2017-04-27 03:29:51 -04:00
Ibby Hadeed
955476b45b chore(): update changelog 2017-04-27 01:01:19 -04:00
Ibby Hadeed
95aa3e2f26 3.6.0 2017-04-27 01:01:08 -04:00
Ibby Hadeed
facdcdc956 docs(): add save flag
closes #1385
2017-04-27 00:55:23 -04:00
Ibby Hadeed
ab782f7093 chore(): update templates 2017-04-27 00:53:06 -04:00
Ibby Hadeed
6811750711 docs(secure-storage): fix types
closes #1416
2017-04-27 00:51:57 -04:00
Ibby Hadeed
c3d23b0ee9 refactor(): cleanup 2017-04-27 00:49:23 -04:00
Ibby Hadeed
17366a29da feat(): add IonicNativePlugin base class (#1425)
* add base class

* properties are static

* some fixes

* tslint
2017-04-27 00:36:12 -04:00
Matt Thiessen
39eaebfafd docs(): fix docs (#1423) 2017-04-27 00:36:01 -04:00
Andrew Crites
66874cc598 chore(build): allow option to specify plugins to build (#1421) 2017-04-27 00:35:47 -04:00
Andrew Crites
16dc71ab71 feat(keychain): add Keychain plugin (#1420)
* feat(keychain): adding keychain plugin

ionic-native for cordova ios keychain plugin

* feat(keychain): make touchID params optional in type def
2017-04-27 00:35:29 -04:00
Ronald Mak
b58149f2f2 fix(media): function 'create' never returns media object (#1419)
The function never returns an object of MediaObject. The onSuccess callback is wrongly used to return the object. In fact, onSuccess/onError callbacks are only invoked after the current play, record, or stop action is called.
2017-04-27 00:34:43 -04:00
Kendall González León
b6afc19e72 docs(): fix docs (#1418)
On line 11 there was not closing single quote.
2017-04-27 00:34:22 -04:00
Daniel Sogl
52d731e7d9 chore(): update to Angular 4 (#1391)
Since Ionic 3.0 released, the package should be able  to support Angular 4.0.0.
I updated the dependencies for that.
2017-04-18 17:52:34 -04:00
Ibby Hadeed
7df7a557da chore(): update changelog 2017-04-18 17:48:08 -04:00
Ibby Hadeed
c720bfead1 3.5.0 2017-04-18 17:48:00 -04:00
Ibby Hadeed
b4102310e7 tslint 2017-04-18 17:47:24 -04:00
Ibby Hadeed
1b84db035f feat(camera-preview): add new plugin methods
New methods and constants available for CameraPreview
2017-04-18 17:44:01 -04:00
Ibby Hadeed
37e8eddd86 feat(background-fetch): add new status method
feat(background-fetch): add status method
2017-04-18 17:42:00 -04:00
Ibby Hadeed
4fb9b949d7 feat(action-sheet): update to match latest version
feat(action-sheet): update to newest version
2017-04-18 17:41:11 -04:00
Ibby Hadeed
66bc034c80 fix(google-maps): fix Geocoder pluginRef
Fix Geocoder's pluginRef
2017-04-18 17:40:33 -04:00
Ibby Hadeed
593c1ee6ca feat(health): update datatypes
Update datatypes to match recent release of plugin
2017-04-18 17:39:47 -04:00
Ibby Hadeed
91439be0bd feat(native-geocoder): add district property
native-geocoder: added district for larger cities
2017-04-18 17:38:17 -04:00
Ibby Hadeed
4ae50561b4 feat(flurry-analytics): add flurry analytics plugin
Added Flurry Analytics wrapper
2017-04-18 17:37:39 -04:00
Ibby Hadeed
1f0986fa6f docs(): fix reference
change executeSql doc to mention create instead of openDatabase
2017-04-18 17:36:39 -04:00
Ibby Hadeed
1be4c1c669 docs(): battery-status example fix (#1387)
Closes #1383
2017-04-18 17:36:15 -04:00
Dylan v.d Merwe
c7a6e6625a docs(): fix typo in media example (#1386) 2017-04-18 17:35:27 -04:00
SVANNER
0a7f56d960 New methods and constants available 2017-04-18 07:15:15 +02:00
Dylan v.d Merwe
f7044a08de bug(doc): battery-status example fix
Fix for https://github.com/driftyco/ionic-native/issues/1383
2017-04-17 23:26:56 +02:00
John-Luke
6168eaee47 feat(background-fetch): add status method 2017-04-17 15:22:44 -03:00
John-Luke
9c925806ed feat(action-sheet): update to newest version 2017-04-17 14:27:13 -03:00
Robert Coie
3e8211461a change executeSql doc to mention create instead of openDatabase 2017-04-16 16:27:09 -07:00
hodak
b2120c68e2 Fix Geocoder's pluginRef 2017-04-15 13:29:10 +02:00
Ankush Aggarwal
1da12b9330 added HealthDataType interface and usage instructions 2017-04-14 08:21:45 -07:00
Amit Moryossef
4bd6aaba2b fix(core): fix bug when checking if plugin exists (#1348)
* fix(cordova-plugin): add check if method exists

For https://github.com/driftyco/ionic-native/issues/1327

* fix(plugin): add typeof to undefined check
2017-04-14 09:49:57 -04:00
Ibby Hadeed
f396940044 fix(rollbar): fix pluginRef 2017-04-14 09:42:46 -04:00
Ibby Hadeed
6bba72d32a fix(media): fix issue with create method
closes #1333
2017-04-14 09:19:25 -04:00
Juan J. San Emeterio
d30b534150 docs(google-plus): options parameter is required (#1368)
Issue reported: https://forum.ionicframework.com/t/ionic-native-googleplus-unrecognized-selector-sent-to-instance/81944/3

In order to correctly call the login method on the GooglePlus provider you need to pass it the 'options' parameter even if it's empty.
2017-04-14 09:14:41 -04:00
Kendall González León
8edc27079c docs(): fix example (#1362)
Line 224 fixed, Incorrect single quotes in the string.
(don't -> do not) remove quotes for avoid bad format.
2017-04-14 09:13:52 -04:00
Stefan Huber
55f9943f86 docs(media): minor fix (#1358)
`getDuration` is synchronous, inside the example it was used with a promise, which is quite missleading...
2017-04-14 09:07:27 -04:00
Ctibor Laky
352ad7ab2f docs(): fix example (#1355) 2017-04-14 09:04:46 -04:00
Gianfrancø Palumbo
15bf509ae0 docs(): fix typo (#1354) 2017-04-14 09:04:32 -04:00
Nikhil
6b9f650a19 docs(social-sharing): fix example (#1351)
ShareViaEmail parameter for providing email "must be null or an array" because it's type is "string:[]" and the provided syntax is wrong, so i have updated that syntax.
2017-04-14 09:04:11 -04:00
Leonardo Ruhland
b30883a876 docs(): fix package name (#1340)
Fixes documentation with the new import syntax
2017-04-14 08:59:15 -04:00
Garry-H
caec80b661 docs(nfc): enhance docs (#1325)
labeled methods with classes, improved method descriptions
2017-04-14 08:58:53 -04:00
LAÉCIO FERREIRA MORAIS
620289f54b docs(): fix typo (#1324) 2017-04-14 08:58:01 -04:00
Lenglet Anthony
5a6246425f docs(): fix typo (#1323) 2017-04-14 08:57:41 -04:00
Ankush Aggarwal
43b75af58b changed any to specific types 2017-04-13 17:56:59 -07:00
Ankush Aggarwal
44957e2197 Update datatypes to match recent release of plugin
I made changes to cordova-plugin-health to accept the following array as datatypes. Earlier it was just an array of strings. Now it also contains an object with `read` and `write` array.

```
[
  'calories', 'distance',   //read and write permissions
  {
    read : ['steps'],       //read only permission
    write : ['height', 'weight']  //write only permission
  }
]
```

Don't know how to specify this array in typescript so just replaced by 'any'
2017-04-11 09:39:24 -07:00
fredroo
c15c11cf95 docs(): enhance example (#1336) 2017-04-08 16:58:36 -04:00
Ankush Aggarwal
1b429638fe docs(): add types (#1342)
Resolves - https://github.com/driftyco/ionic-native/issues/1331
2017-04-08 16:58:07 -04:00
Andréas Hanss
99576d823d Edit for 3.0 (#1345) 2017-04-08 16:57:38 -04:00
Robert Herhold
0147704a4f docs(): fix typo (#1329) 2017-04-05 23:37:08 -04:00
Yasin Simsek
f6a7e5fe9b native-geocoder: added district for larger cities 2017-04-03 12:49:29 +02:00
anastasia
ebb47ce591 fixed doc of flurry analytics wrapper 2017-04-03 13:14:08 +03:00
gujiman
57eabc002a docs(paypal): fix package name in example (#1313)
The import ref for paypal is incorrect. I've added the correct name.
2017-04-01 22:38:42 -04:00
Joel Szwarga
24c8d5d627 docs(music-controls): fix example code (#1315)
The sample code does not work...this change returns the observable first with subscribe() before actually calling the Observable's subscribe method.

In fact, the way it's written in the example, the code would not build because of typescript errors.
2017-04-01 22:38:17 -04:00
Ibby Hadeed
4ceb340630 docs(admob-free): fix plugin name 2017-03-31 23:15:27 -04:00
anastasia
ec8d318280 Finish flurry-analytics 2017-03-31 17:38:11 +03:00
anastasia
8add83612d added flurry analytics wrapper 2017-03-31 17:36:09 +03:00
Gengjun Wu
0beefb3079 docs(flashlight): fix typo (#1306)
There is a typo on line 14, changed from

 * constructor(private flashlight: FlashLight) { }

to

 * constructor(private flashlight: Flashlight) { }
2017-03-31 03:02:39 -04:00
Ibby Hadeed
4d2f720b01 chore(): update changelog 2017-03-30 15:58:15 -04:00
Ibby Hadeed
d29ca88b18 3.4.4 2017-03-30 15:58:12 -04:00
Ibby Hadeed
c94dd41f92 Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-30 15:58:11 -04:00
gurnard123
b005efc52b docs(intel-security): fix references (#1305)
corrected the documentation to correct the read code snippet. As detailed here:
https://forum.ionicframework.com/t/crypto-libraries-with-ionic-2/84629
2017-03-30 15:50:26 -04:00
mugenyi henry
f4c4317f16 docs(admob): fix package name (#1301)
remove the dash "import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/ad-mob';" to import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/admob' because typescript will not import the specified clases
2017-03-30 15:50:02 -04:00
Ibby Hadeed
145577f9bc fix(push): hasPermission is part of Push object
addresses comment in #1297
2017-03-30 15:48:46 -04:00
232 changed files with 24277 additions and 5616 deletions

View File

@@ -4,8 +4,8 @@
#### 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).
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save ionic-native@latest`
* 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:
* Short description of the issue
@@ -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
View File

@@ -0,0 +1,28 @@
**I'm submitting a ...** (check one with "x")
[ ] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or https://ionicworldwide.herokuapp.com/
**Current behavior:**
<!-- Describe how the bug manifests. -->
**Expected behavior:**
<!-- Describe what the behavior would be without the bug. -->
**Steps to reproduce:**
<!-- If you are able to illustrate the bug or feature request with an example, please provide steps to reproduce. -->
**Related code:**
```
insert any relevant code here
```
**Other information:**
<!-- List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to fix, Stack Overflow links, forum links, etc. -->
**Ionic info:** (run `ionic info` from a terminal/cmd prompt and paste output below):
```
insert the output from ionic info here
```

2
.gitignore vendored
View File

@@ -3,5 +3,5 @@ node_modules/
.idea
.tmp
aot/
dist/
scripts/ionic-native-bower
dist/

File diff suppressed because it is too large Load Diff

11
CODE_OF_CONDUCT.md Normal file
View 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).

View File

@@ -103,7 +103,7 @@ Next, let's look at the `watchPosition` method.
The `@Cordova` decorator has a few more options now.
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/driftyco/ionic-native#promises-and-observables) instead of a Promise.
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/ionic-team/ionic-native#promises-and-observables) instead of a Promise.
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
@@ -209,4 +209,13 @@ Example:
someMethod(): Promise<any> {
// anything here will only run if the plugin is available
}
```
#### CordovaFunctionOverride
Wrap a stub function in a call to a Cordova plugin, checking if both Cordova and the required plugin are installed.
Example:
```ts
@CordovaFunctionOverride()
someMethod(): Observable<any> { return; }
```

View File

@@ -1,24 +1,24 @@
[![Circle CI](https://circleci.com/gh/driftyco/ionic-native.svg?style=shield)](https://circleci.com/gh/driftyco/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) ![](https://img.shields.io/npm/v/@ionic-native/core.svg)
[![Circle CI](https://circleci.com/gh/ionic-team/ionic-native.svg?style=shield)](https://circleci.com/gh/ionic-team/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) ![](https://img.shields.io/npm/v/@ionic-native/core.svg)
# 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
@@ -52,38 +52,28 @@ import { NgZone } from '@angular/core';
@Component({ ... })
export class MyComponent {
constructor(private geolocation: Geolocation, private platform: Platform, private ngZone: NgZone) {
constructor(private geolocation: Geolocation, private platform: Platform) {
platform.ready().then(() => {
// get position
geolocation.getCurrentPosition().then(pos => {
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
});
// watch position
const watch = geolocation.watchPosition().subscribe(pos => {
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
// Currently, observables from Ionic Native plugins
// need to run inside of zone to trigger change detection
ngZone.run(() => {
this.position = pos;
})
this.position = pos;
});
// to stop watching
watch.unsubscribe();
});
}
}
```
@@ -95,13 +85,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 +103,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,8 +111,9 @@ providers: [
Here's the full example:
```ts
```typescript
import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
@@ -143,6 +134,7 @@ class CameraMock extends Camera {
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
@@ -163,24 +155,24 @@ export class AppModule {}
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Ionic Native lets you know what the issue is and how you can resolve it.
![img](http://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)
![img](https://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)
## Plugin Missing?
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)
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)

View File

@@ -7,12 +7,15 @@ jobs:
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

View File

@@ -34,14 +34,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
View File

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

7987
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,22 @@
{
"name": "ionic-native",
"version": "3.4.3",
"version": "4.7.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": "2.4.8",
"@angular/compiler-cli": "2.4.8",
"@angular/core": "2.4.8",
"@angular/compiler": "4.4.4",
"@angular/compiler-cli": "4.4.4",
"@angular/core": "4.4.4",
"@types/cordova": "0.0.34",
"@types/jasmine": "^2.6.3",
"@types/node": "^8.0.50",
"canonical-path": "0.0.2",
"child-process-promise": "2.2.0",
"conventional-changelog-cli": "1.2.0",
"cpr": "2.0.2",
"cz-conventional-changelog": "1.2.0",
"child-process-promise": "2.2.1",
"conventional-changelog-cli": "1.3.4",
"cpr": "2.0.0",
"cz-conventional-changelog": "2.0.0",
"decamelize": "1.2.0",
"dgeni": "0.4.7",
"dgeni-packages": "0.16.10",
@@ -21,18 +26,25 @@
"gulp-rename": "1.2.2",
"gulp-replace": "0.5.4",
"gulp-tslint": "6.1.2",
"jasmine-core": "^2.6.1",
"karma": "^1.7.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.1.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-typescript": "^3.0.1",
"karma-typescript-es6-transform": "^1.0.0",
"lodash": "4.17.4",
"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.0.1",
"rimraf": "2.6.1",
"rxjs": "5.5.2",
"semver": "5.3.0",
"tslint": "3.15.1",
"tslint-ionic-rules": "0.0.7",
"typescript": "2.0.09",
"zone.js": "0.7.2"
"tslint-ionic-rules": "0.0.8",
"typescript": "~2.4.2",
"zone.js": "0.8.18"
},
"scripts": {
"start": "npm run test:watch",
@@ -44,7 +56,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": {

View File

@@ -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
@@ -40,7 +40,6 @@ PLUGIN_PACKAGE_JSON.peerDependencies = PLUGIN_PEER_DEPS;
console.log('Making new TMP directory');
fs.mkdirpSync(BUILD_TMP);
// Prepare and copy the core module's package.json
console.log('Preparing core module package.json');
CORE_PACKAGE_JSON.version = IONIC_NATIVE_VERSION;
@@ -51,6 +50,21 @@ fs.writeJsonSync(path.resolve(BUILD_CORE_DIST, 'package.json'), CORE_PACKAGE_JSO
// Fetch a list of the plugins
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;
}
// Create a queue to process tasks
const QUEUE = queue({
@@ -98,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!
@@ -116,12 +136,22 @@ const addPluginToQueue = pluginName => {
};
PLUGINS.forEach(addPluginToQueue);
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!');
}

View File

@@ -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"
}
}

View File

@@ -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"
}
}

View File

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

View File

@@ -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
View File

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

View File

@@ -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')
}];
})

View File

@@ -22,8 +22,24 @@ module.exports = function jekyll(renderDocsProcessor) {
doc.URL = doc.outputPath.replace('docs//', 'docs/')
.replace('/index.md', '')
.replace('content/', '');
// add trailing slash to plugin pages
if(!doc.URL.endsWith("/") && !doc.URL.endsWith(".html")) {
doc.URL = doc.URL+'/';
}
});
const betaDocs = [];
docs = docs.filter(doc => {
if (doc.beta === true) {
betaDocs.push(doc);
return false;
}
return true;
});
docs = docs.concat(betaDocs);
// add side menu
docs.push({
docType: 'nativeMenu',

View File

@@ -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
];

View File

@@ -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">&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 <$ 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('<', '&lt;').replace('>', '&gt;') $><@ 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>

View File

@@ -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">&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">&beta;</span><@ endif @></a>
</li><@ endif @><@ endfor @>

View File

@@ -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 $>
```

View File

@@ -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

View File

@@ -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

View File

@@ -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
View File

@@ -0,0 +1,2 @@
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"

View File

@@ -1,30 +1,61 @@
import { Plugin } from '@ionic-native/core';
/**
* This is a template for new plugin wrappers
*
* TODO:
* - Add/Change information below
* - Document usage (importing, executing main functionality)
* - Remove any imports that you are not using
* - Add this file to /src/index.ts (follow style of other plugins)
* - Remove all the comments included in this template, EXCEPT the @Plugin wrapper docs and any other docs you added
* - Remove this note
*
*/
import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
* @name $Plugin_Name
* @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 {
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
}
}

View File

@@ -10,41 +10,42 @@
* - Remove this note
*
*/
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty } 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 {
export class {{ PluginName }} extends IonicNativePlugin {
/**
* This function does something

View File

@@ -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);
}

View 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');
});
});
});

View File

@@ -1,8 +1,16 @@
import { instanceAvailability, checkAvailability, wrap, wrapInstance, overrideFunction } from './plugin';
import { getPlugin, getPromise } from './util';
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/throw';
import { Observable } from 'rxjs/Observable';
import {
checkAvailability,
instanceAvailability,
overrideFunction,
wrap,
wrapInstance
} from './plugin';
import { getPlugin, getPromise } from './util';
export interface PluginConfig {
/**
* Plugin name, this should match the class name
@@ -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);
@@ -157,12 +164,12 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
}
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
};
};
}

View File

@@ -1,3 +1,4 @@
export * from './plugin';
export * from './decorators';
export * from './util';
export * from './ionic-native-plugin';

View 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');
});
});

View File

@@ -0,0 +1,54 @@
export class IonicNativePlugin {
static pluginName: string;
static pluginRef: string;
static plugin: string;
static repo: string;
static platforms: string[];
static install: string;
/**
* Returns a boolean that indicates whether the plugin is installed
* @return {boolean}
*/
static installed(): boolean {
return false;
}
/**
* Returns the original plugin object
*/
static getPlugin(): any {}
/**
* Returns the plugin's name
*/
static getPluginName(): string {
return;
}
/**
* Returns the plugin's reference
*/
static getPluginRef(): string {
return;
}
/**
* Returns the plugin's install name
*/
static getPluginInstallName(): string {
return;
}
/**
* Returns the plugin's supported platforms
*/
static getSupportedPlatforms(): string[] {
return;
}
}

View File

@@ -1,25 +1,39 @@
import { get, getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
import { checkReady } from './bootstrap';
import { CordovaOptions } from './decorators';
import 'rxjs/add/observable/fromEvent';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
import { checkReady } from './bootstrap';
import { CordovaOptions } from './decorators';
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 +46,17 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
pluginInstance = getPlugin(pluginRef);
if (!pluginInstance || (!!methodName && 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 +66,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 || 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 +94,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 +139,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 +148,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 +168,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 +229,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 +266,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,7 +314,10 @@ 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> {
export function wrapEventObservable(
event: string,
element: any = window
): Observable<any> {
return Observable.fromEvent(element, event);
}
@@ -217,29 +329,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 +380,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 +420,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;
}
};
}

View File

@@ -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'
);
}
};

View File

@@ -1,8 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaProperty } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface ActionSheetOptions {
/**
* The labels for the buttons. Uses the index x
*/
@@ -13,10 +12,15 @@ export interface ActionSheetOptions {
*/
title?: string;
/**
* The subtitle for the actionsheet (IOS only)
*/
subtitle?: string;
/**
* Theme to be used on Android
*/
androidTheme?: number;
androidTheme?: 1 | 2 | 3 | 4 | 5;
/**
* Enable a cancel on Android
@@ -41,8 +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;
}
/**
@@ -65,10 +73,12 @@ export interface ActionSheetOptions {
*
* const options: ActionSheetOptions = {
* title: 'What do you want with this image?',
* subtitle: 'Choose an action',
* buttonLabels: buttonLabels,
* addCancelButtonWithLabel: 'Cancel',
* addDestructiveButtonWithLabel: 'Delete',
* androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK
* androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK,
* destructiveButtonLast: true
* };
*
* this.actionSheet.show(options).then((buttonIndex: number) => {
@@ -83,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']
platforms: ['Android', 'Browser', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class ActionSheet {
@CordovaProperty
export class ActionSheet extends IonicNativePlugin {
/**
* 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;
}
}

View File

@@ -1,8 +1,9 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface AdMobFreeBannerConfig {
/**
* Ad Unit ID
@@ -65,11 +66,11 @@ export interface AdMobFreeRewardVideoConfig {
}
/**
* @name AdbMobFree
* @name AdMob Free
* @description
*
* @usage
* ```
* ```typescript
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
*
*
@@ -96,6 +97,14 @@ export interface AdMobFreeRewardVideoConfig {
*
*
* ```
* @interfaces
* AdMobFreeBannerConfig
* AdMobFreeInterstitialConfig
* AdMobFreeRewardVideoConfig
* @classes
* AdMobFreeBanner
* AdMobFreeInterstitial
* AdMobFreeRewardVideo
*/
@Plugin({
pluginName: 'AdMobFree',
@@ -105,10 +114,10 @@ export interface AdMobFreeRewardVideoConfig {
platforms: ['Android', 'iOS']
})
@Injectable()
export class AdMobFree {
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',
@@ -142,23 +151,22 @@ export class AdMobFree {
}
/**
*
* 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,48 +175,54 @@ export class AdMobFree {
@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;
}
}
/**
@@ -217,39 +231,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;
}
}
/**
@@ -258,37 +278,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;
}
}

View File

@@ -1,11 +1,17 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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/ad-mob';
* 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 {
export class AdMobPro extends IonicNativePlugin {
AD_POSITION: {
NO_CHANGE: number;
TOP_LEFT: number;
@@ -153,11 +170,13 @@ export class AdMob {
/**
* 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 {
@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 {
@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 {
@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 {
@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 {
event: 'onAdFailLoad',
element: document
})
onAdFailLoad(): Observable<any> { return; }
onAdFailLoad(): Observable<any> {
return;
}
/**
* Triggered when Ad received
@@ -261,7 +290,9 @@ export class AdMob {
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 {
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 {
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 {
event: 'onAdDismiss',
element: document
})
onAdDismiss(): Observable<any> { return; }
onAdDismiss(): Observable<any> {
return;
}
}

View File

@@ -1,5 +1,5 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AlipayOrder {
/**
@@ -67,7 +67,7 @@ export interface AlipayOrder {
* Requires Cordova plugin: `cordova-alipay-base`. For more info, please see the [Alipay plugin docs](https://github.com/xueron/cordova-alipay-base).
*
* @usage
* ```
* ```typescript
* import { Alipay, AlipayOrder } from '@ionic-native/alipay';
*
* constructor(private alipay: Alipay) {
@@ -99,17 +99,20 @@ export interface AlipayOrder {
plugin: 'cordova-alipay-base',
pluginRef: 'Alipay.Base',
repo: 'https://github.com/xueron/cordova-alipay-base',
platforms: ['Android', 'iOS'],
install: 'ionic plugin add https://github.com/xueron/cordova-alipay-base --variable APP_ID=your_app_id'
install:
'ionic cordova plugin add cordova-alipay-base --variable ALI_PID=your_app_id',
installVariables: ['ALI_PID'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Alipay {
export class Alipay extends IonicNativePlugin {
/**
* Open Alipay to perform App pay
* @param order { AlipayOrder } alipay options
* @param { AlipayOrder | string } order alipay options
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error.
*/
@Cordova()
pay(order: AlipayOrder): Promise<any> { return; }
pay(order: AlipayOrder | string): Promise<any> {
return;
}
}

View 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;
}
}

View File

@@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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',
@@ -148,35 +158,64 @@ export interface AFAEncryptResponse {
platforms: ['Android']
})
@Injectable()
export class AndroidFingerprintAuth {
export class AndroidFingerprintAuth extends IonicNativePlugin {
ERRORS: {
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;
}
}

View File

@@ -1,5 +1,32 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/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
@@ -16,8 +43,8 @@ import { Cordova, Plugin } 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(error));
*
* ```
*/
@@ -29,7 +56,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class AndroidFullScreen {
export class AndroidFullScreen extends IonicNativePlugin {
/**
* Is this plugin supported?
* @return {Promise<void>}
@@ -92,4 +119,13 @@ export class AndroidFullScreen {
*/
@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; }
}

View 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;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name App Availability
@@ -27,8 +27,8 @@ import { Cordova, Plugin } 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')
* );
* ```
*/
@@ -40,7 +40,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppAvailability {
export class AppAvailability extends IonicNativePlugin {
/**
* Checks if an app is available on device

View 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;
}
}

View 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;
}
}

View 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;
}
}

View File

@@ -0,0 +1,42 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name App Minimize
* @description
* AppMinimize is a plugin to minimize the application on android devices
*
* @usage
* ```typescript
* import { 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; }
}

View File

@@ -1,4 +1,4 @@
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
@@ -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,10 +25,10 @@ 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 {
export class AppPreferences extends IonicNativePlugin {
/**
* Get a preference value
@@ -46,13 +47,13 @@ export class AppPreferences {
*
* @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 {
* @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

View File

@@ -1,11 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, Plugin } 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 {
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 {}
}

View File

@@ -1,5 +1,11 @@
import { Plugin, Cordova } 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',
@@ -42,15 +48,17 @@ import { Injectable } from '@angular/core';
platforms: ['Android']
})
@Injectable()
export class AppUpdate {
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;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
@@ -31,37 +31,37 @@ import { Cordova, Plugin } 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 {
export class AppVersion extends IonicNativePlugin {
/**
* Returns the name of the app
* @returns {Promise<any>}
* @returns {Promise<string>}
*/
@Cordova()
getAppName(): Promise<any> { return; }
getAppName(): Promise<string> { return; }
/**
* Returns the package name of the app
* @returns {Promise<any>}
* @returns {Promise<string>}
*/
@Cordova()
getPackageName(): Promise<any> { return; }
getPackageName(): Promise<string> { return; }
/**
* Returns the build identifier of the app
* @returns {Promise<any>}
* @returns {Promise<string>}
*/
@Cordova()
getVersionCode(): Promise<any> { return; }
getVersionCode(): Promise<string> { return; }
/**
* Returns the version of the app
* @returns {Promise<any>}
* @returns {Promise<string>}
*/
@Cordova()
getVersionNumber(): Promise<any> { return; }
getVersionNumber(): Promise<string> { return; }
}

View 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;
}
}

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
@@ -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,20 +18,17 @@ 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 {
export class Appodeal extends IonicNativePlugin {
// available types of advertisements
readonly AD_TYPES = {
INTERSTITIAL: 1,
@@ -49,14 +46,16 @@ export class Appodeal {
* @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 {
* @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 {
* @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 {
* @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 {
* @returns {Promise<boolean>}
*/
@Cordova()
isPrecache(adType: number): Promise<any> { return; };
isPrecache(adType: number): Promise<any> {
return;
}
/**
*
@@ -114,75 +121,77 @@ export class Appodeal {
* @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 {
* @param {number} adType
*/
@Cordova()
disableNetwork(network?: string, adType?: number): void {};
disableNetwork(network?: string, adType?: number): void {}
/**
*
@@ -198,54 +207,54 @@ export class Appodeal {
* @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 {
* @param {boolean} value
*/
@Cordova()
setCustomBooleanRule(name: string, value: boolean): void {};
setCustomBooleanRule(name: string, value: boolean): void {}
/**
*
@@ -261,7 +270,7 @@ export class Appodeal {
* @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 {
* @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 {
* @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;
}
}

View 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 { }
}

View File

@@ -1,9 +1,6 @@
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
declare var window;
export interface BackgroundFetchConfig {
/**
@@ -63,7 +60,7 @@ export interface BackgroundFetchConfig {
platforms: ['iOS']
})
@Injectable()
export class BackgroundFetch {
export class BackgroundFetch extends IonicNativePlugin {
/**
@@ -100,4 +97,11 @@ export class BackgroundFetch {
})
finish(): void { }
/**
* Return the status of the background-fetch
* @returns {Promise<any>}
*/
@Cordova()
status(): Promise<any> { return; }
}

View File

@@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/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,10 +306,10 @@ 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 {
export class BackgroundGeolocation extends IonicNativePlugin {
/**
* Set location service provider @see https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
@@ -393,7 +391,7 @@ export class BackgroundGeolocation {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
finish(): Promise<any> { return; }
@@ -403,7 +401,7 @@ export class BackgroundGeolocation {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
changePace(isMoving: boolean): Promise<any> { return; }
@@ -422,7 +420,7 @@ export class BackgroundGeolocation {
* @returns {Promise<Location>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
getStationaryLocation(): Promise<BackgroundGeolocationResponse> { return; }
@@ -432,7 +430,7 @@ export class BackgroundGeolocation {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
onStationary(): Promise<any> { return; }
@@ -448,13 +446,13 @@ export class BackgroundGeolocation {
/**
* 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 { }
/**

View File

@@ -1,56 +1,60 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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 {
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 {
@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 {
@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 {
@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 {
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 {
})
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 {
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 {
/**
* 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 {
sync: true
})
unlock(): void {}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
@@ -9,7 +9,7 @@ import { Plugin, Cordova } 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) { }
@@ -32,7 +32,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class Backlight {
export class Backlight extends IonicNativePlugin {
/**
* This function turns backlight on

View File

@@ -1,6 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Badge
@@ -27,17 +26,18 @@ import { Cordova, Plugin } 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 {
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 {
* @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 {
* @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 {
* @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;
}
}

View File

@@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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'
| 'PDF417'
| '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 {
export class BarcodeScanner extends IonicNativePlugin {
Encode: {
TEXT_TYPE: string;
EMAIL_TYPE: string;
@@ -105,22 +124,25 @@ export class BarcodeScanner {
/**
* 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;
}
}

View File

@@ -1,5 +1,15 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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 } from '@ionic-native/core';
* err => console.log('Error saving image to gallery ', err)
* );
* ```
* @interfaces
* Base64ToGalleryOptions
*/
@Plugin({
pluginName: 'Base64ToGallery',
@@ -28,20 +40,21 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class Base64ToGallery {
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;
}
}

View 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; }
}

View File

@@ -1,9 +1,8 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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: StatusObject) => {
* 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 {
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 {
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 {
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;
}
}

View File

@@ -1,7 +1,12 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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 {
export class BLE extends IonicNativePlugin {
/**
* Scan and discover BLE peripherals for the specified amount of time.
*
@@ -194,7 +200,9 @@ export class BLE {
@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 {
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 {
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 {
* 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,17 @@ export class BLE {
* 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;
}
/**
* Disconnect from a peripheral.
@@ -278,11 +297,13 @@ export class BLE {
* 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 +311,16 @@ export class BLE {
* @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 +329,14 @@ export class BLE {
* // 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 +348,7 @@ export class BLE {
* @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 +356,9 @@ export class BLE {
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 +367,7 @@ export class BLE {
* @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 +375,16 @@ export class BLE {
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 +392,7 @@ export class BLE {
* @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 +403,9 @@ export class BLE {
deviceId: string,
serviceUUID: string,
characteristicUUID: string
): Observable<any> { return; }
): Observable<any> {
return;
}
/**
* Stop being notified when the value of a characteristic changes.
@@ -391,7 +420,9 @@ export class BLE {
deviceId: string,
serviceUUID: string,
characteristicUUID: string
): Promise<any> { return; }
): Promise<any> {
return;
}
/**
* Report the connection status.
@@ -407,7 +438,9 @@ export class BLE {
* @returns {Promise<any>}
*/
@Cordova()
isConnected(deviceId: string): Promise<any> { return; }
isConnected(deviceId: string): Promise<any> {
return;
}
/**
* Report if bluetooth is enabled.
@@ -415,7 +448,40 @@ export class BLE {
* @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 +489,9 @@ export class BLE {
* @returns {Promise<any>}
*/
@Cordova()
showBluetoothSettings(): Promise<any> { return; }
showBluetoothSettings(): Promise<any> {
return;
}
/**
* Enable Bluetooth on the device (Android only).
@@ -431,17 +499,19 @@ export class BLE {
* @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;
}
}

View 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; }
}

View File

@@ -1,10 +1,10 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
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,10 +35,10 @@ 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 {
export class BluetoothSerial extends IonicNativePlugin {
/**
* Connect to a Bluetooth device

View 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;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Brightness
@@ -16,7 +16,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
*
* ...
*
* let brightnessValue: number = 0.8;
* let brightnessValue = 0.8;
* this.brightness.setBrightness(brightnessValue);
* ```
*
@@ -29,16 +29,17 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Brightness {
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 {
* 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 {}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } 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 {
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 {
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;
}
}

View File

@@ -1,5 +1,5 @@
import { Plugin, Cordova } 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
*
* }
*
* });
*
*
* }
*
* ```
@@ -40,14 +32,15 @@ import { Injectable } from '@angular/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class BrowserTab {
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 {
* @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;
}
}

View File

@@ -1,8 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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,8 +65,8 @@ export interface CalendarOptions {
*
*
* @usage
* ```
* import {Calendar} from '@ionic-native/calendar';
* ```typescript
* import { Calendar } from '@ionic-native/calendar';
*
* constructor(private calendar: Calendar) { }
*
@@ -72,6 +78,7 @@ export interface CalendarOptions {
* ```
* @interfaces
* CalendarOptions
* NameOrOptions
*/
@Plugin({
pluginName: 'Calendar',
@@ -81,13 +88,12 @@ export interface CalendarOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class Calendar {
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 {
* @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 | CalendarOptions} 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 | CalendarOptions): Promise<any> {
return;
}
/**
* Delete a calendar. (iOS only)
@@ -147,7 +167,9 @@ export class Calendar {
* @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 {
@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 {
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 {
startDate?: Date,
endDate?: Date,
options?: CalendarOptions
): Promise<any> { return; }
): Promise<any> {
return;
}
/**
* Interactively create an event.
@@ -215,7 +255,9 @@ export class Calendar {
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 {
startDate?: Date,
endDate?: Date,
options?: CalendarOptions
): Promise<any> { return; }
): Promise<any> {
return;
}
/**
* Find an event.
@@ -255,7 +299,9 @@ export class Calendar {
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 {
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 {
@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 {
@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 {
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 {
newEndDate?: Date,
filterOptions?: CalendarOptions,
newOptions?: CalendarOptions
): Promise<any> { return; }
): Promise<any> {
return;
}
/**
* Delete an event.
@@ -388,7 +446,9 @@ export class Calendar {
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 {
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 {
* @return {Promise<any>} Promise returns a promise
*/
@Cordova()
openCalendar(date: Date): Promise<any> { return; }
openCalendar(date: Date): Promise<any> {
return;
}
}

View 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;
}
}

View File

@@ -1,22 +1,24 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } 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
* ```
* import {CallNumber} from '@ionic-native/call-number';
* ```typescript
* import { CallNumber } from '@ionic-native/call-number';
*
* constructor(private callNumber: CallNumber) { }
*
* ...
*
*
* 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 } 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 {
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,14 @@ export class CallNumber {
return;
}
/**
* Check if call feature is available
* @return {Promise<any>}
*/
@Cordova({
callbackOrder: 'reverse'
})
isCallSupported(): Promise<any> {
return;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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,11 +134,54 @@ 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 {
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_MODE = {
LOCK: 'lock', // IOS Only
AUTO: 'auto', // IOS Only
CONTINUOUS: 'continuous',
CUSTOM: 'custom'
};
FLASH_MODE = {
OFF: 'off',
ON: 'on',
AUTO: 'auto',
RED_EYE: 'red-eye',
TORCH: 'torch' // Android Only
};
COLOR_EFFECT = {
AQUA: 'aqua', // Android Only
BLACKBOARD: 'blackboard', // Android Only
MONO: 'mono',
NEGATIVE: 'negative',
NONE: 'none',
POSTERIZE: 'posterize',
SEPIA: 'sepia',
SOLARIZE: 'solarize', // Android Only
WHITEBOARD: 'whiteboard' // Android Only
};
CAMERA_DIRECTION = {
BACK: 'back',
FRONT: 'front'
};
/**
* Starts the camera preview instance.
@@ -143,58 +192,58 @@ export class CameraPreview {
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({
successIndex: 0,
errorIndex: 1
})
stopCamera(): Promise<any> { return; }
@Cordova()
stopCamera(): Promise<any> {
return;
}
/**
* Switch from the rear camera and front camera, if available.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
switchCamera(): Promise<any> { return; }
@Cordova()
switchCamera(): Promise<any> {
return;
}
/**
* Hide the camera preview box.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
hide(): Promise<any> { return; }
@Cordova()
hide(): Promise<any> {
return;
}
/**
* Show the camera preview box.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
show(): Promise<any> { return; }
@Cordova()
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;
}
/**
*
@@ -207,7 +256,9 @@ export class CameraPreview {
successIndex: 1,
errorIndex: 2
})
setColorEffect(effect: string): Promise<any> { return; }
setColorEffect(effect: string): Promise<any> {
return;
}
/**
* Set the zoom (Android)
@@ -218,30 +269,191 @@ export class CameraPreview {
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;
}
/**
* Get current zoom (Android)
* @return {Promise<any>}
*/
@Cordova()
getZoom(): Promise<any> {
return;
}
/**
* Set the preview Size
* @param [dimensions] {CameraPreviewDimensions}
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2,
platforms: ['Android']
})
setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> { return; }
/**
* Set the flashmode
* @param [flashMode] {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
* @param {CameraPreviewDimensions} [dimensions]
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setFlashMode(flashMode?: string): Promise<any> { return; }
setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> {
return;
}
/**
* Get focus mode
* @return {Promise<any>}
*/
@Cordova()
getFocusMode(): Promise<any> {
return;
}
/**
* Set the focus mode
* @param {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;
}
/**
* Get supported picture sizes
* @return {Promise<any>}
*/
@Cordova()
getSupportedPictureSizes(): Promise<any> {
return;
}
/**
* Get exposure mode
* @return {Promise<any>}
*/
@Cordova()
getExposureMode(): Promise<any> {
return;
}
/**
* Get exposure modes
* @return {Promise<any>}
*/
@Cordova()
getExposureModes(): Promise<any> {
return;
}
/**
* Set exposure mode
* @param {string} [lock]
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setExposureMode(lock?: string): Promise<any> {
return;
}
/**
* Get exposure compensation (Android)
* @return {Promise<any>}
*/
@Cordova()
getExposureCompensation(): Promise<any> {
return;
}
/**
* Set exposure compensation (Android)
* @param {number} [exposureCompensation]
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setExposureCompensation(exposureCompensation?: number): Promise<any> {
return;
}
/**
* Get exposure compensation range (Android)
* @return {Promise<any>}
*/
@Cordova()
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;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CameraOptions {
/** Picture quality in range 0-100. Default is 50 */
@@ -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
@@ -125,10 +161,10 @@ 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 {
export class Camera extends IonicNativePlugin {
/**
* Constant for possible destination types

View File

@@ -1,8 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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,18 @@ export interface CardIOResponse {
* Cardholder name
*/
cardholderName: string;
}
/**
* @name Card IO
* @description
* @usage
* ```
* Note: For use with iOS 10 + When building your app with the iOS 10 SDK +, you have to add some info to the info.plist file. This is due to increased security in iOS 10. Go to your app directory and search for the <your app name>Info.plist file. Add the following lines in the main <dict> element.
* ```xml
*<key>NSCameraUsageDescription</key>
*<string>To scan credit cards.</string>
*```
* ```typescript
* import { CardIO } from '@ionic-native/card-io';
*
* constructor(private cardIO: CardIO) { }
@@ -147,7 +148,7 @@ export interface CardIOResponse {
* if(res){
* let options = {
* requireExpiry: true,
* requireCCV: false,
* requireCVV: false,
* requirePostalCode: false
* };
* CardIO.scan(options);
@@ -164,11 +165,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 {
export class CardIO extends IonicNativePlugin {
/**
* Check whether card scanning is currently available. (May vary by
* device, OS version, network connectivity, etc.)
@@ -176,21 +176,26 @@ export class CardIO {
* @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;
}
}

View File

@@ -1,12 +1,10 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Clipboard
* @description
* Clipboard management plugin for Cordova that supports iOS, Android, and Windows Phone 8.
*
* Requires Cordova plugin: https://github.com/VersoSolutions/CordovaClipboard
* For more info, please see the [Clipboard plugin docs](https://github.com/VersoSolutions/CordovaClipboard.git).
*
* @usage
* ```typescript
@@ -31,13 +29,13 @@ import { Cordova, Plugin } from '@ionic-native/core';
*/
@Plugin({
pluginName: 'Clipboard',
plugin: 'https://github.com/VersoSolutions/CordovaClipboard.git',
plugin: 'cordova-clipboard',
pluginRef: 'cordova.plugins.clipboard',
repo: 'https://github.com/VersoSolutions/CordovaClipboard',
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
repo: 'https://github.com/ihadeed/cordova-clipboard',
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class Clipboard {
export class Clipboard extends IonicNativePlugin {
/**
* Copies the given text

View File

@@ -1,9 +1,18 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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
@@ -427,13 +489,10 @@ export interface DownloadProgress {
platforms: ['Android', 'iOS']
})
@Injectable()
export class CodePush {
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 {
/**
* 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 {
/**
* 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 {
* 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 {
* - 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 {
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;
}
}

View File

@@ -1,13 +1,47 @@
import { Injectable } from '@angular/core';
import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability, CordovaCheck } 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 {
export class Contacts extends IonicNativePlugin {
/**
* Create a single contact.
* @returns {Contact} Returns a Contact object
@@ -306,16 +362,24 @@ export class Contacts {
/**
* 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 {
*/
@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;

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
@@ -8,28 +8,119 @@ 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']
})
@Injectable()
export class CouchbaseLite {
export class CouchbaseLite extends IonicNativePlugin {
/**
* Get the database url
@@ -38,6 +129,6 @@ export class CouchbaseLite {
@Cordova({
callbackStyle: 'node'
})
getURL(): Promise<any> { return; }
getURL(): Promise<any> { return; }
}

View File

@@ -1,12 +1,18 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CropOptions {
quality?: number;
targetHeight?: number;
targetWidth?: number;
}
/**
* @name Crop
* @description Crops images
* @usage
* ```
* import {Crop} from '@ionic-native/crop';
* ```typescript
* import { Crop } from '@ionic-native/crop';
*
* constructor(private crop: Crop) { }
*
@@ -14,10 +20,12 @@ import { Cordova, Plugin } 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',
@@ -27,17 +35,17 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Crop {
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;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import {Cordova, Plugin} 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;
}
/**
@@ -154,8 +153,7 @@ export interface DatePickerOptions {
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class DatePicker {
export class DatePicker extends IonicNativePlugin {
/**
* @hidden
*/
@@ -176,5 +174,4 @@ export class DatePicker {
show(options: DatePickerOptions): Promise<Date> {
return;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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 {
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 {
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;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeeplinkMatch {
@@ -23,6 +23,13 @@ export interface DeeplinkMatch {
}
export interface DeeplinkOptions {
/**
* Set the matched route as root page using `navCtrl.setRoot()` method.
*/
root: boolean;
}
/**
* @name Deeplinks
* @description This plugin handles deeplinks on iOS and Android for both custom URL scheme links
@@ -49,7 +56,7 @@ export interface DeeplinkMatch {
* });
* ```
*
* Alternatively, if you're using Ionic 2, there's a convenience method that takes a reference to a `NavController` and handles
* Alternatively, if you're using Ionic, there's a convenience method that takes a reference to a `NavController` and handles
* the actual navigation for you:
*
* ```typescript
@@ -67,7 +74,7 @@ export interface DeeplinkMatch {
* });
* ```
*
* See the [Ionic 2 Deeplinks Demo](https://github.com/driftyco/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
* See the [Ionic Deeplinks Demo](https://github.com/ionic-team/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
* retrieve the `NavController` reference at runtime.
*
* @interfaces
@@ -77,18 +84,18 @@ 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 {
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 {
@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; }
}

View File

@@ -1,5 +1,16 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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 } 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 {
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;
}
}

View File

@@ -1,5 +1,14 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } 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 } 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 } 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 } from '@ionic-native/core';
* });
*
* ```
* @innterfaces
* DeviceFeedbackEnabled
*/
@Plugin({
pluginName: 'DeviceFeedback',
@@ -38,26 +48,26 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class DeviceFeedback {
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;
}
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeviceMotionAccelerationData {
@@ -72,10 +72,10 @@ 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 {
export class DeviceMotion extends IonicNativePlugin {
/**
* Get the current acceleration along the x, y, and z axes.

View File

@@ -1,9 +1,8 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } 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 {
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 {
observable: true,
clearFunction: 'clearWatch'
})
watchHeading(options?: DeviceOrientationCompassOptions): Observable<DeviceOrientationCompassHeading> { return; }
watchHeading(
options?: DeviceOrientationCompassOptions
): Observable<DeviceOrientationCompassHeading> {
return;
}
}

View File

@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { CordovaProperty, Plugin } from '@ionic-native/core';
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
declare var window: any;
declare const window: any;
/**
* @name Device
@@ -24,10 +24,10 @@ 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 {
export class Device extends IonicNativePlugin {
/** Get the version of Cordova running on the device. */
@CordovaProperty

View File

@@ -1,5 +1,10 @@
import { Injectable } from '@angular/core';
import {Cordova, Plugin, CordovaProperty} from '@ionic-native/core';
import {
Cordova,
CordovaProperty,
IonicNativePlugin,
Plugin
} from '@ionic-native/core';
/**
* @name Diagnostic
@@ -42,8 +47,7 @@ import {Cordova, Plugin, CordovaProperty} from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class Diagnostic {
export class Diagnostic extends IonicNativePlugin {
permission = {
READ_CALENDAR: 'READ_CALENDAR',
WRITE_CALENDAR: 'WRITE_CALENDAR',
@@ -92,9 +96,23 @@ export class Diagnostic {
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 {
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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
platforms: ['Android'],
sync: true
})
switchToWirelessSettings(): void { }
switchToWirelessSettings(): void {}
/**
* Displays NFC settings to allow user to enable NFC.
@@ -565,14 +689,16 @@ export class Diagnostic {
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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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 {
* @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;
}
}

View File

@@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/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 {
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 {
@Cordova({
sync: true
})
beep(times: number): void { }
beep(times: number): void {}
}

View 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; }
}

View File

@@ -0,0 +1,43 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name iOS DocumentPicker
* @description
*
* Opens the file picker on iOS for the user to select a file, returns a file URI.
* Allows the user to upload files from iCloud
*
* @usage
* ```typescript
* import { IOSDocumentPicker } from '@ionic-native/document-picker';
*
* constructor(private docPicker: IOSDocumentPicker) { }
*
* ...
*
* this.docPicker.getFile('all')
* .then(uri => console.log(uri))
* .catch(e => console.log(e));
*
* ```
*/
@Plugin({
pluginName: 'IOSDocumentPicker',
plugin: 'cordova-plugin-documentpicker.DocumentPicker',
pluginRef: 'DocumentPicker',
repo: 'https://github.com/iampossible/Cordova-DocPicker',
platforms: ['iOS']
})
@Injectable()
export class DocumentPicker extends IonicNativePlugin {
/**
* Open a file
* @param {string} [option] files between 'image', 'pdf' or 'all'
* @returns {Promise<string>}
*/
@Cordova()
getFile(option?: string): Promise<string> {
return;
}
}

View File

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

View File

@@ -1,38 +1,64 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaCheck } from '@ionic-native/core';
declare var cordova: any;
import {
Cordova,
CordovaCheck,
IonicNativePlugin,
Plugin
} from '@ionic-native/core';
export interface EmailComposerOptions {
/**
* App to send the email with
*/
app?: string;
/**
* Email address(es) for To field
*/
to?: string | Array<string>;
/**
* Email address(es) for CC field
*/
cc?: string | Array<string>;
/**
* Email address(es) for BCC field
*/
bcc?: string | Array<string>;
attachments?: Array<any>;
/**
* File paths or base64 data streams
*/
attachments?: string[];
/**
* Subject of the email
*/
subject?: string;
/**
* Email body (for HTML, set isHtml to true)
*/
body?: string;
/**
* Indicates if the body is HTML or plain text
*/
isHtml?: boolean;
/**
* Content type of the email (Android only)
*/
type?: string;
}
/**
* @beta
* @name Email Composer
* @description
*
* Requires Cordova plugin: cordova-plugin-email-composer. For more info, please see the [Email Composer plugin docs](https://github.com/hypery2k/cordova-email-plugin).
*
* DISCLAIMER: This plugin is experiencing issues with the latest versions of Cordova. Use at your own risk. Functionality is not guaranteed. Please stay tuned for a more stable version.
* A good alternative to this plugin is the social sharing plugin.
*
* @usage
* ```typescript
@@ -66,32 +92,42 @@ export interface EmailComposerOptions {
*
* // Send a text message using default options
* this.emailComposer.open(email);
* ```
*
* You can also assign aliases to email apps
* ```ts
* // add alias
* this.email.addAlias('gmail', 'com.google.android.gm');
*
* // then use alias when sending email
* this.email.open({
* app: 'gmail',
* ...
* });
* ```
* @interfaces
* EmailComposerOptions
*/
@Plugin({
pluginName: 'EmailComposer',
plugin: 'cordova-plugin-email',
plugin: 'cordova-plugin-email-composer',
pluginRef: 'cordova.plugins.email',
repo: 'https://github.com/hypery2k/cordova-email-plugin',
platforms: ['Android', 'iOS']
repo: 'https://github.com/katzer/cordova-plugin-email-composer',
platforms: ['Amazon Fire OS', 'Android', 'Browser', 'iOS', 'Windows', 'macOS']
})
@Injectable()
export class EmailComposer {
export class EmailComposer extends IonicNativePlugin {
/**
* Verifies if sending emails is supported on the device.
*
* @param [app] {string} App id or uri scheme.
* @param {string} [app] App id or uri scheme.
* @returns {Promise<any>} Resolves if available, rejects if not available
*/
@CordovaCheck()
isAvailable(app?: string): Promise<any> {
return new Promise<boolean>((resolve, reject) => {
if (app) {
cordova.plugins.email.isAvailable(app, (isAvailable) => {
EmailComposer.getPlugin().isAvailable(app, (isAvailable: boolean) => {
if (isAvailable) {
resolve();
} else {
@@ -99,7 +135,7 @@ export class EmailComposer {
}
});
} else {
cordova.plugins.email.isAvailable((isAvailable) => {
EmailComposer.getPlugin().isAvailable((isAvailable: boolean) => {
if (isAvailable) {
resolve();
} else {
@@ -110,26 +146,51 @@ export class EmailComposer {
});
}
/**
* Request permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
requestPermission(): Promise<boolean> {
return;
}
/**
* Checks if the app has a permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
hasPermission(): Promise<boolean> {
return;
}
/**
* Adds a new mail app alias.
*
* @param alias {string} The alias name
* @param packageName {string} The package name
* @param {string} alias The alias name
* @param {string} packageName The package name
*/
@Cordova()
addAlias(alias: string, packageName: string): void { }
addAlias(alias: string, packageName: string): void {}
/**
* Displays the email composer pre-filled with data.
*
* @param options {EmailComposerOptions} Email
* @param [scope] {any} Scope for the promise
* @param {EmailComposerOptions} options Email
* @param {any} [scope] Scope for the promise
* @returns {Promise<any>} Resolves promise when the EmailComposer has been opened
*/
@Cordova({
successIndex: 1,
errorIndex: 3
})
open(options: EmailComposerOptions, scope?: any): Promise<any> { return; }
open(options: EmailComposerOptions, scope?: any): Promise<any> {
return;
}
}

View File

@@ -1,9 +1,8 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface EstimoteBeaconRegion {
state?: string;
major: number;
@@ -13,7 +12,6 @@ export interface EstimoteBeaconRegion {
identifier?: string;
uuid: string;
}
/**
@@ -44,11 +42,10 @@ export interface EstimoteBeaconRegion {
plugin: 'cordova-plugin-estimote',
pluginRef: 'estimote.beacons',
repo: 'https://github.com/evothings/phonegap-estimotebeacons',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS']
})
@Injectable()
export class EstimoteBeacons {
export class EstimoteBeacons extends IonicNativePlugin {
/** Proximity value */
ProximityUnknown = 0;
@@ -124,7 +121,9 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
requestWhenInUseAuthorization(): Promise<any> { return; }
requestWhenInUseAuthorization(): Promise<any> {
return;
}
/**
* Ask the user for permission to use location services
@@ -145,7 +144,9 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
requestAlwaysAuthorization(): Promise<any> { return; }
requestAlwaysAuthorization(): Promise<any> {
return;
}
/**
* Get the current location authorization status.
@@ -164,7 +165,9 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
authorizationStatus(): Promise<any> { return; }
authorizationStatus(): Promise<any> {
return;
}
/**
* Start advertising as a beacon.
@@ -177,16 +180,23 @@ export class EstimoteBeacons {
* EstimoteBeacons.stopAdvertisingAsBeacon().then((result) => { console.log('Beacon stopped'); });
* }, 5000);
* ```
* @param uuid {string} UUID string the beacon should advertise (mandatory).
* @param major {number} Major value to advertise (mandatory).
* @param minor {number} Minor value to advertise (mandatory).
* @param regionId {string} Identifier of the region used to advertise (mandatory).
* @param {string} uuid UUID string the beacon should advertise (mandatory).
* @param {number} major Major value to advertise (mandatory).
* @param {number} minor Minor value to advertise (mandatory).
* @param {string} regionId Identifier of the region used to advertise (mandatory).
* @returns {Promise<any>}
*/
@Cordova({
clearFunction: 'stopAdvertisingAsBeacon'
})
startAdvertisingAsBeacon(uuid: string, major: number, minor: number, regionId: string): Promise<any> { return; }
startAdvertisingAsBeacon(
uuid: string,
major: number,
minor: number,
regionId: string
): Promise<any> {
return;
}
/**
* Stop advertising as a beacon.
@@ -202,7 +212,9 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
stopAdvertisingAsBeacon(): Promise<any> { return; }
stopAdvertisingAsBeacon(): Promise<any> {
return;
}
/**
* Enable analytics.
@@ -213,16 +225,18 @@ export class EstimoteBeacons {
* ```
* EstimoteBeacons.enableAnalytics(true).then(() => { console.log('Analytics enabled'); });
* ```
* @param enable {number} Boolean value to turn analytics on or off (mandatory).
* @param {number} enable Boolean value to turn analytics on or off (mandatory).
* @returns {Promise<any>}
*/
@Cordova()
enableAnalytics(enable: boolean): Promise<any> { return; }
enableAnalytics(enable: boolean): Promise<any> {
return;
}
/**
* Test if analytics is enabled.
*
* @see {@link http://estimote.github.io/iOS-SDK/Classes/ESTConfig.html|Further details}
* Test if analytics is enabled.
*
* @see {@link http://estimote.github.io/iOS-SDK/Classes/ESTConfig.html|Further details}
*
* @usage
* ```
@@ -231,12 +245,14 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
isAnalyticsEnabled(): Promise<any> { return; }
isAnalyticsEnabled(): Promise<any> {
return;
}
/**
* Test if App ID and App Token is set.
*
* @see {@link http://estimote.github.io/iOS-SDK/Classes/ESTConfig.html|Further details}
* Test if App ID and App Token is set.
*
* @see {@link http://estimote.github.io/iOS-SDK/Classes/ESTConfig.html|Further details}
*
* @usage
* ```
@@ -245,23 +261,27 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
isAuthorized(): Promise<any> { return; }
isAuthorized(): Promise<any> {
return;
}
/**
* Set App ID and App Token.
*
* @see {@link http://estimote.github.io/iOS-SDK/Classes/ESTConfig.html|Further details}
* Set App ID and App Token.
*
* @see {@link http://estimote.github.io/iOS-SDK/Classes/ESTConfig.html|Further details}
*
* @usage
* ```
* EstimoteBeacons.setupAppIDAndAppToken('MyAppID', 'MyAppToken').then(() => { console.log('AppID and AppToken configured!'); });
* ```
* @param appID {string} The App ID (mandatory).
* @param appToken {string} The App Token (mandatory).
* @param {string} appID The App ID (mandatory).
* @param {string} appToken The App Token (mandatory).
* @returns {Promise<any>}
*/
@Cordova()
setupAppIDAndAppToken(appID: string, appToken: string): Promise<any> { return; }
setupAppIDAndAppToken(appID: string, appToken: string): Promise<any> {
return;
}
/**
* Start scanning for all nearby beacons using CoreBluetooth (no region object is used).
@@ -282,7 +302,9 @@ export class EstimoteBeacons {
observable: true,
clearFunction: 'stopEstimoteBeaconDiscovery'
})
startEstimoteBeaconDiscovery(): Observable<any> { return; }
startEstimoteBeaconDiscovery(): Observable<any> {
return;
}
/**
* Stop CoreBluetooth scan. Available on iOS.
@@ -299,7 +321,9 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
stopEstimoteBeaconDiscovery(): Promise<any> { return; }
stopEstimoteBeaconDiscovery(): Promise<any> {
return;
}
/**
* Start ranging beacons. Available on iOS and Android.
@@ -314,7 +338,7 @@ export class EstimoteBeacons {
* EstimoteBeacons.stopRangingBeaconsInRegion(region).then(() => { console.log('scan stopped'); });
* }, 5000);
* ```
* @param region {EstimoteBeaconRegion} Dictionary with region properties (mandatory).
* @param {EstimoteBeaconRegion} region Dictionary with region properties (mandatory).
* @returns {Observable<any>} Returns an Observable that notifies of each beacon discovered.
*/
@Cordova({
@@ -322,7 +346,9 @@ export class EstimoteBeacons {
clearFunction: 'stopRangingBeaconsInRegion',
clearWithArgs: true
})
startRangingBeaconsInRegion(region: EstimoteBeaconRegion): Observable<any> { return; }
startRangingBeaconsInRegion(region: EstimoteBeaconRegion): Observable<any> {
return;
}
/**
* Stop ranging beacons. Available on iOS and Android.
@@ -337,15 +363,17 @@ export class EstimoteBeacons {
* EstimoteBeacons.stopRangingBeaconsInRegion(region).then(() => { console.log('scan stopped'); });
* }, 5000);
* ```
* @param region {EstimoteBeaconRegion} Dictionary with region properties (mandatory).
* @param {EstimoteBeaconRegion} region Dictionary with region properties (mandatory).
* @returns {Promise<any>}
*/
@Cordova()
stopRangingBeaconsInRegion(region: EstimoteBeaconRegion): Promise<any> { return; }
stopRangingBeaconsInRegion(region: EstimoteBeaconRegion): Promise<any> {
return;
}
/**
* Start ranging secure beacons. Available on iOS.
* This function has the same parameters/behaviour as
* This function has the same parameters/behavior as
* {@link EstimoteBeacons.startRangingBeaconsInRegion}.
* To use secure beacons set the App ID and App Token using
* {@link EstimoteBeacons.setupAppIDAndAppToken}.
@@ -356,16 +384,22 @@ export class EstimoteBeacons {
clearFunction: 'stopRangingSecureBeaconsInRegion',
clearWithArgs: true
})
startRangingSecureBeaconsInRegion(region: EstimoteBeaconRegion): Observable<any> { return; }
startRangingSecureBeaconsInRegion(
region: EstimoteBeaconRegion
): Observable<any> {
return;
}
/**
* Stop ranging secure beacons. Available on iOS.
* This function has the same parameters/behaviour as
* This function has the same parameters/behavior as
* {@link EstimoteBeacons.stopRangingBeaconsInRegion}.
* @returns {Promise<any>}
*/
@Cordova()
stopRangingSecureBeaconsInRegion(region: EstimoteBeaconRegion): Promise<any> { return; }
stopRangingSecureBeaconsInRegion(region: EstimoteBeaconRegion): Promise<any> {
return;
}
/**
* Start monitoring beacons. Available on iOS and Android.
@@ -377,8 +411,8 @@ export class EstimoteBeacons {
* console.log('Region state: ' + JSON.stringify(state));
* });
* ```
* @param region {EstimoteBeaconRegion} Dictionary with region properties (mandatory).
* @param [notifyEntryStateOnDisplay=false] {boolean} Set to true to detect if you
* @param {EstimoteBeaconRegion} region Dictionary with region properties (mandatory).
* @param {boolean} [notifyEntryStateOnDisplay] Set to true to detect if you
* are inside a region when the user turns display on, see
* {@link https://developer.apple.com/library/prerelease/ios/documentation/CoreLocation/Reference/CLBeaconRegion_class/index.html#//apple_ref/occ/instp/CLBeaconRegion/notifyEntryStateOnDisplay|iOS documentation}
* for further details (iOS only).
@@ -391,7 +425,12 @@ export class EstimoteBeacons {
successIndex: 1,
errorIndex: 2
})
startMonitoringForRegion(region: EstimoteBeaconRegion, notifyEntryStateOnDisplay: boolean): Observable<any> { return; }
startMonitoringForRegion(
region: EstimoteBeaconRegion,
notifyEntryStateOnDisplay: boolean
): Observable<any> {
return;
}
/**
* Stop monitoring beacons. Available on iOS and Android.
@@ -401,21 +440,23 @@ export class EstimoteBeacons {
* let region: EstimoteBeaconRegion = {} // Empty region matches all beacons.
* EstimoteBeacons.stopMonitoringForRegion(region).then(() => { console.log('monitoring is stopped'); });
* ```
* @param region {EstimoteBeaconRegion} Dictionary with region properties (mandatory).
* @param {EstimoteBeaconRegion} region Dictionary with region properties (mandatory).
* @returns {Promise<any>}
*/
@Cordova()
stopMonitoringForRegion(region: EstimoteBeaconRegion): Promise<any> { return; }
stopMonitoringForRegion(region: EstimoteBeaconRegion): Promise<any> {
return;
}
/**
* Start monitoring secure beacons. Available on iOS.
* This function has the same parameters/behaviour as
* This function has the same parameters/behavior as
* EstimoteBeacons.startMonitoringForRegion.
* To use secure beacons set the App ID and App Token using
* {@link EstimoteBeacons.setupAppIDAndAppToken}.
* @see {@link EstimoteBeacons.startMonitoringForRegion}
* @param region {EstimoteBeaconRegion} Region
* @param notifyEntryStateOnDisplay {boolean}
* @param {EstimoteBeaconRegion} region Region
* @param {boolean} notifyEntryStateOnDisplay
* @returns {Observable<any>}
*/
@Cordova({
@@ -425,17 +466,24 @@ export class EstimoteBeacons {
successIndex: 1,
errorIndex: 2
})
startSecureMonitoringForRegion(region: EstimoteBeaconRegion, notifyEntryStateOnDisplay: boolean): Observable<any> { return; }
startSecureMonitoringForRegion(
region: EstimoteBeaconRegion,
notifyEntryStateOnDisplay: boolean
): Observable<any> {
return;
}
/**
* Stop monitoring secure beacons. Available on iOS.
* This function has the same parameters/behaviour as
* {@link EstimoteBeacons.stopMonitoringForRegion}.
* @param region {EstimoteBeaconRegion} Region
* @returns {Promise<any>}
*/
* Stop monitoring secure beacons. Available on iOS.
* This function has the same parameters/behavior as
* {@link EstimoteBeacons.stopMonitoringForRegion}.
* @param {EstimoteBeaconRegion} region Region
* @returns {Promise<any>}
*/
@Cordova()
stopSecureMonitoringForRegion(region: EstimoteBeaconRegion): Promise<any> { return; }
stopSecureMonitoringForRegion(region: EstimoteBeaconRegion): Promise<any> {
return;
}
/**
* Connect to Estimote Beacon. Available on Android.
@@ -451,11 +499,13 @@ export class EstimoteBeacons {
* minor: 1
* });
* ```
* @param beacon {Beacon} Beacon to connect to.
* @param {Beacon} beacon Beacon to connect to.
* @returns {Promise<any>}
*/
@Cordova()
connectToBeacon(beacon: any): Promise<any> { return; }
connectToBeacon(beacon: any): Promise<any> {
return;
}
/**
* Disconnect from connected Estimote Beacon. Available on Android.
@@ -467,7 +517,9 @@ export class EstimoteBeacons {
* @returns {Promise<any>}
*/
@Cordova()
disconnectConnectedBeacon(): Promise<any> { return; }
disconnectConnectedBeacon(): Promise<any> {
return;
}
/**
* Write proximity UUID to connected Estimote Beacon. Available on Android.
@@ -477,11 +529,13 @@ export class EstimoteBeacons {
* // Example that writes constant ESTIMOTE_PROXIMITY_UUID
* EstimoteBeacons.writeConnectedProximityUUID(ESTIMOTE_PROXIMITY_UUID);
*
* @param uuid {string} String to write as new UUID
* @param {string} uuid String to write as new UUID
* @returns {Promise<any>}
*/
@Cordova()
writeConnectedProximityUUID(uuid: any): Promise<any> { return; }
writeConnectedProximityUUID(uuid: any): Promise<any> {
return;
}
/**
* Write major to connected Estimote Beacon. Available on Android.
@@ -491,11 +545,13 @@ export class EstimoteBeacons {
* // Example that writes 1
* EstimoteBeacons.writeConnectedMajor(1);
*
* @param major {number} number to write as new major
* @param {number} major number to write as new major
* @returns {Promise<any>}
*/
@Cordova()
writeConnectedMajor(major: number): Promise<any> { return; }
writeConnectedMajor(major: number): Promise<any> {
return;
}
/**
* Write minor to connected Estimote Beacon. Available on Android.
@@ -505,11 +561,11 @@ export class EstimoteBeacons {
* // Example that writes 1
* EstimoteBeacons.writeConnectedMinor(1);
*
* @param minor {number} number to write as new minor
* @param {number} minor number to write as new minor
* @returns {Promise<any>}
*/
@Cordova()
writeConnectedMinor(minor: number): Promise<any> { return; }
writeConnectedMinor(minor: number): Promise<any> {
return;
}
}

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