Compare commits

...

246 Commits

Author SHA1 Message Date
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
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
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 f223481307 Merge branch 'master' into improved-plugin-docs 2017-05-17 06:48:46 -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
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
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
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
159 changed files with 13822 additions and 2733 deletions
+2 -2
View File
@@ -4,7 +4,7 @@
#### There are no rules, but here are a few things to consider:
###### Before you submit an issue:
* Do a quick search to see if there are similar issues
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic 2, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/api/platform/Platform/#ready).
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/api/platform/Platform/#ready).
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save @ionic-native/core@latest`
###### Still having problems? submit an issue with the following details:
@@ -16,4 +16,4 @@
## Feature request?
Have a plugin you'd like to see supported? Since Ionic Native is a thin wrapper around existing Cordova plugins, adding support for new plugins is as easy as creating a new wrapper for whatever plugin you'd like to add.
Take a look at our [Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.
Take a look at our [Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.
+1 -1
View File
@@ -3,5 +3,5 @@ node_modules/
.idea
.tmp
aot/
dist/
scripts/ionic-native-bower
dist/
+845 -636
View File
File diff suppressed because it is too large Load Diff
+1 -1
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.
+4 -4
View File
@@ -1,4 +1,4 @@
[![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
@@ -169,11 +169,11 @@ Spent way too long diagnosing an issue only to realize a plugin wasn't firing or
## Plugin Missing?
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
## Ionic V1/Angular 1 support
## Ionic v1 (AngularJS, Angular 1.x) support
For Ionic V1/Angular 1 support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/driftyco/ionic-native/blob/8cd648db5cddd7bdbe2bd78839b19c620cc8c04c/README.md) for usage information.
For Ionic v1 (AngularJS, Angular 1.x) support, please use version 2 of Ionic Native. See the [2.x README](https://github.com/ionic-team/ionic-native/blob/v2.x/README.md) for usage information.
# Credits
+8 -4
View File
@@ -7,7 +7,7 @@ jobs:
steps:
- checkout
- restore_cache:
key: ionic-site-{{ .Branch }}
key: ionic-site-{{ checksum "package.json" }}
- run:
name: Prepare ionic-site repo
command: |
@@ -15,7 +15,7 @@ jobs:
./scripts/docs/prepare.sh
fi
- save_cache:
key: ionic-site-{{ .Branch }}
key: ionic-site-{{ checksum "package.json" }}
paths:
- ~/ionic-site/
- restore_cache:
@@ -30,9 +30,13 @@ jobs:
- run:
name: Run tslint
command: npm run lint
- run: bash ./scripts/git/config.sh
- run:
name: Build changed plugins
command: node scripts/ci-tests.js
name: Build Ionic Native
command: npm run build:core && ./node_modules/.bin/tsc
- run:
name: Generate README files to ensure docs are valid
command: npm run readmes
- run:
name: Run tests
command: npm test
+7001
View File
File diff suppressed because it is too large Load Diff
+26 -16
View File
@@ -1,20 +1,22 @@
{
"name": "ionic-native",
"version": "3.8.1",
"version": "4.1.0",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"homepage": "https://ionicframework.com/",
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
"license": "MIT",
"devDependencies": {
"@angular/compiler": "4.1.2",
"@angular/compiler-cli": "4.1.2",
"@angular/core": "4.1.2",
"@angular/compiler": "4.1.3",
"@angular/compiler-cli": "4.1.3",
"@angular/core": "4.1.3",
"@types/cordova": "0.0.34",
"@types/jasmine": "^2.5.47",
"@types/node": "^7.0.18",
"@types/jasmine": "^2.5.51",
"@types/node": "^7.0.27",
"canonical-path": "0.0.2",
"child-process-promise": "2.2.0",
"conventional-changelog-cli": "1.2.0",
"child-process-promise": "2.2.1",
"conventional-changelog-cli": "1.3.1",
"cpr": "2.0.2",
"cz-conventional-changelog": "1.2.0",
"cz-conventional-changelog": "2.0.0",
"decamelize": "1.2.0",
"dgeni": "0.4.7",
"dgeni-packages": "0.16.10",
@@ -32,17 +34,17 @@
"karma-typescript": "^3.0.1",
"karma-typescript-es6-transform": "^1.0.0",
"lodash": "4.17.4",
"minimist": "1.1.3",
"minimist": "1.2.0",
"node-html-encoder": "0.0.2",
"q": "1.4.1",
"q": "1.5.0",
"queue": "4.2.1",
"rimraf": "2.5.4",
"rxjs": "5.1.1",
"rimraf": "2.6.1",
"rxjs": "5.4.0",
"semver": "5.3.0",
"tslint": "3.15.1",
"tslint-ionic-rules": "0.0.8",
"typescript": "2.3.2",
"zone.js": "^0.8.10"
"typescript": "2.3.3",
"zone.js": "0.8.12"
},
"scripts": {
"start": "npm run test:watch",
@@ -56,7 +58,15 @@
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"postchangelog": "git commit -am \"chore(): update changelog\"",
"test": "karma start karma.conf.js --single-run",
"test:watch": "karma start karma.conf.js"
"test:watch": "karma start karma.conf.js",
"readmes": "gulp readmes"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ionic-team/ionic-native.git"
},
"bugs": {
"url": "https://github.com/ionic-team/ionic-native/issues"
},
"config": {
"commitizen": {
+1 -1
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.6.0',
MIN_CORE_VERSION = '^3.6.0 || >=4.0.0',
IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
// package dependencies
+1 -1
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"
}
}
+1 -1
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"
}
}
+12
View File
@@ -24,6 +24,18 @@ module.exports = function jekyll(renderDocsProcessor) {
.replace('content/', '');
});
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',
+2 -1
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
];
+29 -13
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 cordova plugin add <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $>
</code></pre>
<p>Repo:
<a href="<$ prop.repo $>">
<$ prop.repo $>
</a>
</p>
<# --- Plugin description --- #>
<$ doc.description | marked $>
<# --- Install commands --- #>
<h2><a class="anchor" name="installation" href="#installation"></a>Installation</h2>
<ol class="installation">
<li>Install the Cordova and Ionic Native plugins:<br>
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install | replace('<', '&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>
+2 -6
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 @>
+1 -1
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>
+2 -2
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
+2 -2
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
+1 -1
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
View File
@@ -0,0 +1,2 @@
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"
+1 -1
View File
@@ -6,7 +6,7 @@ import { Injectable } from '@angular/core';
* @description
*
* @usage
* ```
* ```typescript
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
*
*
+1 -1
View File
@@ -20,7 +20,7 @@ import { Observable } from 'rxjs/Observable';
* This plugin does something
*
* @usage
* ```
* ```typescript
* import { {{ PluginName }} } from '@ionic-native/{{ plugin-name }}';
*
*
+45 -2
View File
@@ -2,6 +2,7 @@ import 'core-js';
import { Plugin, Cordova, CordovaProperty, CordovaCheck, CordovaInstance, InstanceProperty } from './decorators';
import { IonicNativePlugin } from './ionic-native-plugin';
import { ERR_CORDOVA_NOT_AVAILABLE, ERR_PLUGIN_NOT_INSTALLED } from './plugin';
import { Observable } from 'rxjs/Observable';
declare const window: any;
@@ -24,7 +25,8 @@ class TestObject {
pluginName: 'TestPlugin',
pluginRef: 'testPlugin',
repo: '',
plugin: 'cordova-plugin-my-plugin'
plugin: 'cordova-plugin-my-plugin',
platforms: ['Android', 'iOS']
})
class TestPlugin extends IonicNativePlugin {
@@ -46,6 +48,17 @@ class TestPlugin extends IonicNativePlugin {
return new TestObject(TestPlugin.getPlugin().create());
}
@Cordova({
destruct: true
})
destructPromise(): Promise<any> { return; }
@Cordova({
destruct: true,
observable: true
})
destructObservable(): Observable<any> { return; }
}
function definePlugin() {
@@ -58,7 +71,9 @@ function definePlugin() {
this.ping = (success: Function, error: Function) => success('pong');
this.name = 'John Smith';
return this;
}
},
destructPromise: (success: Function) => success('hello', 'world'),
destructObservable: (success: Function) => success('hello', 'world')
};
}
@@ -85,6 +100,10 @@ describe('Regular Decorators', () => {
expect(TestPlugin.getPlugin()).toEqual(window.testPlugin);
});
it('should return supported platforms', () => {
expect(TestPlugin.getSupportedPlatforms()).toEqual(['Android', 'iOS']);
});
});
describe('Cordova', () => {
@@ -172,6 +191,30 @@ describe('Regular Decorators', () => {
});
describe('CordovaOptions', () => {
describe('destruct', () => {
it('should destruct values returned by a Promise', (done) => {
plugin.destructPromise()
.then((args: any[]) => {
expect(args).toEqual(['hello', 'world']);
done();
});
});
it('should destruct values returned by an Observable', (done) => {
plugin.destructObservable()
.subscribe((args: any[]) => {
expect(args).toEqual(['hello', 'world']);
done();
});
});
});
});
});
describe('Instance Decorators', () => {
+14 -7
View File
@@ -37,6 +37,7 @@ export interface PluginConfig {
}
export interface CordovaOptions {
destruct?: boolean;
/**
* Set to true if the wrapped method is a sync function
*/
@@ -135,7 +136,8 @@ export function InstanceCheck(opts: CordovaCheckOptions = {}) {
return getPromise(() => { });
}
}
},
enumerable: true
};
};
}
@@ -159,7 +161,8 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
}
return Promise.reject(check && check.error);
}
}
},
enumerable: true
};
};
}
@@ -239,7 +242,8 @@ export function Cordova(opts: CordovaOptions = {}) {
return {
value: function(...args: any[]) {
return wrap(this, methodName, opts).apply(this, args);
}
},
enumerable: true
};
};
}
@@ -249,12 +253,13 @@ export function Cordova(opts: CordovaOptions = {}) {
*
* Wrap an instance method
*/
export function CordovaInstance(opts: any = {}) {
export function CordovaInstance(opts: CordovaOptions = {}) {
return (target: Object, methodName: string) => {
return {
value: function(...args: any[]) {
return wrapInstance(this, methodName, opts).apply(this, args);
}
},
enumerable: true
};
};
}
@@ -312,7 +317,8 @@ export function CordovaFunctionOverride(opts: any = {}) {
return {
value: function(...args: any[]) {
return overrideFunction(this, methodName, opts);
}
},
enumerable: true
};
};
}
@@ -348,7 +354,8 @@ export function CordovaFiniteObservable(opts: CordovaFiniteObservableOptions = {
wrappedSubscription.unsubscribe();
};
});
}
},
enumerable: true
};
};
}
@@ -0,0 +1,69 @@
// This is to verify that new (FileTransfer.getPlugin)() works
import { Plugin, CordovaInstance } from './decorators';
import { checkAvailability } from './plugin';
import { IonicNativePlugin } from './ionic-native-plugin';
class FT {
hello(): string {
return 'world';
}
}
(window as any).FileTransfer = () => new FT();
@Plugin({
plugin: 'cordova-plugin-file-transfer',
pluginRef: 'FileTransfer',
repo: '',
pluginName: 'FileTransfer'
})
export class FileTransfer extends IonicNativePlugin {
create(): FileTransferObject {
let instance: any;
if (checkAvailability(FileTransfer.getPluginRef(), null, FileTransfer.getPluginName()) === true) {
instance = new (FileTransfer.getPlugin())();
}
return new FileTransferObject(instance);
}
}
export class FileTransferObject {
constructor(public _objectInstance: any) {
console.info('Creating a new FileTransferObject with instance: ', _objectInstance);
}
@CordovaInstance({ sync: true })
hello(): string { return; }
}
describe('Mock FileTransfer Plugin', () => {
let plugin: FileTransfer,
instance: FileTransferObject;
beforeAll(() => {
plugin = new FileTransfer();
instance = plugin.create();
});
it('should create a new FileTransfer plugin instance', () => {
expect(plugin instanceof FileTransfer).toBeTruthy();
});
it('should create new FileTransferObject instance', () => {
expect(instance instanceof FileTransferObject).toBeTruthy();
});
it('FileTransferObject instance should have _objectInstance property', () => {
expect(instance._objectInstance).toBeDefined();
});
it('FileTransferObject.hello should return world', () => {
console.info('instance hello is', instance.hello());
expect(instance.hello()).toEqual('world');
});
});
@@ -38,4 +38,9 @@ export class IonicNativePlugin {
*/
static getPluginInstallName(): string { return; }
/**
* Returns the plugin's supported platforms
*/
static getSupportedPlatforms(): string[] { return; }
}
+45 -14
View File
@@ -1,4 +1,4 @@
import { get, getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
import { getPlugin, getPromise, cordovaWarn, pluginWarn } from './util';
import { checkReady } from './bootstrap';
import { CordovaOptions } from './decorators';
@@ -136,7 +136,11 @@ function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts
function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
let pluginResult: any, rej: Function;
const p = getPromise((resolve: Function, reject: Function) => {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
if (opts.destruct) {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
} else {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
}
rej = reject;
});
// Angular throws an error on unhandled rejection, but in this case we have already printed
@@ -166,7 +170,14 @@ function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts:
function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
return new Observable(observer => {
let pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
let pluginResult;
if (opts.destruct) {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
} else {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
}
if (pluginResult && pluginResult.error) {
observer.error(pluginResult.error);
observer.complete();
@@ -177,11 +188,11 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
if (opts.clearWithArgs) {
return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
}
return get(window, pluginObj.constructor.getPluginRef())[opts.clearFunction].call(pluginObj, pluginResult);
return callCordovaPlugin(pluginObj, opts.clearFunction, []);
}
} catch (e) {
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
console.error(e);
console.warn(e);
}
};
});
@@ -266,7 +277,14 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
} else if (opts.observable) {
return new Observable(observer => {
let pluginResult = callInstance(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
let pluginResult;
if (opts.destruct) {
pluginResult = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
} else {
pluginResult = callInstance(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
}
if (pluginResult && pluginResult.error) {
observer.error(pluginResult.error);
@@ -276,38 +294,51 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
return () => {
try {
if (opts.clearWithArgs) {
return pluginObj._objectInstance[opts.clearFunction].apply(pluginObj._objectInstance, args);
return callInstance(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
}
return pluginObj._objectInstance[opts.clearFunction].call(pluginObj, pluginResult);
return callInstance(pluginObj, opts.clearFunction, []);
} catch (e) {
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
console.error(e);
console.warn(e);
}
};
});
} else if (opts.otherPromise) {
return getPromise((resolve: Function, reject: Function) => {
let result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
if (result && !result.error) {
let result;
if (opts.destruct) {
result = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
} else {
result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
}
if (result && !!result.then) {
result.then(resolve, reject);
} else {
reject();
}
});
} else {
let pluginResult: any, rej: Function;
const p = getPromise((resolve: Function, reject: Function) => {
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
if (opts.destruct) {
pluginResult = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
} else {
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
}
rej = reject;
});
// Angular throws an error on unhandled rejection, but in this case we have already printed
// a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason
// to error
if (pluginResult && pluginResult.error) {
p.catch(() => { });
typeof rej === 'function' && rej(pluginResult.error);
}
return p;
}
};
}
+2 -2
View File
@@ -25,7 +25,7 @@ export const getPromise = (callback: Function): Promise<any> => {
callback(resolve, reject);
});
} else {
console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular 2 or on a recent browser.');
console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.');
}
};
@@ -51,7 +51,7 @@ export const pluginWarn = (pluginName: string, plugin?: string, method?: string)
console.warn('Native: tried accessing the ' + pluginName + ' plugin but it\'s not installed.');
}
if (plugin) {
console.warn('Install the ' + pluginName + ' plugin: \'ionic plugin add ' + plugin + '\'');
console.warn('Install the ' + pluginName + ' plugin: \'ionic cordova plugin add ' + plugin + '\'');
}
};
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface ActionSheetOptions {
@@ -51,7 +51,7 @@ export interface ActionSheetOptions {
/**
* Choose if destructive button will be the last
*/
destructiveButtonLast: boolean;
destructiveButtonLast?: boolean;
}
/**
@@ -94,18 +94,26 @@ export interface ActionSheetOptions {
plugin: 'cordova-plugin-actionsheet',
pluginRef: 'plugins.actionsheet',
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-actionsheet',
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Browser']
platforms: ['Android', 'Browser', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class ActionSheet extends IonicNativePlugin {
@CordovaProperty
/**
* Convenience property to select an Android theme value
*/
ANDROID_THEMES: {
THEME_TRADITIONAL: number;
THEME_HOLO_DARK: number;
THEME_HOLO_LIGHT: number;
THEME_DEVICE_DEFAULT_DARK: number;
THEME_DEVICE_DEFAULT_LIGHT: number;
} = {
THEME_TRADITIONAL: 1,
THEME_HOLO_DARK: 2,
THEME_HOLO_LIGHT: 3,
THEME_DEVICE_DEFAULT_DARK: 4,
THEME_DEVICE_DEFAULT_LIGHT: 5
};
/**
+24 -15
View File
@@ -96,6 +96,14 @@ export interface AdMobFreeRewardVideoConfig {
*
*
* ```
* @interfaces
* AdMobFreeBannerConfig
* AdMobFreeInterstitialConfig
* AdMobFreeRewardVideoConfig
* @classes
* AdMobFreeBanner
* AdMobFreeInterstitial
* AdMobFreeRewardVideo
*/
@Plugin({
pluginName: 'AdMobFree',
@@ -108,9 +116,10 @@ export interface AdMobFreeRewardVideoConfig {
export class AdMobFree extends IonicNativePlugin {
/**
* Convenience constructor to get event names
* Convenience object to get event names
* @type {Object}
*/
events = {
events: any = {
BANNER_LOAD: 'admob.banner.events.LOAD',
BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
BANNER_OPEN: 'admob.banner.events.OPEN',
@@ -142,19 +151,19 @@ export class AdMobFree extends IonicNativePlugin {
}
/**
*
* Returns the AdMobFreeBanner object
* @type {AdMobFreeBanner}
*/
banner: AdMobFreeBanner = new AdMobFreeBanner();
/**
*
* Returns the AdMobFreeInterstitial object
* @type {AdMobFreeInterstitial}
*/
interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
/**
*
* Returns the AdMobFreeRewardVideo object
* @type {AdMobFreeRewardVideo}
*/
rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
@@ -183,28 +192,28 @@ export class AdMobFreeBanner {
* Hide the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
hide(): Promise<any> { return; }
/**
* Create banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
prepare(): Promise<any> { return; }
/**
* Remove the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
remove(): Promise<any> { return; }
/**
* Show the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
show(): Promise<any> { return; }
}
@@ -231,21 +240,21 @@ export class AdMobFreeInterstitial {
* Check if interstitial is ready
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
isReady(): Promise<any> { return; }
/**
* Prepare interstitial
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
prepare(): Promise<any> { return; }
/**
* Show the interstitial
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
show(): Promise<any> { return; }
}
@@ -272,21 +281,21 @@ export class AdMobFreeRewardVideo {
* Check if reward video is ready
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
isReady(): Promise<any> { return; }
/**
* Prepare reward video
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
prepare(): Promise<any> { return; }
/**
* Show the reward video
* @return {Promise<any>}
*/
@Cordova({ sync: true })
@Cordova({ otherPromise: true })
show(): Promise<any> { return; }
}
@@ -32,7 +32,7 @@ export interface AdMobOptions {
overlap?: boolean;
/**
* Position of banner ad. Defaults to `TOP_CENTER`. You can use the `AdMob.AD_POSITION` property to select other values.
* Position of banner ad. Defaults to `TOP_CENTER`. You can use the `AdMobPro.AD_POSITION` property to select other values.
*/
position?: number;
@@ -90,15 +90,18 @@ export interface AdExtras {
}
/**
* @name AdMob
* @paid
* @name AdMob Pro
* @description
* Plugin for Google Ads, including AdMob / DFP (doubleclick for publisher) and mediations to other Ad networks.
* Plugin for Google Ads, including AdMob / DFP (DoubleClick for publisher) and mediations to other Ad networks.
*
* IMPORTANT NOTICE: this plugin takes a percentage out of your earnings if you profit more than $1,000. Read more about this on the plugin's repo. For a completely free alternative, see [AdMobPro Free](../admob-free).
* @usage
* ```typescript
* import { AdMob } from '@ionic-native/admob';
* import { AdMobPro } from '@ionic-native/admob-pro';
* import { Platform } from 'ionic-angular';
*
* constructor(private admob: AdMob, private platform: Platform ) { }
* constructor(private admob: AdMobPro, private platform: Platform ) { }
*
* ionViewDidLoad() {
* this.admob.onAdDismiss()
@@ -123,14 +126,14 @@ export interface AdExtras {
* AdExtras
*/
@Plugin({
pluginName: 'AdMob',
pluginName: 'AdMob Pro',
plugin: 'cordova-plugin-admobpro',
pluginRef: 'AdMob',
repo: 'https://github.com/floatinghotpot/cordova-admob-pro',
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class AdMob extends IonicNativePlugin {
export class AdMobPro extends IonicNativePlugin {
AD_POSITION: {
NO_CHANGE: number;
@@ -176,7 +179,7 @@ export class AdMob extends IonicNativePlugin {
/**
* Show banner at position
* @param position {number} Position. Use `AdMob.AD_POSITION` to set values.
* @param position {number} Position. Use `AdMobPro.AD_POSITION` to set values.
*/
@Cordova({
sync: true
+3 -2
View File
@@ -101,8 +101,9 @@ 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 APP_ID=your_app_id',
installVariables: ['APP_ID'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Alipay extends IonicNativePlugin {
@@ -192,7 +192,7 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise that resolves if fingerprint auth is available on the device
*/
@Cordova()
isAvailable(): Promise<{ isAvailable: boolean }> { return; }
isAvailable(): Promise<{ isAvailable: boolean, isHardwareDetected: boolean, hasEnrolledFingerprints: boolean }> { return; }
/**
* Delete the cipher used for encryption and decryption by username
@@ -19,7 +19,7 @@ import { Injectable } from '@angular/core';
*
* this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
* success => console.log('Permission granted'),
* err => this.androidPermissions.requestPermissions(this.androidPermissions.PERMISSION.CAMERA)
* err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)
* );
*
* this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.CAMERA, this.androidPermissions.PERMISSION.GET_ACCOUNTS]);
@@ -8,23 +8,23 @@ import { Injectable } from '@angular/core';
*
* @usage
* ```typescript
* import { Platfrom } from 'ionic-angular';
* import { AppMinimize } from '@ionic-native/app-minimize';
*
*
* constructor(private appMinimize: AppMinimize) { }
* constructor(private platform: Platform, private appMinimize: AppMinimize) { }
*
* ...
*
* this.plugin.minimize().then(
* success => console.log('Closed'),
* err => console.log('Something went wrong')
* );
* this.platform.registerBackButtonAction(() => {
* this.appMinimize.minimize();
* });
*
* ```
*/
@Plugin({
pluginName: 'AppMinimize',
plugin: 'https://github.com/tomloprod/cordova-plugin-appminimize.git',
plugin: 'cordova-plugin-appminimize',
pluginRef: 'plugins.appMinimize',
repo: 'https://github.com/tomloprod/cordova-plugin-appminimize',
platforms: ['Android']
@@ -25,7 +25,7 @@ import { Injectable } from '@angular/core';
plugin: 'cordova-plugin-app-preferences',
pluginRef: 'plugins.appPreferences',
repo: 'https://github.com/apla/me.apla.cordova.app-preferences',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'OS X', 'Windows 8', 'Windows Phone']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'macOS', 'Windows 8', 'Windows Phone']
})
@Injectable()
export class AppPreferences extends IonicNativePlugin {
+11 -1
View File
@@ -61,6 +61,10 @@ export interface AppRateCallbacks {
* call back function. called when rate-dialog showing
*/
onRateDialogShow?: Function;
/**
* call back function. called when user clicked on negative feedback
*/
handleNegativeFeedback?: Function;
}
@@ -140,7 +144,7 @@ export interface AppUrls {
plugin: 'cordova-plugin-apprate',
pluginRef: 'AppRate',
repo: 'https://github.com/pushandplay/cordova-plugin-apprate',
platforms: ['Android', 'iOS', 'Windows (experimental)']
platforms: ['Android', 'BlackBerry 10', 'iOS', 'Windows']
})
@Injectable()
export class AppRate extends IonicNativePlugin {
@@ -159,4 +163,10 @@ export class AppRate extends IonicNativePlugin {
@Cordova()
promptForRating(immediately: boolean): void { };
/**
* Immediately send the user to the app store rating page
*/
@Cordova()
navigateToAppStore(): void { };
}
@@ -31,7 +31,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
plugin: 'cordova-plugin-app-version',
pluginRef: 'cordova.getAppVersion',
repo: 'https://github.com/whiteoctober/cordova-plugin-app-version',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class AppVersion extends IonicNativePlugin {
+2 -2
View File
@@ -22,9 +22,9 @@ import { Injectable } from '@angular/core';
*/
@Plugin({
pluginName: 'Appodeal',
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin',
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
pluginRef: 'Appodeal',
repo: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
repo: 'https://github.com/appodeal/appodeal-cordova-plugin',
platforms: ['iOS', 'Android']
})
@Injectable()
@@ -125,7 +125,7 @@ export interface BackgroundGeolocationConfig {
startForeground?: boolean;
/**
* ANDROID, WP8 ONLY
* ANDROID ONLY
* When using BackgroundGeolocation.LocationProvider.ANDROID_DISTANCE_FILTER_PROVIDER:
* The minimum time interval between location updates in milliseconds.
* @see Android docs (http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long,%20float,%20android.location.Criteria,%20android.app.PendingIntent))
@@ -264,7 +264,7 @@ export interface BackgroundGeolocationConfig {
* BackgroundGeolocation must be called within app.ts and or before Geolocation. Otherwise the platform will not ask you for background tracking permission.
*
* ```typescript
* import { BackgroundGeolocation, BackgroundGeolocationConfig } from '@ionic-native/background-geolocation';
* import { BackgroundGeolocation, BackgroundGeolocationConfig, BackgroundGeolocationResponse } from '@ionic-native/background-geolocation';
*
* constructor(private backgroundGeolocation: BackgroundGeolocation) { }
*
@@ -306,7 +306,7 @@ export interface BackgroundGeolocationConfig {
plugin: 'cordova-plugin-mauron85-background-geolocation',
pluginRef: 'backgroundGeolocation',
repo: 'https://github.com/mauron85/cordova-plugin-background-geolocation',
platforms: ['iOS', 'Android', 'Windows Phone 8']
platforms: ['Android', 'iOS']
})
@Injectable()
export class BackgroundGeolocation extends IonicNativePlugin {
@@ -391,7 +391,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
finish(): Promise<any> { return; }
@@ -401,7 +401,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
changePace(isMoving: boolean): Promise<any> { return; }
@@ -420,7 +420,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<Location>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
getStationaryLocation(): Promise<BackgroundGeolocationResponse> { return; }
@@ -430,7 +430,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS', 'Windows Phone']
platforms: ['iOS']
})
onStationary(): Promise<any> { return; }
@@ -19,14 +19,14 @@ export interface BackgroundModeConfiguration {
text?: String;
/**
* This will look for <icon name>.png in platforms/android/res/drawable|mipmap
* This will look for `<icon name>.png` in platforms/android/res/drawable|mipmap
*/
icon?: string;
color?: string;
/**
* By default the app will come to foreground when taping on the notification. If false, plugin wont come to foreground when tapped.
* By default the app will come to foreground when taping on the notification. If false, plugin won't come to foreground when tapped.
*/
resume?: boolean;
@@ -50,7 +50,7 @@ export interface BackgroundModeConfiguration {
* @name Background Mode
* @description
* Cordova plugin to prevent the app from going to sleep while in background.
* Requires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, vist: https://github.com/katzer/cordova-plugin-background-mode
* Requires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, visit: https://github.com/katzer/cordova-plugin-background-mode
*@usage
* ```typescript
* import { BackgroundMode } from '@ionic-native/background-mode';
@@ -70,7 +70,7 @@ export interface BackgroundModeConfiguration {
plugin: 'cordova-plugin-background-mode',
pluginRef: 'cordova.plugins.backgroundMode',
repo: 'https://github.com/katzer/cordova-plugin-background-mode',
platforms: ['Android', 'iOS', 'Windows Phone 8']
platforms: ['AmazonFire OS', 'Android', 'Browser', 'iOS', 'Windows']
})
@Injectable()
export class BackgroundMode extends IonicNativePlugin {
@@ -179,7 +179,7 @@ export class BackgroundMode extends IonicNativePlugin {
overrideBackButton(): void { }
/**
* Exclude the app from the recent task list works on Android 5.0+.
* Exclude the app from the recent task list. Works on Android 5.0+.
*/
@Cordova({
platforms: ['Android'],
+1 -1
View File
@@ -27,7 +27,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
plugin: 'cordova-plugin-badge',
pluginRef: 'cordova.plugins.notification.badge',
repo: 'https://github.com/katzer/cordova-plugin-badge',
platforms: ['Android', 'iOS', 'Browser', 'Windows', 'Amazon FireOS', 'Windows Phone 8']
platforms: ['Android', 'Browser', 'iOS', 'Windows']
})
@Injectable()
export class Badge extends IonicNativePlugin {
@@ -92,7 +92,7 @@ export interface BarcodeScanResult {
plugin: 'phonegap-plugin-barcodescanner',
pluginRef: 'cordova.plugins.barcodeScanner',
repo: 'https://github.com/phonegap/phonegap-plugin-barcodescanner',
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows 10', 'Windows 8', 'BlackBerry 10', 'Browser']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'Windows']
})
@Injectable()
export class BarcodeScanner extends IonicNativePlugin {
+45
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; }
}
@@ -49,7 +49,7 @@ export interface BatteryStatusResponse {
plugin: 'cordova-plugin-battery-status',
pluginRef: 'navigator.battery',
repo: 'https://github.com/apache/cordova-plugin-battery-status',
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows']
})
@Injectable()
export class BatteryStatus extends IonicNativePlugin {
+1 -1
View File
@@ -173,7 +173,7 @@ import { Observable } from 'rxjs/Observable';
plugin: 'cordova-plugin-ble-central',
pluginRef: 'ble',
repo: 'https://github.com/don/cordova-plugin-ble-central',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS']
})
@Injectable()
export class BLE extends IonicNativePlugin {
@@ -35,7 +35,7 @@ import { Observable } from 'rxjs/Observable';
repo: 'https://github.com/don/BluetoothSerial',
plugin: 'cordova-plugin-bluetooth-serial',
pluginRef: 'bluetoothSerial',
platforms: ['Android', 'iOS', 'Windows Phone', 'Browser']
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class BluetoothSerial extends IonicNativePlugin {
@@ -4,6 +4,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* @name Call Number
* @description
* Call a number directly from your Cordova/Ionic application.
* **NOTE**: The iOS Simulator (and maybe Android Simulators) do not provide access to the phone subsystem.
*
* @usage
* ```typescript
@@ -14,7 +15,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
* ...
*
*
* this.callNumber.callNumber(18001010101, true)
* this.callNumber.callNumber("18001010101", true)
* .then(() => console.log('Launched dialer!'))
* .catch(() => console.log('Error launching dialer'));
*
@@ -25,7 +26,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
plugin: 'call-number',
pluginRef: 'plugins.CallNumber',
repo: 'https://github.com/Rohfosho/CordovaCallNumberPlugin',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS']
})
@Injectable()
export class CallNumber extends IonicNativePlugin {
+37 -1
View File
@@ -85,6 +85,42 @@ export interface CameraPopoverOptions {
arrowDir: number;
}
export enum DestinationType {
DATA_URL = 0,
FILE_URL,
NATIVE_URI
}
export enum EncodingType {
JPEG = 0,
PNG
}
export enum MediaType {
PICTURE = 0,
VIDEO,
ALLMEDIA
}
export enum PictureSourceType {
PHOTOLIBRARY = 0,
CAMERA,
SAVEDPHOTOALBUM
}
export enum PopoverArrowDirection {
ARROW_UP = 1,
ARROW_DOWN,
ARROW_LEFT,
ARROW_RIGHT,
ARROW_ANY
}
export enum Direction {
BACK = 0,
FRONT
}
/**
* @name Camera
* @description
@@ -125,7 +161,7 @@ export interface CameraPopoverOptions {
plugin: 'cordova-plugin-camera',
pluginRef: 'navigator.camera',
repo: 'https://github.com/apache/cordova-plugin-camera',
platforms: ['Android', 'BlackBerry', 'Browser', 'Firefox', 'FireOS', 'iOS', 'Windows', 'Windows Phone 8', 'Ubuntu']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class Camera extends IonicNativePlugin {
+7 -2
View File
@@ -133,6 +133,11 @@ export interface CardIOResponse {
* @name Card IO
* @description
* @usage
* Note: For use with iOS 10 + When building your app with the iOS 10 SDK +, you have to add some info to the info.plist file. This is due to increased security in iOS 10. Go to your app directory and search for the <your app name>Info.plist file. Add the following lines in the main <dict> element.
* ```xml
*<key>NSCameraUsageDescription</key>
*<string>To scan credit cards.</string>
*```
* ```typescript
* import { CardIO } from '@ionic-native/card-io';
*
@@ -147,7 +152,7 @@ export interface CardIOResponse {
* if(res){
* let options = {
* requireExpiry: true,
* requireCCV: false,
* requireCVV: false,
* requirePostalCode: false
* };
* CardIO.scan(options);
@@ -164,7 +169,7 @@ export interface CardIOResponse {
plugin: 'card.io.cordova.mobilesdk',
pluginRef: 'CardIO',
repo: 'https://github.com/card-io/card.io-Cordova-Plugin',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS']
})
@Injectable()
export class CardIO extends IonicNativePlugin {
+3 -5
View File
@@ -5,8 +5,6 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* @description
* Clipboard management plugin for Cordova that supports iOS, Android, and Windows Phone 8.
*
* Requires Cordova plugin: https://github.com/VersoSolutions/CordovaClipboard
* For more info, please see the [Clipboard plugin docs](https://github.com/VersoSolutions/CordovaClipboard.git).
*
* @usage
* ```typescript
@@ -31,10 +29,10 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
*/
@Plugin({
pluginName: 'Clipboard',
plugin: 'https://github.com/VersoSolutions/CordovaClipboard.git',
plugin: 'cordova-clipboard',
pluginRef: 'cordova.plugins.clipboard',
repo: 'https://github.com/VersoSolutions/CordovaClipboard',
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
repo: 'https://github.com/ihadeed/cordova-clipboard',
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class Clipboard extends IonicNativePlugin {
+1 -1
View File
@@ -294,7 +294,7 @@ export class ContactFindOptions implements IContactFindOptions {
plugin: 'cordova-plugin-contacts',
pluginRef: 'navigator.contacts',
repo: 'https://github.com/apache/cordova-plugin-contacts',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows 8', 'Windows Phone']
platforms: ['Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class Contacts extends IonicNativePlugin {
@@ -23,7 +23,7 @@ import { Injectable } from '@angular/core';
*/
@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']
+1 -1
View File
@@ -39,7 +39,7 @@ import { Observable } from 'rxjs/Observable';
plugin: 'cordova-plugin-dbmeter',
pluginRef: 'DBMeter',
repo: 'https://github.com/akofman/cordova-plugin-dbmeter',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS']
})
@Injectable()
export class DBMeter extends IonicNativePlugin {
+7 -7
View File
@@ -49,7 +49,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 +67,7 @@ export interface DeeplinkMatch {
* });
* ```
*
* See the [Ionic 2 Deeplinks Demo](https://github.com/driftyco/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
* See the [Ionic Deeplinks Demo](https://github.com/ionic-team/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to
* retrieve the `NavController` reference at runtime.
*
* @interfaces
@@ -77,10 +77,10 @@ export interface DeeplinkMatch {
pluginName: 'Deeplinks',
plugin: 'ionic-plugin-deeplinks',
pluginRef: 'IonicDeeplink',
repo: 'https://github.com/driftyco/ionic-plugin-deeplinks',
platforms: ['iOS', 'Android', 'Browser'],
install: 'ionic plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/',
installVariables: ['URL_SCHEME', 'DEEPLINK_SCHEME', 'DEEPLINK_HOST', 'ANDROID_PATH_PREFIX']
repo: 'https://github.com/ionic-team/ionic-plugin-deeplinks',
install: 'ionic cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/',
installVariables: ['URL_SCHEME', 'DEEPLINK_SCHEME', 'DEEPLINK_HOST', 'ANDROID_PATH_PREFIX'],
platforms: ['Android', 'Browser', 'iOS']
})
@Injectable()
export class Deeplinks extends IonicNativePlugin {
@@ -103,7 +103,7 @@ export class Deeplinks extends IonicNativePlugin {
/**
*
* This is a convenience version of `route` that takes a reference to a NavController
* from Ionic 2, or a custom class that conforms to this protocol:
* from Ionic, or a custom class that conforms to this protocol:
*
* NavController.push = function(View, Params){}
*
@@ -22,9 +22,9 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
*/
@Plugin({
pluginName: 'DeviceAccounts',
plugin: 'https://github.com/loicknuchel/cordova-device-accounts.git',
plugin: 'cordova-device-accounts',
pluginRef: 'plugins.DeviceAccounts',
repo: 'https://github.com/loicknuchel/cordova-device-accounts',
repo: 'https://github.com/danielsogl/cordova-device-accounts',
platforms: ['Android']
})
@Injectable()
@@ -72,7 +72,7 @@ export interface DeviceMotionAccelerometerOptions {
plugin: 'cordova-plugin-device-motion',
pluginRef: 'navigator.accelerometer',
repo: 'https://github.com/apache/cordova-plugin-device-motion',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class DeviceMotion extends IonicNativePlugin {
@@ -77,7 +77,7 @@ export interface DeviceOrientationCompassOptions {
plugin: 'cordova-plugin-device-orientation',
pluginRef: 'navigator.compass',
repo: 'https://github.com/apache/cordova-plugin-device-orientation',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class DeviceOrientation extends IonicNativePlugin {
+1 -1
View File
@@ -24,7 +24,7 @@ declare const window: any;
plugin: 'cordova-plugin-device',
pluginRef: 'device',
repo: 'https://github.com/apache/cordova-plugin-device',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'macOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Device extends IonicNativePlugin {
+3 -3
View File
@@ -45,8 +45,8 @@ export interface DialogsPromptCallback {
pluginName: 'Dialogs',
plugin: 'cordova-plugin-dialogs',
pluginRef: 'navigator.notification',
repo: 'https://github.com/apache/cordova-plugin-dialogs.git',
platforms: ['Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
repo: 'https://github.com/apache/cordova-plugin-dialogs',
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Dialogs extends IonicNativePlugin {
@@ -69,7 +69,7 @@ export class Dialogs extends IonicNativePlugin {
* @param {string} message Dialog message.
* @param {string} title Dialog title. (Optional, defaults to Confirm)
* @param {Array<string>} buttonLabels Array of strings specifying button labels. (Optional, defaults to [OK,Cancel])
* @returns {Promise<number>} Returns a promise that resolves the button index that was clicked. Note that the index use one-based indexing.
* @returns {Promise<number>} Returns a promise that resolves the button index that was clicked, or 0 if the user has dismissed the dialog by clicking outside the dialog box. Note that the index use one-based indexing.
*/
@Cordova({
successIndex: 1,
@@ -2,29 +2,29 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface DocumentViewerOptions {
title: string;
documentView: {
title?: string;
documentView?: {
closeLabel: string;
};
navigationView: {
navigationView?: {
closeLabel: string;
};
email: {
email?: {
enabled: boolean;
};
print: {
print?: {
enabled: boolean;
};
openWith: {
openWith?: {
enabled: boolean;
};
bookmarks: {
bookmarks?: {
enabled: boolean;
};
search: {
search?: {
enabled: boolean;
};
autoClose: {
autoClose?: {
onPause: boolean;
};
}
@@ -90,13 +90,13 @@ export class DocumentViewer extends IonicNativePlugin {
*
* @param url {string} Url to the file
* @param contentType {string} Content type of the file
* @param options {Array<DocumentViewerOptions>} options
* @param options {DocumentViewerOptions} options
* @param [onShow] {Function}
* @param [onClose] {Function}
* @param [onMissingApp] {Function}
* @param [onError] {Function}
*/
@Cordova({ sync: true })
viewDocument(url: string, contentType: string, options: Array<DocumentViewerOptions>, onShow?: Function, onClose?: Function, onMissingApp?: Function, onError?: Function): void { }
viewDocument(url: string, contentType: string, options: DocumentViewerOptions, onShow?: Function, onClose?: Function, onMissingApp?: Function, onError?: Function): void { }
}
@@ -1,28 +1,46 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
interface Cordova {
plugins: CordovaPlugins & { email: any };
}
declare const cordova: Cordova;
export interface EmailComposerOptions {
/**
* App to send the email with
*/
app?: string;
/**
* Email address(es) for To field
*/
to?: string | Array<string>;
/**
* Email address(es) for CC field
*/
cc?: string | Array<string>;
/**
* Email address(es) for BCC field
*/
bcc?: string | Array<string>;
attachments?: Array<any>;
/**
* File paths or base64 data streams
*/
attachments?: string[];
/**
* Subject of the email
*/
subject?: string;
/**
* Email body (for HTML, set isHtml to true)
*/
body?: string;
/**
* Indicates if the body is HTML or plain text
*/
isHtml?: boolean;
}
@@ -67,17 +85,28 @@ export interface EmailComposerOptions {
*
* // Send a text message using default options
* this.emailComposer.open(email);
* ```
*
* You can also assign aliases to email apps
* ```ts
* // add alias
* this.email.addAlias('gmail', 'com.google.android.gm');
*
* // then use alias when sending email
* this.email.open({
* app: 'gmail',
* ...
* });
* ```
* @interfaces
* EmailComposerOptions
*/
@Plugin({
pluginName: 'EmailComposer',
plugin: 'cordova-plugin-email',
plugin: 'cordova-plugin-email-composer',
pluginRef: 'cordova.plugins.email',
repo: 'https://github.com/hypery2k/cordova-email-plugin',
platforms: ['Android', 'iOS']
repo: 'https://github.com/katzer/cordova-plugin-email-composer',
platforms: ['Amazon Fire OS', 'Android', 'Browser', 'iOS', 'Windows']
})
@Injectable()
export class EmailComposer extends IonicNativePlugin {
@@ -92,7 +121,7 @@ export class EmailComposer extends IonicNativePlugin {
isAvailable(app?: string): Promise<any> {
return new Promise<boolean>((resolve, reject) => {
if (app) {
cordova.plugins.email.isAvailable(app, (isAvailable: boolean) => {
EmailComposer.getPlugin().isAvailable(app, (isAvailable: boolean) => {
if (isAvailable) {
resolve();
} else {
@@ -100,7 +129,7 @@ export class EmailComposer extends IonicNativePlugin {
}
});
} else {
cordova.plugins.email.isAvailable((isAvailable: boolean) => {
EmailComposer.getPlugin().isAvailable((isAvailable: boolean) => {
if (isAvailable) {
resolve();
} else {
@@ -111,6 +140,26 @@ export class EmailComposer extends IonicNativePlugin {
});
}
/**
* Request permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
requestPermission(): Promise<boolean> { return; }
/**
* Checks if the app has a permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
hasPermission(): Promise<boolean> { return; }
/**
* Adds a new mail app alias.
*
@@ -44,7 +44,7 @@ export interface EstimoteBeaconRegion {
plugin: 'cordova-plugin-estimote',
pluginRef: 'estimote.beacons',
repo: 'https://github.com/evothings/phonegap-estimotebeacons',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS']
})
@Injectable()
export class EstimoteBeacons extends IonicNativePlugin {
@@ -512,4 +512,3 @@ export class EstimoteBeacons extends IonicNativePlugin {
writeConnectedMinor(minor: number): Promise<any> { return; }
}
+3 -3
View File
@@ -43,7 +43,7 @@ export interface FacebookLoginResponse {
* Then type in the following command in your Terminal, where APP_ID and APP_NAME are the values from the Facebook Developer portal.
*
* ```bash
* ionic plugin add cordova-plugin-facebook4 --save --variable APP_ID="123456789" --variable APP_NAME="myApplication"
* ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"
* ```
*
* After, you'll need to add the native platforms you'll be using to your app in the Facebook Developer portal under your app's Settings:
@@ -114,9 +114,9 @@ export interface FacebookLoginResponse {
plugin: 'cordova-plugin-facebook4',
pluginRef: 'facebookConnectPlugin',
repo: 'https://github.com/jeduan/cordova-plugin-facebook4',
install: 'ionic plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
install: 'ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
installVariables: ['APP_ID', 'APP_NAME'],
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS', 'Browser']
})
@Injectable()
export class Facebook extends IonicNativePlugin {
+17 -17
View File
@@ -25,32 +25,32 @@ export interface NotificationData {
*
* @usage
* ```typescript
* import { FCM } from 'ionic-native';
* import { FCM } from '@ionic-native/fcm';
*
* constructor(private fcm: FCM) {}
*
*
* ...
*
*
* fcm.subscribeToTopic('marketing');
*
*
* fcm.getToken().then(token=>{
* backend.registerToken(token);
* })
*
*
* fcm.onNotification().subscribe(data=>{
* if(data.wasPressed){
* if(data.wasTapped){
* console.log("Received in background");
* } else {
* console.log("Received in foreground");
* };
* })
*
*
* fcm.onTokenRefresh().subscribe(token=>{
* backend.registerToken(token);
* })
*
*
* fcm.unsubscribeFromTopic('marketing');
*
*
* ```
* @interfaces
* NotificationData
@@ -60,14 +60,14 @@ export interface NotificationData {
plugin: 'cordova-plugin-fcm',
pluginRef: 'FCMPlugin',
repo: 'https://github.com/fechanique/cordova-plugin-fcm',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS']
})
@Injectable()
export class FCM extends IonicNativePlugin {
/**
* Get's device's current registration id
*
*
* @returns {Promise<string>} Returns a Promise that resolves with the registration id token
*/
@Cordova()
@@ -75,7 +75,7 @@ export class FCM extends IonicNativePlugin {
/**
* Event firing on the token refresh
*
*
* @returns {Observable<string>} Returns an Observable that notifies with the change of device's registration id
*/
@Cordova({
@@ -85,9 +85,9 @@ export class FCM extends IonicNativePlugin {
/**
* Subscribes you to a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
*
* @param {string} topic Topic to be subscribed to
*
*
* @returns {Promise<any>} Returns a promise resolving in result of subscribing to a topic
*/
@Cordova()
@@ -95,9 +95,9 @@ export class FCM extends IonicNativePlugin {
/**
* Unubscribes you from a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
*
* @param {string} topic Topic to be unsubscribed from
*
*
* @returns {Promise<any>} Returns a promise resolving in result of unsubscribing from a topic
*/
@Cordova()
@@ -105,7 +105,7 @@ export class FCM extends IonicNativePlugin {
/**
* Watch for incoming notifications
*
*
* @returns {Observable<any>} returns an object with data from the notification
*/
@Cordova({
@@ -23,9 +23,9 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
*/
@Plugin({
pluginName: 'FileChooser',
plugin: 'https://github.com/don/cordova-filechooser.git',
plugin: 'cordova-plugin-filechooser',
pluginRef: 'fileChooser',
repo: 'https://github.com/don/cordova-filechooser',
repo: 'https://github.com/ihadeed/cordova-filechooser',
platforms: ['Android']
})
@Injectable()
@@ -1,8 +1,6 @@
import { Injectable } from '@angular/core';
import { CordovaInstance, Plugin, InstanceCheck, checkAvailability, IonicNativePlugin } from '@ionic-native/core';
declare const FileTransfer: any;
export interface FileUploadOptions {
/**
@@ -109,21 +107,21 @@ export interface FileTransferError {
}
/**
* @name Transfer
* @name File Transfer
*
* @description
* This plugin allows you to upload and download files.
*
* @usage
* ```typescript
* import { Transfer, FileUploadOptions, TransferObject } from '@ionic-native/transfer';
* import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
* import { File } from '@ionic-native/file';
*
* constructor(private transfer: Transfer, private file: File) { }
* constructor(private transfer: FileTransfer, private file: File) { }
*
* ...
*
* const fileTransfer: TransferObject = this.transfer.create();
* const fileTransfer: FileTransferObject = this.transfer.create();
*
* // Upload a file:
* fileTransfer.upload(..).then(..).catch(..);
@@ -170,16 +168,17 @@ export interface FileTransferError {
* FileUploadResult
* FileTransferError
* @classes
* TransferObject
* FileTransferObject
*/
@Plugin({
pluginName: 'FileTransfer',
plugin: 'cordova-plugin-file-transfer',
pluginRef: 'FileTransfer',
repo: 'https://github.com/apache/cordova-plugin-file-transfer'
repo: 'https://github.com/apache/cordova-plugin-file-transfer',
platforms: ['Amazon Fire OS', 'Android', 'Browser', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Transfer extends IonicNativePlugin {
export class FileTransfer extends IonicNativePlugin {
/**
* Error code rejected from upload with FileTransferError
@@ -201,10 +200,10 @@ export class Transfer extends IonicNativePlugin {
/**
* Creates a new FileTransfer object
* @return {TransferObject}
* @return {FileTransferObject}
*/
create(): TransferObject {
return new TransferObject();
create(): FileTransferObject {
return new FileTransferObject();
}
}
@@ -216,12 +215,12 @@ export class Transfer extends IonicNativePlugin {
plugin: 'cordova-plugin-file-transfer',
pluginName: 'FileTransfer'
})
export class TransferObject {
export class FileTransferObject {
private _objectInstance: any;
constructor() {
if (checkAvailability('FileTransfer', null, 'FileTransfer') === true) {
this._objectInstance = new FileTransfer();
if (checkAvailability(FileTransfer.getPluginRef(), null, FileTransfer.getPluginName()) === true) {
this._objectInstance = new (FileTransfer.getPlugin())();
}
}
@@ -238,15 +237,13 @@ export class TransferObject {
successIndex: 2,
errorIndex: 3
})
upload(fileUrl: string, url: string, options?: FileUploadOptions, trustAllHosts?: boolean): Promise<FileUploadResult> {
return;
}
upload(fileUrl: string, url: string, options?: FileUploadOptions, trustAllHosts?: boolean): Promise<FileUploadResult> { return; }
/**
* Downloads a file from server.
*
* @param {string} source URL of the server to download the file, as encoded by encodeURI().
* @param {stirng} target Filesystem url representing the file on the device. For backwards compatibility, this can also be the full path of the file on the device.
* @param {string} target Filesystem url representing the file on the device. For backwards compatibility, this can also be the full path of the file on the device.
* @param {boolean} trustAllHosts Optional parameter, defaults to false. If set to true, it accepts all security certificates. This is useful because Android rejects self-signed security certificates. Not recommended for production use. Supported on Android and iOS.
* @param {object} Optional parameters, currently only supports headers (such as Authorization (Basic Authentication), etc).
* @returns {Promise<any>} Returns a Promise that resolves to a FileEntry object.
@@ -255,9 +252,7 @@ export class TransferObject {
successIndex: 2,
errorIndex: 3
})
download(source: string, target: string, trustAllHosts?: boolean, options?: { [s: string]: any; }): Promise<any> {
return;
}
download(source: string, target: string, trustAllHosts?: boolean, options?: { [s: string]: any; }): Promise<any> { return; }
/**
* Registers a listener that gets called whenever a new chunk of data is transferred.
@@ -275,5 +270,5 @@ export class TransferObject {
@CordovaInstance({
sync: true
})
abort(): void { }
abort(): void {}
}
+5 -1
View File
@@ -400,6 +400,7 @@ export interface RemoveResult {
fileRemoved: Entry;
}
/** @hidden */
export declare class FileSaver extends EventTarget {
/**
* When the FileSaver constructor is called, the user agent must return a new FileSaver object with readyState set to INIT.
@@ -489,6 +490,7 @@ export declare class FileSaver extends EventTarget {
}
/**
* @hidden
* This interface expands on the FileSaver interface to allow for multiple write actions, rather than just saving a single Blob.
*/
export declare class FileWriter extends FileSaver {
@@ -528,6 +530,7 @@ export interface IWriteOptions {
truncate?: number; // if present, number of bytes to truncate file to before writing
}
/** @hidden */
export declare class FileError {
constructor(code: number);
static NOT_FOUND_ERR: number;
@@ -547,6 +550,7 @@ export declare class FileError {
message: string;
}
/** @hidden */
export declare class FileReader {
static EMPTY: number;
static LOADING: number;
@@ -616,7 +620,7 @@ declare const window: Window;
plugin: 'cordova-plugin-file',
pluginRef: 'cordova.file',
repo: 'https://github.com/apache/cordova-plugin-file',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'macOS', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class File extends IonicNativePlugin {
@@ -17,6 +17,16 @@ export interface FingerprintOptions {
* Disable 'use backup' option. Only for android (optional)
*/
disableBackup?: boolean;
/**
* Title of fallback button. Only for iOS
*/
localizedFallbackTitle?: string;
/**
* Description in authentication dialogue. Only for iOS
*/
localizedReason?: string;
}
/**
@@ -36,7 +46,9 @@ export interface FingerprintOptions {
* this.faio.show({
* clientId: 'Fingerprint-Demo',
* clientSecret: 'password', //Only necessary for Android
* disableBackup:true //Only for Android(optional)
* disableBackup:true, //Only for Android(optional)
* localizedFallbackTitle: 'Use Pin', //Only for iOS
* localizedReason: 'Please authenticate' //Only for iOS
* })
* .then((result: any) => console.log(result))
* .catch((error: any) => console.log(error));
@@ -0,0 +1,85 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @beta
* @name Firebase Analytics
* @description
* Cordova plugin for Firebase Analytics
*
* Go yo firebase console and export google-services.json and GoogleService-Info.plist. Put those files into the root of your cordova app folder.
*
* NOTE: on iOS in order to collect demographic, age, gender data etc. you should additionally include AdSupport.framework into your project.
*
* @usage
* ```typescript
* import { FirebaseAnalytics } from '@ionic-native/firebase-analytics';
*
*
* constructor(private firebaseAnalytics: FirebaseAnalytics) { }
*
* ...
*
* this.firebaseAnalytics.logEvent('page_view', {page: "dashboard"})
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'FirebaseAnalytics',
plugin: 'cordova-plugin-firebase-analytics',
pluginRef: 'cordova.plugins.firebase.analytics',
repo: 'https://github.com/chemerisuk/cordova-plugin-firebase-analytics',
platforms: ['Android', 'iOS']
})
@Injectable()
export class FirebaseAnalytics extends IonicNativePlugin {
/**
* Logs an app event.
* Be aware of automatically collected events.
* @param name {string} The name of the event
* @param params {any} Some param to configure something
* @return {Promise<any>} Returns a promise
*/
@Cordova()
logEvent(name: string, params: any): Promise<any> { return; }
/**
* Sets the user ID property.
* This feature must be used in accordance with Google's Privacy Policy.
* @param id {string} The user ID
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setUserId(id: string): Promise<any> { return; }
/**
* This feature must be used in accordance with Google's Privacy Policy.
* Be aware of automatically collected user properties.
* @param name {string} The property name
* @param value {string} The property value
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setUserProperty(name: string, value: string): Promise<any> { return; }
/**
* Sets whether analytics collection is enabled for this app on this device.
* @param enabled {boolean}
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setEnabled(enabled: boolean): Promise<any> { return; }
/**
* Sets the current screen name, which specifies the current visual context in your app.
* This helps identify the areas in your app where users spend their time and how they interact with your app.
* @param name {string} The name of the screen
* @return {Promise<any>} Returns a promise
*/
@Cordova()
setCurrentScreen(name: string): Promise<any> { return; }
}
@@ -0,0 +1,90 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
export interface DynamicLinksOptions {
title: string;
message: string;
deepLink?: string;
callToActionText?: string;
}
/**
* @beta
* @name Firebase Dynamic Links
* @description
* Cordova plugin for Firebase Invites and Firebase Dynamic Links
*
* Variables APP_DOMAIN and APP_PATH specify web URL where your app will start an activity to handle the link. They also used to setup support for App Indexing.
*
* Go to firebase console and export google-services.json and GoogleService-Info.plist. Put those files into the root of your cordova app folder.
*
* Preferences:
*
* Preferences GoogleIOSClientId and GoogleAndroidClientId are used to setup dynamic links when you have an app for several platforms.
* You can find values at your GoogleService-Info.plist (key ANDROID_CLIENT_ID) and google-services.json (key client[0].oauth_client[0].client_id).
*
*config.xml:
* ```xml
* <platform name="android">
* <preference name="GoogleIOSClientId" value="..." />
* </platform>
* <platform name="ios">
* <preference name="GoogleAndroidClientId" value="..." />
* </platform>
* ```
* @usage
* ```typescript
* import { FirebaseDynamicLinks } from '@ionic-native/firebase-dynamic-links';
*
*
* constructor(private firebaseDynamicLinks: FirebaseDynamicLinks) { }
*
* ...
* // The deepLink and callToActionText properties are optional
* const options: DynamicLinksOptions = {
* title: 'My Title';
* message: 'My message';
* deepLink: 'http://example.com/';
* callToActionText: 'Message on button';
* }
*
* this.firebaseDynamicLinks.sendInvitation(options)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* this.firebaseDynamicLinks.onDynamicLink()
* .then((res: any) => console.log(res)) //Handle the logic here after opening the app with the Dynamic link
* .catch((error:any) => console.log(error));
* ```
*
* @interfaces
* DynamicLinksOptions
*/
@Plugin({
pluginName: 'FirebaseDynamicLinks',
plugin: ' cordova-plugin-firebase-dynamiclinks',
pluginRef: 'cordova.plugins.firebase.dynamiclinks',
repo: 'https://github.com/chemerisuk/cordova-plugin-firebase-dynamiclinks',
install: 'ionic cordova plugin add cordova-plugin-firebase-dynamiclinks --save --variable APP_DOMAIN="example.com" --variable APP_PATH="/"',
installVariables: ['APP_DOMAIN', 'APP_PATH'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class FirebaseDynamicLinks extends IonicNativePlugin {
/**
* Registers callback that is triggered on each dynamic link click.
* @return {Promise<any>} Returns a promise
*/
@Cordova()
onDynamicLink(): Promise<any> { return; }
/**
* Display invitation dialog.
* @param options {DynamicLinksOptions} Some param to configure something
* @return {Promise<any>} Returns a promise
*/
@Cordova()
sendInvitation(options: DynamicLinksOptions): Promise<any> { return; }
}
@@ -107,6 +107,13 @@ export class Firebase extends IonicNativePlugin {
@Cordova()
unsubscribe(topic: string): Promise<any> { return; }
/**
* Unregister from firebase, used to stop receiving push notifications.
* Call this when you logout user from your app.
*/
@Cordova()
unregister(): Promise<any> { return; }
/**
* Log an event using Analytics
* @param type {string}
@@ -23,7 +23,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
pluginName: 'Flashlight',
plugin: 'cordova-plugin-flashlight',
pluginRef: 'window.plugins.flashlight',
repo: 'https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin.git',
repo: 'https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin',
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
@@ -72,6 +72,9 @@ export interface FlurryAnalyticsLocation {
horizontalAccuracy?: number;
}
/**
* @hidden
*/
export class FlurryAnalyticsObject {
constructor(private _objectInstance: any) { }
@@ -208,8 +211,8 @@ export class FlurryAnalyticsObject {
pluginName: 'FlurryAnalytics',
plugin: 'cordova-plugin-flurryanalytics',
pluginRef: 'FlurryAnalytics',
repo: 'https://github.com/blakgeek/cordova-plugin-flurryanalytics.git',
platforms: ['Android', 'iOS', 'Browser']
repo: 'https://github.com/blakgeek/cordova-plugin-flurryanalytics',
platforms: ['Android', 'iOS']
})
@Injectable()
export class FlurryAnalytics extends IonicNativePlugin {
@@ -224,7 +227,7 @@ export class FlurryAnalytics extends IonicNativePlugin {
let instance: any;
if (checkAvailability(FlurryAnalytics.pluginRef, null, FlurryAnalytics.pluginName) === true) {
instance = new (window as any).FlurryAnalaytics(options);
instance = new (window as any).FlurryAnalytics(options);
}
return new FlurryAnalyticsObject(instance);
+133
View File
@@ -0,0 +1,133 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name FTP
* @description
* This cordova plugin is created to use ftp (client) in web/js.
*
* @usage
* ```typescript
* import { FTP } from '@ionic-native/ftp';
*
*
* constructor(private fTP: FTP) { }
*
* ...
*
*
* this.fTP.connect('ftp_host', 'ftp_user', 'ftp_password')
* .then((res: any) => console.log('Login successful', res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'FTP',
plugin: 'cordova-plugin-ftp',
pluginRef: 'cordova.plugin.ftp',
repo: 'https://github.com/xfally/cordova-plugin-ftp',
platforms: ['Android', 'iOS']
})
@Injectable()
export class FTP extends IonicNativePlugin {
/**
* Connect to one ftp server.
*
* Just need to init the connection once. If success, you can do any ftp actions later.
* @param hostname {string} The ftp server url. Like ip without protocol prefix, e.g. "192.168.1.1".
* @param username {string} The ftp login username. If it and `password` are all blank/undefined, the default username "anonymous" is used.
* @param password {string} The ftp login password. If it and `username` are all blank/undefined, the default password "anonymous@" is used.
* @return {Promise<any>} The success callback. Notice: For iOS, if triggered, means `init` success, but NOT means the later action, e.g. `ls`... `download` will success!
*/
@Cordova()
connect(hostname: string, username: string, password: string): Promise<any> { return; }
/**
* List files (with info of `name`, `type`, `link`, `size`, `modifiedDate`) under one directory on the ftp server.
* You can get one file's name using `fileList[x].name` (`x` is the location in array).
*
* Explain key:
* - name: file name (utf-8).
* - type: file type. number `0` means regular file, `1` means directory, `2` means symbolic link, `-1` means unknown type (maybe block dev, char dev...).
* - link: if the file is a symbolic link, then this field store symbolic link information (utf-8), else it's a blank string.
* - size: file size in bytes.
* - modifiedDate: modified date of this file. date format is `yyyy-MM-dd HH:mm:ss zzz`, e.g "2015-12-01 20:45:00 GMT+8".
*
* @param path {string} The path on the ftp server. e.g. "/adf/123/".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
ls(path: string): Promise<any> { return; }
/**
* Create one directory on the ftp server.
*
* @param path {string} The path on the ftp server. e.g. "/adf/123/".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
mkdir(path: string): Promise<any> { return; }
/**
* Delete one directory on the ftp server.
*
* Tip: As many ftp server could not rm dir when it's not empty, so rm all files under the dir at first is recommended.
*
* @param path {string} The file (with full path) you want to delete. e.g. "/adf/123/newDir/myFile".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
rmdir(path: string): Promise<any> { return; }
/**
* Delete one file on the ftp server.
*
* @param file {string} The file (with full path) you want to delete. e.g. "/adf/123/newDir/myFile".
* @return {Promise<any>} Returns a promise
*/
@Cordova()
rm(file: string): Promise<any> { return; }
/**
* Upload one local file to the ftp server.
*
* @param localFile {string} The file (with full path) you want to upload. e.g. "/local/path/to/localFile".
* @param remoteFile {string} The file (with full path) you want to located on the ftp server. e.g. "/adf/123/newDir/remoteFile".
* @return {Promise<any>} Returns a promise.
* It will be triggered many times according the file's size.
* The arg `0`, `0.1xx`, `0.2xx` ... `1` means the upload percent. When it reach `1`, means success.
*/
@Cordova()
upload(localFile: string, remoteFile: string): Promise<any> { return; }
/**
* Download one remote file on the ftp server to local path.
*
* @param localFile {string} The file (with full path) you want to upload. e.g. "/local/path/to/localFile".
* @param remoteFile {string} The file (with full path) you want to located on the ftp server. e.g. "/adf/123/newDir/remoteFile".
* @return {Promise<any>} Returns a promise.
* It will be triggered many times according the file's size.
* The arg `0`, `0.1xx`, `0.2xx` ... `1` means the upload percent. When it reach `1`, means success.
*/
@Cordova()
download(localFile: string, remoteFile: string): Promise<any> { return; }
/**
* Cancel all requests. Always success.
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
cancel(): Promise<any> { return; }
/**
* Disconnect from ftp server.
*
* @return {Promise<any>} Returns a promise
*/
@Cordova()
disconnect(): Promise<any> { return; }
}
+5 -19
View File
@@ -72,20 +72,20 @@ declare const window: any;
* ### Troubleshooting ###
* #### I get compile errors when I run `ionic build ios` or `ionic run ios`. ####
* This could be caused by the Cordova project directory in `/platforms/ios` not being named correctly.
* Try running `ionic platform rm <platform>` then run `ionic platform add <platform>` to recreate the
* Try running `ionic cordova platform rm <platform>` then run `ionic cordova platform add <platform>` to recreate the
* platform directories.
*/
@Plugin({
pluginName: 'Geofence',
plugin: 'cordova-plugin-geofence',
pluginRef: 'geofence',
repo: 'https://github.com/cowbell/cordova-plugin-geofence/',
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows Phone']
repo: 'https://github.com/cowbell/cordova-plugin-geofence',
platforms: ['Android', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class Geofence extends IonicNativePlugin {
public TransitionType = {
TransitionType = {
ENTER: 1,
EXIT: 2,
BOTH: 3
@@ -96,7 +96,7 @@ export class Geofence extends IonicNativePlugin {
* @return {Observable<any>}
*/
@CordovaFunctionOverride()
onTrasitionReceived(): Observable<any> { return; };
onTransitionReceived(): Observable<any> { return; };
/**
* Initializes the plugin. User will be prompted to allow the app to use location and notifications.
@@ -139,20 +139,6 @@ export class Geofence extends IonicNativePlugin {
@Cordova()
getWatched(): Promise<string> { return; };
/**
* Called when a geofence is crossed in the direction specified by `TransitType`.
*
* @returns {Observable<any>}
*/
onTransitionReceived(): Observable<any> {
return new Observable<any>((observer) => {
window && window.geofence && (window.geofence.onTransitionReceived = observer.next.bind(observer));
return () => window.geofence.onTransitionReceived = () => { };
});
}
/**
* Called when the user clicks a geofence notification. iOS and Android only.
*
@@ -153,7 +153,7 @@ export interface GeolocationOptions {
plugin: 'cordova-plugin-geolocation',
pluginRef: 'navigator.geolocation',
repo: 'https://github.com/apache/cordova-plugin-geolocation',
platforms: ['Android', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Geolocation extends IonicNativePlugin {
@@ -26,7 +26,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
plugin: 'cordova-plugin-globalization',
pluginRef: 'navigator.globalization',
repo: 'https://github.com/apache/cordova-plugin-globalization',
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Windows Phone 8', 'Widnows', 'Browser']
platforms: ['Amazon Fire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Globalization extends IonicNativePlugin {
@@ -34,7 +34,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
plugin: 'cordova-plugin-google-analytics',
pluginRef: 'ga',
repo: 'https://github.com/danwilson/google-analytics-plugin',
platforms: ['Android', 'iOS', 'Browser']
platforms: ['Android', 'Browser', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class GoogleAnalytics extends IonicNativePlugin {
@@ -102,7 +102,7 @@ export class GoogleAnalytics extends IonicNativePlugin {
/**
* Track custom metric
* @param key {string}
* @param key {number}
* @param value {any}
* @returns {Promise<any>}
*/
@@ -110,7 +110,7 @@ export class GoogleAnalytics extends IonicNativePlugin {
successIndex: 2,
errorIndex: 3
})
trackMetric(key: string, value?: any): Promise<any> { return; }
trackMetric(key: number, value?: number): Promise<any> { return; }
/**
* Track a screen
File diff suppressed because it is too large Load Diff
@@ -23,9 +23,9 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
plugin: 'cordova-plugin-googleplus',
pluginRef: 'window.plugins.googleplus',
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-googleplus',
platforms: ['Web', 'Android', 'iOS'],
install: 'ionic plugin add cordova-plugin-googleplus --variable REVERSED_CLIENT_ID=myreversedclientid',
installVariables: ['REVERSED_CLIENT_ID']
install: 'ionic cordova plugin add cordova-plugin-googleplus --variable REVERSED_CLIENT_ID=myreversedclientid',
installVariables: ['REVERSED_CLIENT_ID'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class GooglePlus extends IonicNativePlugin {
+61 -3
View File
@@ -59,9 +59,9 @@ export interface HTTPResponse {
*/
@Plugin({
pluginName: 'HTTP',
plugin: 'cordova-plugin-http',
plugin: 'cordova-plugin-advanced-http',
pluginRef: 'cordovaHTTP',
repo: 'https://github.com/wymsee/cordova-HTTP',
repo: 'https://github.com/silkimen/cordova-plugin-advanced-http',
platforms: ['Android', 'iOS']
})
@Injectable()
@@ -92,6 +92,34 @@ export class HTTP extends IonicNativePlugin {
@Cordova({ sync: true })
setHeader(header: string, value: string): void { }
/**
* Set the data serializer which will be used for all future POST and PUT requests. Takes a string representing the name of the serializer.
* @param serializer {string} The name of the serializer. Can be urlencoded or json
*/
@Cordova({ sync: true })
setDataSerializer(serializer: string): void { }
/**
* Clear all cookies
*/
@Cordova({ sync: true })
clearCookies(): void { }
/**
* Remove cookies
* @param url {string}
* @param cb
*/
@Cordova({ sync: true })
removeCookies(url: string, cb: () => void): void { }
/**
* Set request timeout
* @param timeout {number} The timeout in seconds. Default 60
*/
@Cordova({ sync: true })
setRequestTimeout(timeout: number): void { }
/**
* Enable or disable SSL Pinning. This defaults to false.
*
@@ -131,7 +159,7 @@ export class HTTP extends IonicNativePlugin {
post(url: string, body: any, headers: any): Promise<HTTPResponse> { return; }
/**
*
* Make a GET request
* @param url {string} The url to send the request to
* @param parameters {Object} Parameters to send with the request
* @param headers {Object} The headers to set for this request
@@ -140,6 +168,36 @@ export class HTTP extends IonicNativePlugin {
@Cordova()
get(url: string, parameters: any, headers: any): Promise<HTTPResponse> { return; }
/**
* Make a PUT request
* @param url {string} The url to send the request to
* @param body {Object} The body of the request
* @param headers {Object} The headers to set for this request
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
*/
@Cordova()
put(url: string, body: any, headers: any): Promise<HTTPResponse> { return; }
/**
* Make a DELETE request
* @param url {string} The url to send the request to
* @param parameters {Object} Parameters to send with the request
* @param headers {Object} The headers to set for this request
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
*/
@Cordova()
delete(url: string, parameters: any, headers: any): Promise<HTTPResponse> { return; }
/**
* Make a HEAD request
* @param url {string} The url to send the request to
* @param parameters {Object} Parameters to send with the request
* @param headers {Object} The headers to set for this request
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
*/
@Cordova()
head(url: string, parameters: any, headers: any): Promise<HTTPResponse> { return; }
/**
*
* @param url {string} The url to send the request to
+2 -2
View File
@@ -49,10 +49,10 @@ export interface HttpdOptions {
*/
@Plugin({
pluginName: 'Httpd',
plugin: 'https://github.com/floatinghotpot/cordova-httpd.git',
plugin: 'cordova-plugin-httpd',
pluginRef: 'cordova.plugins.CorHttpd',
repo: 'https://github.com/floatinghotpot/cordova-httpd',
platforms: ['iOS', 'Android']
platforms: ['Android', 'iOS', 'macOS']
})
@Injectable()
export class Httpd extends IonicNativePlugin {
@@ -0,0 +1,180 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @beta
* @name HyperTrack
* @description
* HyperTrack cordova plugin wrapper for Ionic Native. Location-based services provider.
* Make sure to include your publishable key at config.xml (see [HyperTrack Cordova Setup](https://docs.hypertrack.com/sdks/cordova/setup.html#step-2-configure-the-sdk)).
*
* @usage
* ```typescript
* import { HyperTrack } from '@ionic-native/hyper-track';
*
* constructor(private hyperTrack: HyperTrack) { }
*
* // Check if app has location permissions enabled
* this.hyperTrack.checkLocationPermission().then(response => {
* // response (String) can be "true" or "false"
* if (response != "true") {
* // Ask for permissions
* this.hyperTrack.requestPermissions().then(response => {}, error => {});
* }
* }, error => {});
*
* // Check if app has location services enabled
* this.hyperTrack.checkLocationServices().then(response => {
* // response (String) can be "true" or "false"
* if (response != "true") {
* // Request services to be enabled
* this.hyperTrack.requestLocationServices().then(response => {}, error => {});
* }
* }, error => {});
*
* // First set the current user. This can be done via getOrCreateUser() or setUserId()
* this.hyperTrack.setUserId("xxx").then(user => {
* // user (String) is a String representation of a User's JSON
*
* this.hyperTrack.startTracking().then(userId => {}, trackingError => {});
*
* this.hyperTrack.createAndAssignAction('visit', 'lookupId','address', 20.12, -100.3).then(action => {
* // Handle action. It's a String representation of the Action's JSON. For example:
* // '{"eta":"Jul 17, 2017 12:50:03 PM","assigned_at":"Jul 17, 2017 12:34:38 PM",,"distance":"0.0",...}'
* }, error => {});
*
* // You can complete an action with completeAction() or completeActionWithLookupId()
* this.hyperTrack.completeAction('action-id').then(response => {
* // Handle response (String). Should be "OK".
* }, error => {});
*
* this.hyperTrack.getCurrentLocation().then(location => {
* // Handle location. It's a String representation of a Location's JSON.For example:
* // '{"mAccuracy":22.601,,"mLatitude":23.123456, "mLongitude":-100.1234567, ...}'
* }, error => {});
*
* this.hyperTrack.stopTracking().then(success => {
* // Handle success (String). Should be "OK".
* }, error => {});
*
* }, error => {});*
* ```
*/
@Plugin({
pluginName: 'HyperTrack',
plugin: 'cordova-plugin-hypertrack',
pluginRef: 'cordova.plugins.HyperTrack',
repo: 'https://github.com/hypertrack/hypertrack-cordova',
platforms: ['Android']
})
@Injectable()
export class HyperTrack extends IonicNativePlugin {
/**
* Returns given text. For testing purposes.
* @param {String} text Given text to print
* @returns {Promise<any>} Returns a Promise that resolves with the result text (which is the same as the given text) if successful, or it gets rejected if an error ocurred.
*/
@Cordova()
helloWorld(text: String): Promise<String> { return; }
/**
* Create a new user to identify the current device or get a user from a lookup id.
* @param {String} name User's name
* @param {String} phone User's phone
* @param {String} photo User's photo as URL or a Base64 converted string
* @param {String} lookupId User's lookupId, which is used to check if a new user is to be created (in this case you could set it to an internal reference for the user that you can use later to identify it), or if one with an existing lookupId is to be used.
* @returns {Promise<any>} Returns a Promise that resolves with a string representation of the User's JSON, or it gets rejected if an error ocurred.
*/
@Cordova()
getOrCreateUser(name: String, phone: String, photo: String, lookupId: String): Promise<any> { return; }
/**
* Set UserId for the SDK created using HyperTrack APIs. This is useful if you already have a user previously created.
* @param {String} userId User's ID
* @returns {Promise<any>} Returns a Promise that resolves with an "OK" string if successful, or it gets rejected if an error ocurred. An "OK" response doesn't necessarily mean that the userId was found. It just means that it was set correctly.
*/
@Cordova()
setUserId(userId: String): Promise<any> { return; }
/**
* Enable the SDK and start tracking. This will fail if there is no user set.
* @returns {Promise<any>} Returns a Promise that resolves with the userId (String) of the User being tracked if successful, or it gets rejected if an error ocurred. One example of an error is not setting a User with getOrCreateUser() or setUserId() before calling this function.
*/
@Cordova()
startTracking(): Promise<any> { return; }
/**
* Create and assign an action to the current user using specified parameters
* @param {String} type The action type. Can be one from "pickup", "delivery", "dropoff", "visit", "stopover" or "task"
* @param {String} lookupId The Action's desired lookupId
* @param {String} expectedPlaceAddress The address of the Action
* @param {Number} expectedPlaceLatitude The latitude of the Action
* @param {Number} expectedPlaceLongitude The longitude of the Action
* @returns {Promise<any>} Returns a Promise that resolves with a string representation of the Action's JSON, or it gets rejected if an error ocurred.
*/
@Cordova()
createAndAssignAction(type: String, lookupId: String, expectedPlaceAddress: String, expectedPlaceLatitude: Number, expectedPlaceLongitude: Number): Promise<any> { return; }
/**
* Complete an action from the SDK by its ID
* @param {String} actionId ID of the Action that will be marked as completed
* @returns {Promise<any>} Returns a Promise that resolves with an "OK" string if successful, or it gets rejected if an error ocurred.
*/
@Cordova()
completeAction(actionId: String): Promise<any> { return; }
/**
* Complete an action from the SDK using Action's lookupId as parameter
* @param {String} lookupId Lookup ID of the Action that will be marked as completed
* @returns {Promise<any>} Returns a Promise that resolves with an "OK" string if successful, or it gets rejected if an error ocurred.
*/
@Cordova()
completeActionWithLookupId(lookupId: String): Promise<any> { return; }
/**
* Disable the SDK and stop tracking.
* Needs user setting (via getOrCreateUser() or setUserId()) first.
* @returns {Promise<any>} Returns a Promise that resolves with the an "OK" string if successful, or it gets rejected if an error ocurred. One example of an error is not setting a User with getOrCreateUser() or setUserId() before calling this function.
*/
@Cordova()
stopTracking(): Promise<any> { return; }
/**
* Get user's current location from the SDK
* @returns {Promise<any>} Returns a Promise that resolves with a string representation of the Location's JSON, or it gets rejected if an error ocurred.
*/
@Cordova()
getCurrentLocation(): Promise<any> { return; }
/**
* Check if Location permission has been granted to the app (for Android).
* Returns "true" or "false" in success method accordingly.
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if location permission was granted, or it gets rejected if an error ocurred.
*/
@Cordova()
checkLocationPermission(): Promise<any> { return; }
/**
* Request user to grant Location access to the app (for Anrdoid).
* For Android Marshmallow and above. In other platforms, the Promise is never resolved.
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if Location access was given to the app, or it gets rejected if an error ocurred.
*/
@Cordova()
requestPermissions(): Promise<any> { return; }
/**
* Check if Location services are enabled on the device (for Android).
* Returns "true" or "false" in success method accordingly.
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if location services are enabled, or it gets rejected if an error ocurred.
*/
@Cordova()
checkLocationServices(): Promise<any> { return; }
/**
* Request user to enable Location services on the device.
* For Android Marshmallow and above. In other platforms, the Promise is never resolved.
* @returns {Promise<any>} Returns a Promise that resolves with the a string that can be "true" or "false", depending if Location services were enabled, or it gets rejected if an error ocurred.
*/
@Cordova()
requestLocationServices(): Promise<any> { return; }
}
+2 -2
View File
@@ -16,7 +16,7 @@ export interface Beacon {
major: number;
/**
* The beacon's major identifier number.
* The beacon's minor identifier number.
*/
minor: number;
@@ -636,7 +636,7 @@ export class IBeacon extends IonicNativePlugin {
* native layer acknowledged the dispatch of the advertising request.
*/
@Cordova({ otherPromise: true })
startAdvertising(region: Region, measuredPower: number): Promise<void> { return; }
startAdvertising(region: Region, measuredPower?: number): Promise<void> { return; }
/**
* Stop advertising as a beacon.
@@ -57,9 +57,11 @@ export interface ImagePickerOptions {
*/
@Plugin({
pluginName: 'ImagePicker',
plugin: 'https://github.com/Telerik-Verified-Plugins/ImagePicker',
plugin: 'cordova-plugin-telerik-imagepicker',
pluginRef: 'window.imagePicker',
repo: 'https://github.com/Telerik-Verified-Plugins/ImagePicker',
install: 'ionic cordova plugin add cordova-plugin-telerik-imagepicker --variable PHOTO_LIBRARY_USAGE_DESCRIPTION="your usage message"',
installVariables: ['PHOTO_LIBRARY_USAGE_DESCRIPTION'],
platforms: ['Android', 'iOS']
})
@Injectable()
@@ -42,11 +42,6 @@ export interface ImageResizerOptions {
* @description
* Cordova Plugin For Image Resize
*
* Requires plugin `info.protonet.imageresizer` - use the Ionic CLI and type in the following command:
* `ionic plugin add https://github.com/protonet/cordova-plugin-image-resizer.git`
*
* For more info, please see the https://github.com/protonet/cordova-plugin-image-resizer
*
* @usage
* ```typescript
* import { ImageResizer, ImageResizerOptions } from '@ionic-native/image-resizer';
@@ -74,9 +69,9 @@ export interface ImageResizerOptions {
*/
@Plugin({
pluginName: 'ImageResizer',
plugin: 'https://github.com/protonet/cordova-plugin-image-resizer.git',
plugin: 'info.protonet.imageresizer',
pluginRef: 'ImageResizer',
repo: 'https://github.com/protonet/cordova-plugin-image-resizer',
repo: 'https://github.com/JoschkaSchulz/cordova-plugin-image-resizer',
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
@@ -181,7 +181,7 @@ export class InAppBrowserObject {
plugin: 'cordova-plugin-inappbrowser',
pluginRef: 'cordova.InAppBrowser',
repo: 'https://github.com/apache/cordova-plugin-inappbrowser',
platforms: ['Amazon', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Ubuntu', 'Windows', 'Windows Phone']
platforms: ['AmazonFire OS', 'Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'macOS', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class InAppBrowser extends IonicNativePlugin {
@@ -0,0 +1,429 @@
import { Plugin, IonicNativePlugin, Cordova, CordovaProperty } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name In App Purchase 2
* @description
* In-App Purchase for Cordova on iOS, Android and Windows
*
* @usage
* ```typescript
* import { InAppPurchase2 } from '@ionic-native/in-app-purchase-2';
*
* constructor(private store: InAppPurchase2) { }
*
* ...
* ```
*
* * @advanced
*
* ```typescript
* // After Platform Ready
* this.store.verbosity = this.store.DEBUG;
* this.store.register({
* id: productId,
* alias: productId,
* type: this.store.NON_RENEWING_SUBSCRIPTION
* });
*
* // Register Event Handlers for the specific product
* this.store.when(productId).registered( (product: IAPProduct) => {
* console.log('Registered: ' + JSON.stringify(product));
* });
*
* // Updated
* this.store.when(productId).updated( (product: IAPProduct) => {
* console.log('Loaded' + JSON.stringify(product));
* });
*
* // Issue with buying
* this.store.when(productId).cancelled( (product) => {
* alert('Purchase was Cancelled');
* });
*
* // Track All Store Errors
* this.store.error( (err) => {
* alert('Store Error ' + JSON.stringify(err));
* });
*
* this.store.ready().then((status) => {
* console.log(JSON.stringify(this.store.get(productId)));
* console.log('Store is Ready: ' + JSON.stringify(status));
* console.log('Products: ' + JSON.stringify(this.store.products));
* });
*
*
* // Errors
* this.store.when(productId).error( (error) => {
* this.loader.dismiss();
* alert('An Error Occured' + JSON.stringify(error));
* });
* // Refresh Starts Handlers
* console.log('Refresh Store');
* this.store.refresh();
*
* ...
*
* // To Purchase
* this.store.order(productId);
*
* ```
*
*/
export interface IAPProductOptions {
id: string;
alias: string;
type: string;
}
export type IAPProducts = Array<IAPProduct> & {
/**
* Get product by ID
*/
byId: { [id: string]: IAPProduct; };
/**
* Get product by alias
*/
byAlias: { [alias: string]: IAPProduct; };
/**
* Remove all products (for testing only).
*/
reset: () => {};
};
export type IAPQueryCallback = ((product: IAPProduct) => void) | ((error: IAPError) => void);
export interface IAPProduct {
id: string;
alias: string;
type: string;
state: string;
title: string;
description: string;
priceMicros: string;
price: string;
currency: string;
loaded: boolean;
valid: boolean;
canPurchase: boolean;
owned: boolean;
downloading: boolean;
downloaded: boolean;
additionalData: any;
transaction: any;
finish(): void;
verify(): any;
set(key: string, value: any): void;
stateChanged(): void;
on(event: string, callback: Function): void;
once(event: string, callback: Function): void;
off(callback: Function): void;
trigger(action: string, args: any): void;
}
export interface IAPProductEvents {
loaded: (callback: IAPQueryCallback) => void;
updated: (callback: IAPQueryCallback) => void;
error: (callback: IAPQueryCallback) => void;
approved: (callback: IAPQueryCallback) => void;
owned: (callback: IAPQueryCallback) => void;
cancelled: (callback: IAPQueryCallback) => void;
refunded: (callback: IAPQueryCallback) => void;
registered: (callback: IAPQueryCallback) => void;
valid: (callback: IAPQueryCallback) => void;
invalid: (callback: IAPQueryCallback) => void;
requested: (callback: IAPQueryCallback) => void;
initiated: (callback: IAPQueryCallback) => void;
finished: (callback: IAPQueryCallback) => void;
verified: (callback: IAPQueryCallback) => void;
unverified: (callback: IAPQueryCallback) => void;
expired: (callback: IAPQueryCallback) => void;
downloading: (product: IAPProduct, progress: any, time_remaining: any) => void;
downloaded: (callback: IAPQueryCallback) => void;
}
/**
* @hidden
*/
export class IAPError {
code: number;
message: string;
}
/**
* @name In App Purchase 2
* @description
*
* @usage
* ```
* import { InAppPurchase2 } from '@ionic-native/in-app-purchase-2';
*
*
* constructor(private inAppPurchase2: InAppPurchase2) { }
*
* ...
*
*
* ```
*/
@Plugin({
pluginName: 'InAppPurchase2',
plugin: 'cc.fovea.cordova.purchase',
pluginRef: 'store',
repo: 'https://github.com/j3k0/cordova-plugin-purchase',
platforms: ['iOS', 'Android', 'Windows'],
install: 'ionic cordova plugin add cc.fovea.cordova.purchase --variable BILLING_KEY="<ANDROID_BILLING_KEY>"'
})
@Injectable()
export class InAppPurchase2 extends IonicNativePlugin {
@CordovaProperty
QUIET: number;
@CordovaProperty
ERROR: number;
@CordovaProperty
WARNING: number;
@CordovaProperty
INFO: number;
@CordovaProperty
DEBUG: number;
/**
* Debug level. Use QUIET, ERROR, WARNING, INFO or DEBUG constants
*/
@CordovaProperty
verbosity: number;
/**
* Set to true to invoke the platform purchase sandbox. (Windows only)
*/
@CordovaProperty
sandbox: boolean;
@CordovaProperty
FREE_SUBSCRIPTION: string;
@CordovaProperty
PAID_SUBSCRIPTION: string;
@CordovaProperty
NON_RENEWING_SUBSCRIPTION: string;
@CordovaProperty
CONSUMABLE: string;
@CordovaProperty
NON_CONSUMABLE: string;
@CordovaProperty
ERR_SETUP: number;
@CordovaProperty
ERR_LOAD: number;
@CordovaProperty
ERR_PURCHASE: number;
@CordovaProperty
ERR_LOAD_RECEIPTS: number;
@CordovaProperty
ERR_CLIENT_INVALID: number;
@CordovaProperty
ERR_PAYMENT_CANCELLED: number;
@CordovaProperty
ERR_PAYMENT_INVALID: number;
@CordovaProperty
ERR_PAYMENT_NOT_ALLOWED: number;
@CordovaProperty
ERR_UNKNOWN: number;
@CordovaProperty
ERR_REFRESH_RECEIPTS: number;
@CordovaProperty
ERR_INVALID_PRODUCT_ID: number;
@CordovaProperty
ERR_FINISH: number;
@CordovaProperty
ERR_COMMUNICATION: number;
@CordovaProperty
ERR_SUBSCRIPTIONS_NOT_AVAILABLE: number;
@CordovaProperty
ERR_MISSING_TOKEN: number;
@CordovaProperty
ERR_VERIFICATION_FAILED: number;
@CordovaProperty
ERR_BAD_RESPONSE: number;
@CordovaProperty
ERR_REFRESH: number;
@CordovaProperty
ERR_PAYMENT_EXPIRED: number;
@CordovaProperty
ERR_DOWNLOAD: number;
@CordovaProperty
ERR_SUBSCRIPTION_UPDATE_NOT_AVAILABLE: number;
@CordovaProperty
REGISTERED: string;
@CordovaProperty
INVALID: string;
@CordovaProperty
VALID: string;
@CordovaProperty
REQUESTED: string;
@CordovaProperty
INITIATED: string;
@CordovaProperty
APPROVED: string;
@CordovaProperty
FINISHED: string;
@CordovaProperty
OWNED: string;
@CordovaProperty
DOWNLOADING: string;
@CordovaProperty
DOWNLOADED: string;
@CordovaProperty
INVALID_PAYLOAD: number;
@CordovaProperty
CONNECTION_FAILED: number;
@CordovaProperty
PURCHASE_EXPIRED: number;
@CordovaProperty
products: IAPProducts;
@CordovaProperty
validator: string | ((product: string | IAPProduct, callback: Function) => void);
@CordovaProperty
log: {
error: (message: string) => void;
warn: (message: string) => void;
info: (message: string) => void;
debug: (message: string) => void;
};
/**
* Get product by id or alias
* @param idOrAlias
*/
@Cordova({ sync: true })
get(idOrAlias: string): IAPProduct { return; }
/**
* Register error handler
* @param onError {Function} function to call on error
*/
@Cordova({ sync: true })
error(onError: Function): void {}
/**
* Add or register a product
* @param product {IAPProductOptions}
*/
@Cordova({ sync: true})
register(product: IAPProductOptions): void {}
/**
*
* @param query
* @param event
* @param callback
* @return {IAPProductEvents}
*/
@Cordova({ sync: true })
when(query: string | IAPProduct, event?: string, callback?: IAPQueryCallback): IAPProductEvents { return; }
/**
* Identical to `when`, but the callback will be called only once. After being called, the callback will be unregistered.
* @param query {string | IAPProduct}
* @param [event] {event}
* @param [callback] {IAPQueryCallback}
* @return {IAPProductEvents}
*/
@Cordova({ sync: true })
once(query: string | IAPProduct, event?: string, callback?: IAPQueryCallback): IAPProductEvents { return; }
/**
* Unregister a callback. Works for callbacks registered with ready, when, once and error.
* @param callback {Function}
*/
@Cordova({ sync: true })
off(callback: Function): void {}
@Cordova({ sync: true })
order(product: string | IAPProduct, additionalData?: any): { then: Function; error: Function; } { return; }
/**
*
* @return {Promise<any>} returns a promise that resolves when the store is ready
*/
@Cordova()
ready(): Promise<void> { return; }
@Cordova({ sync: true })
refresh(): void {}
}
@@ -57,8 +57,8 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
pluginName: 'InAppPurchase',
plugin: 'cordova-plugin-inapppurchase',
pluginRef: 'inAppPurchase',
platforms: ['Android', 'iOS'],
repo: 'https://github.com/AlexDisler/cordova-plugin-inapppurchase'
repo: 'https://github.com/AlexDisler/cordova-plugin-inapppurchase',
platforms: ['Android', 'iOS']
})
@Injectable()
export class InAppPurchase extends IonicNativePlugin {
+2 -2
View File
@@ -31,10 +31,10 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
*/
@Plugin({
pluginName: 'Insomnia',
plugin: 'https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin.git',
plugin: 'cordova-plugin-insomnia',
pluginRef: 'plugins.insomnia',
repo: 'https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin',
platforms: ['Android', 'iOS', 'Windows Phone 8']
platforms: ['Android', 'Browser', 'Firefox OS', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class Insomnia extends IonicNativePlugin {
@@ -53,7 +53,7 @@ export interface IntelSecurityDataOptions {
* .catch((error: any) => console.log(error));
*
* this.intelSecurity.storage.read({id: storageID })
* .then((instanceID: number) => this.intelSec.data.getData(instanceID))
* .then((instanceID: number) => this.intelSecurity.data.getData(instanceID))
* .then((data: string) => console.log(data)) // Resolves to 'Sample Data'
* .catch((error: any) => console.log(error));
*
@@ -72,7 +72,7 @@ export interface IntelSecurityDataOptions {
plugin: 'com-intel-security-cordova-plugin',
pluginRef: 'intel.security',
repo: 'https://github.com/AppSecurityApi/com-intel-security-cordova-plugin',
platforms: ['Android', 'iOS', 'Windows']
platforms: ['Android', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class IntelSecurity extends IonicNativePlugin {
+2 -2
View File
@@ -24,7 +24,7 @@ import { Observable } from 'rxjs/Observable';
pluginName: 'Keyboard',
plugin: 'ionic-plugin-keyboard',
pluginRef: 'cordova.plugins.Keyboard',
repo: 'https://github.com/driftyco/ionic-plugin-keyboard',
repo: 'https://github.com/ionic-team/ionic-plugin-keyboard',
platforms: ['Android', 'BlackBerry 10', 'iOS', 'Windows']
})
@Injectable()
@@ -57,7 +57,7 @@ export class Keyboard extends IonicNativePlugin {
/**
* Prevents the native UIScrollView from moving when an input is focused.
* @param disable
* @param disable {boolean}
*/
@Cordova({
sync: true,
@@ -0,0 +1,88 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Keychain Touch Id
* @description
* A cordova plugin adding the iOS TouchID / Android fingerprint to your
* app and allowing you to store a password securely in the device keychain.
*
* @usage
* ```typescript
* import { KeychainTouchId } from '@ionic-native/keychain-touch-id';
*
*
* constructor(private keychainTouchId: KeychainTouchId) { }
*
* ...
*
*
* this.keychainTouchId.isAvailable()
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'KeychainTouchId',
plugin: 'cordova-plugin-keychain-touch-id',
pluginRef: 'plugins.touchid',
repo: 'https://github.com/sjhoeksma/cordova-plugin-keychain-touch-id',
platforms: ['Android', 'iOS']
})
@Injectable()
export class KeychainTouchId extends IonicNativePlugin {
/**
* Check if Touch ID / Fingerprint is supported by the device
* @return {Promise<any>} Returns a promise that resolves when there is hardware support
*/
@Cordova()
isAvailable(): Promise<any> {
return;
}
/**
* Encrypts and Saves a password under the key in the device keychain, which can be retrieved after
* successful authentication using fingerprint
* @param key {string} the key you want to store
* @param password {string} the password you want to encrypt and store
* @return {Promise<any>} Returns a promise that resolves when there is a result
*/
@Cordova()
save(key: string, password: string): Promise<any> { return; }
/**
* Opens the fingerprint dialog, for the given key, showing an additional message. Promise will resolve
* with the password stored in keychain or will resolve an error code, where -1 indicated not available.
* @param key {string} the key you want to retrieve from keychain
* @param message {string} a message to the user
* @return {Promise<any>} Returns a promise that resolves when the key value is successfully retrieved or an error
*/
@Cordova()
verify(key: string, message: string): Promise<any> { return; }
/**
* Checks if there is a password stored within the keychain for the given key.
* @param key {string} the key you want to check from keychain
* @return {Promise<any>} Returns a promise that resolves with success if the key is available or failure if key is not.
*/
@Cordova()
has(key: string): Promise<any> { return; }
/**
* Deletes the password stored under given key from the keychain.
* @param key {string} the key you want to delete from keychain
* @return {Promise<any>} Returns a promise that resolves with success if the key is deleted or failure if key is not
*/
@Cordova()
delete(key: string): Promise<any> { return; }
/**
* Sets the language of the fingerprint dialog
* @param locale {string} locale subtag from [this list](https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).
*/
@Cordova()
setLocale(locale: string): void {}
}
+4 -2
View File
@@ -7,7 +7,9 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* @description
* Get and set data in the iOS Keychain
*
* Requires Cordova plugin: `cordova-plugin-ios-keychain`. For more info, please see the [Keychain plugin docs](https://github.com/driftyco/cordova-plugin-ios-keychain).
* Requires Cordova plugin: `cordova-plugin-ios-keychain`. For more info, please see the [Keychain plugin docs](https://github.com/ionic-team/cordova-plugin-ios-keychain).
*
* See also [Secure Storage](https://ionicframework.com/docs/native/secure-storage/) for more supported platforms.
*
* @usage
* ```typescript
@@ -29,7 +31,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
pluginName: 'Keychain',
plugin: 'cordova-plugin-ios-keychain',
pluginRef: 'window.Keychain',
repo: 'https://github.com/driftyco/cordova-plugin-ios-keychain/',
repo: 'https://github.com/ionic-team/cordova-plugin-ios-keychain',
platforms: ['iOS']
})
@Injectable()
@@ -1,10 +1,125 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface PromptsOptions {
/**
* a function to pass the user's decision whether to remember their choice of app.
* This will be passed a single boolean value indicating the user's decision.
* @param rememberChoice
*/
callback?: (rememberChoice: boolean) => void;
/**
* text to display in the native prompt header asking user whether to remember their choice.
* Defaults to "Remember your choice?" if not specified.
*/
headerText?: string;
/**
* text to display in the native prompt body asking user whether to remember their choice.
* Defaults to "Use the same app for navigating next time?" if not specified.
*/
bodyText?: string;
/**
* text to display for the Yes button.
* Defaults to "Yes" if not specified.
*/
yesButtonText?: string;
/**
* text to display for the No button.
* Defaults to "No" if not specified.
*/
noButtonText?: string;
}
export interface RememberChoiceOptions {
/**
* whether to remember user choice of app for next time, instead of asking again for user choice.
* `"prompt"` - Prompt user to decide whether to remember choice.
* - Default value if unspecified.
* - If `promptFn` is defined, this will be used for user confirmation.
* - Otherwise (by default), a native dialog will be displayed to ask user.
* `false` - Do not remember user choice.
* `true` - Remember user choice.
*/
enabled?: boolean | string;
/**
* a function which asks the user whether to remember their choice of app.
* If this is defined, then the default dialog prompt will not be shown, allowing for a custom UI for asking the user.
* This will be passed a callback function which should be invoked with a single boolean argument which indicates the user's decision to remember their choice.
* @param callback
*/
promptFn?: (callback: (rememberChoice: boolean) => void) => void;
/**
* options related to the default dialog prompt used to ask the user whether to remember their choice of app.
*/
prompt?: PromptsOptions;
}
export interface AppSelectionOptions {
/**
* text to display in the native picker which enables user to select which navigation app to launch.
* Defaults to "Select app for navigation" if not specified.
*/
dialogHeaderText?: string;
/**
* text to display for the cancel button in the native picker which enables user to select which navigation app to launch.
* Defaults to "Cancel" if not specified.
*/
cancelButtonText?: string;
/**
* List of apps, defined as `launchnavigator.APP` constants, which should be displayed in the picker if the app is available.
* This can be used to restrict which apps are displayed, even if they are installed.
* By default, all available apps will be displayed.
*/
list?: string[];
/**
* Callback to invoke when the user selects an app in the native picker.
* A single string argument is passed which is the app what was selected defined as a `launchnavigator.APP` constant.
*/
callback?: (app: string) => void;
/**
* (Android only) native picker theme. Specify using `actionsheet.ANDROID_THEMES` constants.
* Default `actionsheet.ANDROID_THEMES.THEME_HOLO_LIGHT`
*/
androidTheme?: number;
/**
* options related to whether to remember user choice of app for next time, instead of asking again for user choice.
*/
rememberChoice?: RememberChoiceOptions;
}
export interface LaunchNavigatorOptions {
/**
* name of the navigation app to use for directions. Specify using launchnavigator.APP constants. If not specified, defaults to User Selection.
* A callback to invoke when the navigation app is successfully launched.
*/
successCallback?: Function;
/**
* A callback to invoke if an error is encountered while launching the app.
* A single string argument containing the error message will be passed in.
*/
errorCallback?: (error: string) => void;
/**
* name of the navigation app to use for directions.
* Specify using launchnavigator.APP constants.
* e.g. `launchnavigator.APP.GOOGLE_MAPS`.
* If not specified, defaults to User Selection.
*/
app?: string;
@@ -14,7 +129,12 @@ export interface LaunchNavigatorOptions {
destinationName?: string;
/**
* Start point of the navigation
* Start point of the navigation.
* If not specified, the current device location will be used.
* Either:
* - a {string} containing the address. e.g. "Buckingham Palace, London"
* - a {string} containing a latitude/longitude coordinate. e.g. "50.1. -4.0"
* - an {array}, where the first element is the latitude and the second element is a longitude, as decimal numbers. e.g. [50.1, -4.0]
*/
start?: string | number[];
@@ -39,23 +159,82 @@ export interface LaunchNavigatorOptions {
extras?: any;
/**
* (Android only) mode in which to open Google Maps app: "maps" or "turn-by-turn". Defaults to "maps" if not specified. Specify using launchnavigator.LAUNCH_MODE constants.
* (Android only) mode in which to open Google Maps app.
* `launchnavigator.LAUNCH_MODE.MAPS` or `launchnavigator.LAUNCH_MODE.TURN_BY_TURN`
* Defaults to `launchnavigator.LAUNCH_MODE.MAPS` if not specified.
*/
launchMode?: string;
launchModeGoogleMaps?: string;
/**
* text to display in the native picker which enables user to select which navigation app to launch. Defaults to "Select app for navigation" if not specified.
* (iOS only) method to use to open Apple Maps app.
* `launchnavigator.LAUNCH_MODE.URI_SCHEME` or `launchnavigator.LAUNCH_MODE.MAPKIT`
* Defaults to `launchnavigator.LAUNCH_MODE.URI_SCHEME` if not specified.
*/
appSelectionDialogHeader?: string;
launchModeAppleMaps?: string;
/**
* text to display for the cancel button in the native picker which enables user to select which navigation app to launch. Defaults to "Cancel" if not specified.
* If true, and input location type(s) doesn't match those required by the app, use geocoding to obtain the address/coords as required. Defaults to true.
*/
appSelectionCancelButton?: string;
enableGeolocation?: boolean;
successCallback?: Function;
/**
* options related to the default native actionsheet picker which enables user to select which navigation app to launch if `app` is not specified.
*/
appSelection?: AppSelectionOptions;
}
errorCallback?: Function;
export interface UserChoice {
/**
* Indicates whether a user choice exists for a preferred navigator app.
* @param callback - function to pass result to: will receive a boolean argument.
*/
exists: (callback: (exists: boolean) => void) => void;
/**
* Returns current user choice of preferred navigator app.
* @param callback - function to pass result to: will receive a string argument indicating the app, which is a constant in `launchnavigator.APP`.
*/
get: (callback: (app: string) => void) => void;
/**
* Sets the current user choice of preferred navigator app.
* @param app - app to set as preferred choice as a constant in `launchnavigator.APP`.
* @param callback - function to call once operation is complete.
*/
set: (app: string, callback: () => void) => void;
/**
* Clears the current user choice of preferred navigator app.
* @param callback - function to call once operation is complete.
*/
clear: (callback: () => void) => void;
}
export interface UserPrompted {
/**
* Indicates whether user has already been prompted whether to remember their choice a preferred navigator app.
* @param callback - function to pass result to: will receive a boolean argument.
*/
get: (callback: (exists: boolean) => void) => void;
/**
* Sets flag indicating user has already been prompted whether to remember their choice a preferred navigator app.
* @param callback - function to call once operation is complete.
*/
set: ( callback: () => void) => void;
/**
* Clears flag which indicates if user has already been prompted whether to remember their choice a preferred navigator app.
* @param callback - function to call once operation is complete.
*/
clear: ( callback: () => void) => void;
}
export interface AppSelection {
userChoice: UserChoice;
userPrompted: UserPrompted;
}
/**
@@ -86,17 +265,47 @@ export interface LaunchNavigatorOptions {
* ```
* @interfaces
* LaunchNavigatorOptions
* PromptsOptions
* RememberChoiceOptions
* AppSelectionOptions
* UserChoice
* UserPrompted
* AppSelection
*/
@Plugin({
pluginName: 'LaunchNavigator',
plugin: 'uk.co.workingedge.phonegap.plugin.launchnavigator',
pluginRef: 'launchnavigator',
repo: 'https://github.com/dpa99c/phonegap-launch-navigator',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class LaunchNavigator extends IonicNativePlugin {
APP: any = {
USER_SELECT: 'user_select',
APPLE_MAPS: 'apple_maps',
GOOGLE_MAPS: 'google_maps',
WAZE: 'waze',
CITYMAPPER: 'citymapper',
NAVIGON: 'navigon',
TRANSIT_APP: 'transit_app',
YANDEX: 'yandex',
UBER: 'uber',
TOMTOM: 'tomtom',
BING_MAPS: 'bing_maps',
SYGIC: 'sygic',
HERE_MAPS: 'here_maps',
MOOVIT: 'moovit'
};
TRANSPORT_MODE: any = {
DRIVING: 'driving',
WALKING: 'walking',
BICYCLING: 'bicycling',
TRANSIT: 'transit'
};
/**
* Launches navigator app
* @param destination {string|number[]} Location name or coordinates (as string or array)
@@ -107,10 +316,7 @@ export class LaunchNavigator extends IonicNativePlugin {
successIndex: 1,
errorIndex: 2
})
navigate(
destination: string | number[],
options?: LaunchNavigatorOptions
): Promise<any> { return; }
navigate(destination: string | number[], options?: LaunchNavigatorOptions): Promise<any> { return; }
/**
* Determines if the given app is installed and available on the current device.
@@ -162,14 +368,12 @@ export class LaunchNavigator extends IonicNativePlugin {
getTransportModes(app: string, platform: string): string[] { return; }
/**
* Indicates if an app on a given platform supports specification of launch mode.
* Note that currently only Google Maps on Android does.
* @param app {string}
* @param platform {string}
* @returns {boolean}
*/
@Cordova({ sync: true })
supportsLaunchMode(app: string, platform: string): boolean { return; }
supportsDestName(app: string, platform: string): boolean { return; }
/**
* Indicates if an app on a given platform supports specification of start location.
@@ -189,41 +393,21 @@ export class LaunchNavigator extends IonicNativePlugin {
supportsStartName(app: string, platform: string): boolean { return; }
/**
* Indicates if an app on a given platform supports specification of launch mode.
* Note that currently only Google Maps on Android does.
* @param app {string}
* @param platform {string}
* @returns {boolean}
*/
@Cordova({ sync: true })
supportsDestName(app: string, platform: string): boolean { return; }
supportsLaunchMode(app: string, platform: string): boolean { return; }
/**
* @param destination {string | number[]}
* @param options {LaunchNavigatorOptions}
*/
@Cordova({ sync: true })
userSelect(destination: string | number[], options: LaunchNavigatorOptions): void { }
userSelect(destination: string | number[], options: LaunchNavigatorOptions): void {}
APP: any = {
USER_SELECT: 'user_select',
APPLE_MAPS: 'apple_maps',
GOOGLE_MAPS: 'google_maps',
WAZE: 'waze',
CITYMAPPER: 'citymapper',
NAVIGON: 'navigon',
TRANSIT_APP: 'transit_app',
YANDEX: 'yandex',
UBER: 'uber',
TOMTOM: 'tomtom',
BING_MAPS: 'bing_maps',
SYGIC: 'sygic',
HERE_MAPS: 'here_maps',
MOOVIT: 'moovit'
};
TRANSPORT_MODE: any = {
DRIVING: 'driving',
WALKING: 'walking',
BICYCLING: 'bicycling',
TRANSIT: 'transit'
};
appSelection: AppSelection;
}
+3 -2
View File
@@ -52,8 +52,9 @@ export type LinkedInLoginScopes = 'r_basicprofile' | 'r_emailaddress' | 'rw_comp
pluginName: 'LinkedIn',
plugin: 'cordova-plugin-linkedin',
pluginRef: 'cordova.plugins.LinkedIn',
repo: 'https://github.com/zyramedia/cordova-plugin-linkedin',
install: 'ionic plugin add cordova-plugin-linkedin --variable APP_ID=YOUR_APP_ID',
repo: 'https://github.com/zyra/cordova-plugin-linkedin',
install: 'ionic cordova plugin add cordova-plugin-linkedin --variable APP_ID=YOUR_APP_ID',
installVariables: ['APP_ID'],
platforms: ['Android', 'iOS']
})
@Injectable()
@@ -89,6 +89,11 @@ export interface ILocalNotification {
* Default: FFFFFF
*/
led?: string;
/**
* Notification priority.
*/
priority?: number;
}
/**
@@ -319,5 +324,15 @@ export class LocalNotifications extends IonicNativePlugin {
})
on(eventName: string, callback: any): void { }
/**
* Removes a callback of a specific event
* @param eventName The name of the event. Available events: schedule, trigger, click, update, clear, clearall, cancel, cancelall
* @param callback Call back function. All events return notification and state parameter. clear and clearall return state parameter only.
*/
@Cordova({
sync: true
})
un(eventName: string, callback: any): void { }
}
@@ -146,7 +146,8 @@ export interface ConfigurationData {
pluginName: 'MediaCapture',
plugin: 'cordova-plugin-media-capture',
pluginRef: 'navigator.device.capture',
repo: 'https://github.com/apache/cordova-plugin-media-capture'
repo: 'https://github.com/apache/cordova-plugin-media-capture',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class MediaCapture extends IonicNativePlugin {
+114 -50
View File
@@ -1,15 +1,62 @@
import { Injectable } from '@angular/core';
import { CordovaInstance, Plugin, checkAvailability, IonicNativePlugin } from '@ionic-native/core';
declare const Media: any;
// TODO for ionic native 4.x ... rename plugin class to Media and use Media.getPlugin() to retrieve the original media object
import { CordovaInstance, Plugin, checkAvailability, IonicNativePlugin, InstanceProperty } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observer } from 'rxjs/Observer';
/**
* @hidden
*/
export class MediaObject {
constructor(private _objectInstance: any) {}
/**
* An observable that notifies you on actions success
*/
onSuccess: Observable<any>;
/**
* An observable that notifies you when an error occurs
*/
onError: Observable<MEDIA_ERROR>;
/**
* An observable that notifies you when the file status changes
*/
onStatusUpdate: Observable<MEDIA_STATUS>;
/**
* @hidden
*/
@InstanceProperty
successCallback: Function;
/**
* @hidden
*/
@InstanceProperty
errorCallback: Function;
/**
* @hidden
*/
@InstanceProperty
statusCallback: Function;
constructor(private _objectInstance: any) {
this.onSuccess = new Observable<any>((observer: Observer<any>) => {
this.successCallback = observer.next.bind(observer);
return () => this.successCallback = () => {};
});
this.onError = new Observable<MEDIA_ERROR>((observer: Observer<MEDIA_ERROR>) => {
this.errorCallback = observer.next.bind(observer);
return () => this.errorCallback = () => {};
});
this.onStatusUpdate = new Observable<MEDIA_STATUS>((observer: Observer<MEDIA_STATUS>) => {
this.statusCallback = observer.next.bind(observer);
return () => this.statusCallback = () => {};
});
}
/**
* Get the current amplitude of the current recording.
@@ -67,6 +114,9 @@ export class MediaObject {
@CordovaInstance({ sync: true })
setVolume(volume: number): void { }
@CordovaInstance({ sync: true })
setRate(speedRate: number): void {}
/**
* Starts recording an audio file.
*/
@@ -115,55 +165,51 @@ export interface MediaError {
}
export enum MEDIA_STATUS {
NONE = 0,
STARTING,
RUNNING,
PAUSED,
STOPPED
}
export enum MEDIA_ERROR {
ABORTED = 1,
NETWORK,
DECODE,
SUPPORTED
}
export type MediaErrorCallback = (error: MediaError) => void;
/**
* @name Media
* @description
* Some hints if you are using iOS and recording doesn't work:
* 1.) Try to use a absolute file path but remove beginning "file://".
* Then it looks like: `/var/mobile/Containers/Data/Application/AF438B8B-7724-4FBB-8E69-083463224FC4/tmp/my_file.m4a`
* Example: `this.media.create(this.file.tempDirectory.replace(/^file:\/\//, '') + 'my_file.m4a')`
* 2.) If that's not working, too, create the file before using.
* Example:
* ```typescript
* import { MediaPlugin, MediaObject } from '@ionic-native/media';
* import { File } from '@ionic-native/file';
*
* ...
*
* constructor(private media: MediaPlugin, private file: File) { }
*
* ...
*
* this.file.createFile(this.file.tempDirectory, 'my_file.m4a', true).then(() => {
* let file = this.media.create(this.file.tempDirectory.replace(/^file:\/\//, '') + 'my_file.m4a');
* file.startRecord();
* window.setTimeout(() => file.stopRecord(), 10000);
* });
* ```
*
* You can find the reasons here: https://github.com/driftyco/ionic-native/issues/1452#issuecomment-299605906
* This plugin provides the ability to record and play back audio files on a device.
*
* @usage
* ```typescript
* import { MediaPlugin, MediaObject } from '@ionic-native/media';
* import { Media, MediaObject } from '@ionic-native/media';
*
*
* constructor(private media: MediaPlugin) { }
* constructor(private media: Media) { }
*
*
* ...
*
*
* // Create a MediaPlugin instance. Expects path to file or url as argument
* // Create a Media instance. Expects path to file or url as argument
* // We can optionally pass a second argument to track the status of the media
*
* const onStatusUpdate = (status) => console.log(status);
* const onSuccess = () => console.log('Action is successful.');
* const onError = (error) => console.error(error.message);
* const file: MediaObject = this.media.create('file.mp3');
*
* const file: MediaObject = this.media.create('path/to/file.mp3', onStatusUpdate, onSuccess, onError);
* // to listen to plugin events:
*
* file.onStatusUpdate.subscribe(status => console.log(status)); // fires when file status changes
*
* file.onSuccess.subscribe(() => console.log('Action is successful'));
*
* file.onError.subscribe(error => console.log('Error!', error));
*
* // play the file
* file.play();
@@ -203,19 +249,45 @@ export type MediaErrorCallback = (error: MediaError) => void;
*
*
* ```
*
* Some hints if you are using iOS and recording doesn't work:
* 1.) Try to use a absolute file path but remove beginning "file://".
* Then it looks like: `/var/mobile/Containers/Data/Application/AF438B8B-7724-4FBB-8E69-083463224FC4/tmp/my_file.m4a`
* Example: `this.media.create(this.file.tempDirectory.replace(/^file:\/\//, '') + 'my_file.m4a')`
* 2.) If that's not working, too, create the file before using.
* Example:
* ```typescript
* import { Media, MediaObject } from '@ionic-native/media';
* import { File } from '@ionic-native/file';
*
* ...
*
* constructor(private media: Media, private file: File) { }
*
* ...
*
* this.file.createFile(this.file.tempDirectory, 'my_file.m4a', true).then(() => {
* let file = this.media.create(this.file.tempDirectory.replace(/^file:\/\//, '') + 'my_file.m4a');
* file.startRecord();
* window.setTimeout(() => file.stopRecord(), 10000);
* });
* ```
*
* You can find the reasons here: https://github.com/ionic-team/ionic-native/issues/1452#issuecomment-299605906
* @classes
* MediaObject
* @interfaces
* MediaError
*/
@Plugin({
pluginName: 'MediaPlugin',
pluginName: 'Media',
repo: 'https://github.com/apache/cordova-plugin-media',
plugin: 'cordova-plugin-media',
pluginRef: 'Media'
pluginRef: 'Media',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class MediaPlugin extends IonicNativePlugin {
export class Media extends IonicNativePlugin {
// Constants
/**
@@ -260,25 +332,17 @@ export class MediaPlugin extends IonicNativePlugin {
/**
* Open a media file
* @param src {string} A URI containing the audio content.
* @param [onStatusUpdate] {MediaStatusUpdateCallback} A callback function to be invoked when the status of the file changes
* @param [onSuccess] {Function} A callback function to be invoked after the current play, record, or stop action is completed
* @param [onError] {MediaErrorCallback} A callback function is be invoked if an error occurs.
* @return {MediaObject}
*/
create(src: string,
onStatusUpdate?: MediaStatusUpdateCallback,
onSuccess?: Function,
onError?: MediaErrorCallback): MediaObject {
create(src: string): MediaObject {
let instance: any;
if (checkAvailability(MediaPlugin.getPluginRef(), null, MediaPlugin.getPluginName()) === true) {
if (checkAvailability(Media.getPluginRef(), null, Media.getPluginName()) === true) {
// Creates a new media object
instance = new Media(src, onSuccess, onError, onStatusUpdate);
instance = new (Media.getPlugin())(src);
}
return new MediaObject(instance);
}
}

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