diff --git a/CHANGELOG.md b/CHANGELOG.md
index b9fbfa40..80112298 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,76 @@
+
+## [1.3.6](https://github.com/driftyco/ionic-native/compare/v1.3.5...v1.3.6) (2016-07-17)
+
+
+### Bug Fixes
+
+* **googlemaps:** able to pass array of LatLng to GoogleMapsLatLngBounds constructor ([de14b0e](https://github.com/driftyco/ionic-native/commit/de14b0e)), closes [#298](https://github.com/driftyco/ionic-native/issues/298)
+* **launch-navigator:** fix the navigate function wrapper to match latest plugin API ([6f625f9](https://github.com/driftyco/ionic-native/commit/6f625f9))
+
+
+### Features
+
+* **camera-preview:** add wrapper for camera-preview ([#301](https://github.com/driftyco/ionic-native/issues/301)) ([3a1a3ce](https://github.com/driftyco/ionic-native/commit/3a1a3ce))
+* **launch-navigator:** add new methods and constants to match latest plugin API ([29de6b3](https://github.com/driftyco/ionic-native/commit/29de6b3))
+
+
+
+
+## [1.3.5](https://github.com/driftyco/ionic-native/compare/v1.3.4...v1.3.5) (2016-07-17)
+
+
+### Bug Fixes
+
+* **ibeacon:** minor fixes ([b5a2ffc](https://github.com/driftyco/ionic-native/commit/b5a2ffc))
+* **safari-view-controller:** fix wrappers ([b4b3ec0](https://github.com/driftyco/ionic-native/commit/b4b3ec0))
+
+
+### Features
+
+* **googlemaps:** add Geocoder class ([#292](https://github.com/driftyco/ionic-native/issues/292)) ([2996da6](https://github.com/driftyco/ionic-native/commit/2996da6)), closes [#280](https://github.com/driftyco/ionic-native/issues/280)
+* **media-capture:** add media capture plugin ([#293](https://github.com/driftyco/ionic-native/issues/293)) ([daa6d4c](https://github.com/driftyco/ionic-native/commit/daa6d4c)), closes [#272](https://github.com/driftyco/ionic-native/issues/272)
+* **nativestorage:** add NativeStorage plugin wrapper ([af5d4ad](https://github.com/driftyco/ionic-native/commit/af5d4ad))
+* **pin-dialog:** add pin dialog plugin ([#291](https://github.com/driftyco/ionic-native/issues/291)) ([2fe37c4](https://github.com/driftyco/ionic-native/commit/2fe37c4))
+
+
+
+
+## [1.3.4](https://github.com/driftyco/ionic-native/compare/v1.3.3...v1.3.4) (2016-07-14)
+
+
+### Bug Fixes
+
+* **touchid:** make isAvailable static ([c23f5e9](https://github.com/driftyco/ionic-native/commit/c23f5e9))
+
+
+### Reverts
+
+* **changelog:** old changelog ([0cb79d1](https://github.com/driftyco/ionic-native/commit/0cb79d1))
+
+
+
+
+## [1.3.3](https://github.com/driftyco/ionic-native/compare/v1.3.2...v1.3.3) (2016-07-11)
+
+
+### Bug Fixes
+
+* remove unnecessary decorator ([#257](https://github.com/driftyco/ionic-native/issues/257)) ([25fab64](https://github.com/driftyco/ionic-native/commit/25fab64))
+* **actionsheet:** add missing optional parameter for hide function ([#262](https://github.com/driftyco/ionic-native/issues/262)) ([644e999](https://github.com/driftyco/ionic-native/commit/644e999))
+* **background-geolocation:** fix pluginref again ([b8a5133](https://github.com/driftyco/ionic-native/commit/b8a5133))
+* **geolocation:** fix plugin reference ([4f0cd24](https://github.com/driftyco/ionic-native/commit/4f0cd24)), closes [#258](https://github.com/driftyco/ionic-native/issues/258)
+* **googlemaps:** use correct methods for addGroundOverlay and addKmlOverlay ([#268](https://github.com/driftyco/ionic-native/issues/268)) ([b8be1de](https://github.com/driftyco/ionic-native/commit/b8be1de))
+* **socialsharing:** all methods return Promises now ([e150224](https://github.com/driftyco/ionic-native/commit/e150224)), closes [#275](https://github.com/driftyco/ionic-native/issues/275)
+
+
+### Features
+
+* **ibeacon:** add iBeacon plugin support ([#270](https://github.com/driftyco/ionic-native/issues/270)) ([dd97df1](https://github.com/driftyco/ionic-native/commit/dd97df1))
+* **onesignal:** added wrapper for the Cordova OneSignal Plugin ([#252](https://github.com/driftyco/ionic-native/issues/252)) ([ba20dbe](https://github.com/driftyco/ionic-native/commit/ba20dbe))
+* **push:** added support for Action Buttons on iOS with categories ([#273](https://github.com/driftyco/ionic-native/issues/273)) ([592feb4](https://github.com/driftyco/ionic-native/commit/592feb4))
+
+
+
## [1.3.2](https://github.com/driftyco/ionic-native/compare/v1.3.1...v1.3.2) (2016-06-27)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0b71c11f..49b776d1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,11 +2,11 @@
## Feature request?
-Have a plugin you'd like to see supported? Because Ionic Native is a thin wrapper around existing Cordova plugins, adding support for new plugins is as easy as creating a new wrapper for whichever plugin you'd like to add.
+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.
-## Having an issue?
+## Have an issue?
#### 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
diff --git a/package.json b/package.json
index 227d20a0..4b349181 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ionic-native",
- "version": "1.3.2",
+ "version": "1.3.6",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"main": "dist/index.js",
"files": [
diff --git a/src/index.ts b/src/index.ts
index 68268c46..45a511cb 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -20,6 +20,7 @@ import {BLE} from './plugins/ble';
import {BluetoothSerial} from './plugins/bluetoothserial';
import {Calendar} from './plugins/calendar';
import {Camera} from './plugins/camera';
+import {CameraPreview} from './plugins/camera-preview';
import {CardIO} from './plugins/card-io';
import {Clipboard} from './plugins/clipboard';
import {Contacts} from './plugins/contacts';
@@ -44,19 +45,24 @@ import {GoogleMap} from './plugins/googlemaps';
import {GoogleAnalytics} from './plugins/googleanalytics';
import {Hotspot} from './plugins/hotspot';
import {Httpd} from './plugins/httpd';
+import {IBeacon} from './plugins/ibeacon';
import {ImagePicker} from './plugins/imagepicker';
import {InAppBrowser} from './plugins/inappbrowser';
import {Insomnia} from './plugins/insomnia';
import {Keyboard} from './plugins/keyboard';
import {LaunchNavigator} from './plugins/launchnavigator';
import {LocalNotifications} from './plugins/localnotifications';
+import {MediaCapture} from './plugins/media-capture';
+import {NativeStorage} from './plugins/nativestorage';
import {MediaPlugin} from './plugins/media';
-import {Network, Connection} from './plugins/network';
+import {Network} from './plugins/network';
import {OneSignal} from './plugins/onesignal';
+import {PinDialog} from './plugins/pin-dialog';
import {Printer} from './plugins/printer';
import {Push} from './plugins/push';
import {SafariViewController} from './plugins/safari-view-controller';
import {Screenshot} from './plugins/screenshot';
+import {Sim} from './plugins/sim';
import {SMS} from './plugins/sms';
import {SocialSharing} from './plugins/socialsharing';
import {SpinnerDialog} from './plugins/spinnerdialog';
@@ -80,13 +86,16 @@ export * from './plugins/datepicker';
export * from './plugins/device';
export * from './plugins/devicemotion';
export * from './plugins/deviceorientation';
+export * from './plugins/filetransfer';
export * from './plugins/googlemaps';
export * from './plugins/httpd';
+export * from './plugins/ibeacon';
export * from './plugins/imagepicker';
export * from './plugins/inappbrowser';
export * from './plugins/launchnavigator';
export * from './plugins/localnotifications';
export * from './plugins/media';
+export * from './plugins/media-capture';
export * from './plugins/printer';
export * from './plugins/push';
export * from './plugins/safari-view-controller';
@@ -106,8 +115,8 @@ export {
Brightness,
BLE,
BluetoothSerial,
+ CameraPreview,
Clipboard,
- Connection,
DBMeter,
Deeplinks,
DeviceAccounts,
@@ -124,10 +133,13 @@ export {
Hotspot,
Insomnia,
Keyboard,
+ NativeStorage,
Network,
OneSignal,
+ PinDialog,
Screenshot,
SocialSharing,
+ Sim,
Splashscreen,
SQLite,
StatusBar,
@@ -148,6 +160,7 @@ window['IonicNative'] = {
AppVersion: AppVersion,
Badge: Badge,
BackgroundGeolocation: BackgroundGeolocation,
+ BackgroundMode: BackgroundMode,
BarcodeScanner: BarcodeScanner,
Base64ToGallery: Base64ToGallery,
BatteryStatus: BatteryStatus,
@@ -156,9 +169,9 @@ window['IonicNative'] = {
BluetoothSerial: BluetoothSerial,
Calendar: Calendar,
Camera: Camera,
+ CameraPreview: CameraPreview,
CardIO: CardIO,
Clipboard: Clipboard,
- Connection: Connection,
Contacts: Contacts,
DatePicker: DatePicker,
DBMeter: DBMeter,
@@ -180,18 +193,23 @@ window['IonicNative'] = {
GoogleAnalytics: GoogleAnalytics,
Hotspot: Hotspot,
Httpd: Httpd,
+ IBeacon: IBeacon,
ImagePicker: ImagePicker,
InAppBrowser: InAppBrowser,
Keyboard: Keyboard,
LaunchNavigator: LaunchNavigator,
LocalNotifications: LocalNotifications,
+ MediaCapture: MediaCapture,
MediaPlugin: MediaPlugin,
+ NativeStorage: NativeStorage,
Network: Network,
Printer: Printer,
Push: Push,
OneSignal: OneSignal,
+ PinDialog: PinDialog,
SafariViewController: SafariViewController,
Screenshot: Screenshot,
+ Sim: Sim,
SMS: SMS,
SocialSharing: SocialSharing,
SpinnerDialog: SpinnerDialog,
diff --git a/src/plugins/background-geolocation.ts b/src/plugins/background-geolocation.ts
index 18b4261a..7bd45799 100644
--- a/src/plugins/background-geolocation.ts
+++ b/src/plugins/background-geolocation.ts
@@ -203,7 +203,7 @@ export interface Config {
*/
@Plugin({
plugin: 'cordova-plugin-mauron85-background-geolocation',
- pluginRef: 'plugins.backgroundGeoLocation',
+ pluginRef: 'backgroundGeolocation',
repo: 'https://github.com/mauron85/cordova-plugin-background-geolocation',
platforms: ['iOS', 'Android', 'Windows Phone 8']
})
diff --git a/src/plugins/backgroundmode.ts b/src/plugins/backgroundmode.ts
index 47d2caca..f1b9c56f 100644
--- a/src/plugins/backgroundmode.ts
+++ b/src/plugins/backgroundmode.ts
@@ -26,7 +26,7 @@ import { Cordova, Plugin } from './plugin';
*
*/
@Plugin({
- plugin: 'de.appplant.cordova.plugin.background-mode',
+ plugin: 'cordova-plugin-background-mode',
pluginRef: 'cordova.plugins.backgroundMode',
repo: 'https://github.com/katzer/cordova-plugin-background-mode',
platforms: ['Android', 'iOS', 'Windows Phone 8']
diff --git a/src/plugins/camera-preview.ts b/src/plugins/camera-preview.ts
new file mode 100644
index 00000000..72cf1b2d
--- /dev/null
+++ b/src/plugins/camera-preview.ts
@@ -0,0 +1,129 @@
+import {Plugin, Cordova} from './plugin';
+import {Observable} from 'rxjs/Observable';
+
+export interface CameraPreviewOptions {
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+ /**
+ * Choose the camera to use (front- or back-facing).
+ * 'front' for front camera
+ * 'rear' for rear camera
+ */
+ camera: string;
+ /** Take photo on tap */
+ tapPhoto: boolean;
+ /** */
+ previewDrag: boolean;
+ /** */
+ toBack: boolean;
+ /** Alpha use when toBack is set to true */
+ alpha: number;
+}
+
+export interface CameraPreviewSize {
+ maxWidth: number;
+ maxHeight: number;
+}
+
+/**
+ * @name CameraPreview
+ * @description
+ * Showing camera preview in HTML
+ *
+ * Requires {@link module:driftyco/ionic-native} and the Cordova plugin: `cordova-plugin-camera-preview`. For more info, please see the [Cordova Camera Preview Plugin Docs](https://github.com/westonganger/cordova-plugin-camera-preview).
+ *
+ */
+@Plugin({
+ plugin: 'cordova-plugin-camera-preview',
+ pluginRef: 'cordova.plugins.camerapreview',
+ repo: 'https://github.com/westonganger/cordova-plugin-camera-preview',
+ platforms: ['Android', 'iOS']
+})
+export class CameraPreview {
+
+ /**
+ * Starts the camera preview instance.
+ * @param {CameraPreviewOptions} options for the preview
+ */
+ @Cordova({
+ sync: true
+ })
+ static startCamera(options: CameraPreviewOptions): void {};
+
+ /**
+ * Stops the camera preview instance.
+ */
+ @Cordova({
+ sync: true
+ })
+ static stopCamera(): void {};
+
+ /**
+ * Take the picture, the parameter size is optional
+ */
+ @Cordova({
+ sync: true
+ })
+ static takePicture(size: CameraPreviewSize): void {};
+
+ /**
+ * Register a callback function that receives the original picture and the image captured from the preview box.
+ */
+ @Cordova({
+ observable: true
+ })
+ static setOnPictureTakenHandler(): Observable { return; };
+
+ /**
+ * Switch from the rear camera and front camera, if available.
+ */
+ @Cordova({
+ sync: true
+ })
+ static switchCamera(): void {};
+
+ /**
+ * Show the camera preview box.
+ */
+ @Cordova({
+ sync: true
+ })
+ static show(): void {};
+
+ /**
+ * Hide the camera preview box.
+ */
+ @Cordova({
+ sync: true
+ })
+ static hide(): void {};
+
+ /**
+ * Set the default mode for the Flash.
+ */
+ @Cordova({
+ sync: true
+ })
+ static setFlashMode(mode: number): void {};
+
+ /**
+ * Set camera color effect.
+ */
+ @Cordova({
+ sync: true
+ })
+ static setColorEffect(effect: string): void {};
+
+ /**
+ * @private
+ * @enum {number}
+ */
+ static FlashMode = {
+ OFF: 0,
+ ON: 1,
+ AUTO: 2
+ };
+
+}
diff --git a/src/plugins/camera.ts b/src/plugins/camera.ts
index 6fa19601..d62b9cea 100644
--- a/src/plugins/camera.ts
+++ b/src/plugins/camera.ts
@@ -113,8 +113,8 @@ export interface CameraPopoverOptions {
export class Camera {
/**
* Take a picture or video, or load one from the library.
- * @param {CameraOptions} options
- * @return Returns a Promise that resolves with Base64 encoding of the image data, or the image file URI, depending on cameraOptions, otherwise rejects with an error.
+ * @param {CameraOptions} options Options that you want to pass to the camera. Encoding type, quality, etc.
+ * @return {Promise} Returns a Promise that resolves with Base64 encoding of the image data, or the image file URI, depending on cameraOptions, otherwise rejects with an error.
*/
@Cordova({
callbackOrder: 'reverse'
@@ -132,6 +132,7 @@ export class Camera {
static cleanup() { };
/**
+ * @private
* @enum {number}
*/
static DestinationType = {
@@ -144,6 +145,7 @@ export class Camera {
};
/**
+ * @private
* @enum {number}
*/
static EncodingType = {
@@ -153,6 +155,7 @@ export class Camera {
PNG: 1
};
/**
+ * @private
* @enum {number}
*/
static MediaType = {
@@ -165,6 +168,7 @@ export class Camera {
};
/**
+ * @private
* @enum {number}
*/
static PictureSourceType = {
@@ -177,6 +181,7 @@ export class Camera {
};
/**
+ * @private
* Matches iOS UIPopoverArrowDirection constants to specify arrow location on popover.
* @enum {number}
*/
@@ -189,6 +194,7 @@ export class Camera {
};
/**
+ * @private
* @enum {number}
*/
static Direction = {
diff --git a/src/plugins/card-io.ts b/src/plugins/card-io.ts
index 5de7aaec..f6fc26e7 100644
--- a/src/plugins/card-io.ts
+++ b/src/plugins/card-io.ts
@@ -41,7 +41,7 @@ export class CardIO {
/**
* Scan a credit card with card.io.
- * @param options
+ * @param {CardIOOptions} options Options for configuring the plugin
*/
@Cordova()
static scan(options?: CardIOOptions): Promise { return; }
diff --git a/src/plugins/clipboard.ts b/src/plugins/clipboard.ts
index 8ae65b69..0fccfa4f 100644
--- a/src/plugins/clipboard.ts
+++ b/src/plugins/clipboard.ts
@@ -19,12 +19,12 @@ import { Cordova, Plugin } from './plugin';
*
* Clipboard.paste().then(
* (resolve : string) => {
- * alert(resolve);
-* },
+ * alert(resolve);
+ * },
* (reject : string) => {
* alert("Error: " + reject);
* }
-* );
+ * );
* );
* ```
*/
@@ -38,15 +38,15 @@ export class Clipboard {
/**
* Copies the given text
- * @param text
- * @returns {Promise}
+ * @param {string} text Text that gets copied on the system clipboard
+ * @returns {Promise} Returns a promise after the text has been copied
*/
@Cordova()
static copy(text: string): Promise { return; }
/**
* Pastes the text stored in clipboard
- * @returns {Promise}
+ * @returns {Promise} Returns a promise after the text has been pasted
*/
@Cordova()
static paste(): Promise { return; }
diff --git a/src/plugins/contacts.ts b/src/plugins/contacts.ts
index 47c4e58e..f422fb74 100644
--- a/src/plugins/contacts.ts
+++ b/src/plugins/contacts.ts
@@ -283,9 +283,6 @@ export class Contacts {
/**
* Search for contacts in the Contacts list.
- *
- * Example: Contacts.find(['*'], { filter: 'Max' }) // will search for a displayName of 'Max'
- *
* @param fields {string[]} Contact fields to be used as a search qualifier.
* A zero-length contactFields parameter is invalid and results in ContactError.INVALID_ARGUMENT_ERROR.
* A contactFields value of "*" searches all contact fields.
diff --git a/src/plugins/datepicker.ts b/src/plugins/datepicker.ts
index 9f495a7f..255dab7e 100644
--- a/src/plugins/datepicker.ts
+++ b/src/plugins/datepicker.ts
@@ -77,7 +77,6 @@ export interface DatePickerOptions {
* import {DatePicker} from 'ionic-native';
*
*
- *
* DatePicker.show({
* date: new Date(),
* mode: 'date'
@@ -97,9 +96,10 @@ export class DatePicker {
/**
* Shows the date and/or time picker dialog(s)
- * @param options
+ * @param {DatePickerOptions} options Options for the date picker.
* @returns {Promise} Returns a promise that resolves with the picked date and/or time, or rejects with an error.
*/
@Cordova()
static show(options: DatePickerOptions): Promise { return; }
+
}
diff --git a/src/plugins/deviceorientation.ts b/src/plugins/deviceorientation.ts
index c493e553..257cb27d 100644
--- a/src/plugins/deviceorientation.ts
+++ b/src/plugins/deviceorientation.ts
@@ -84,8 +84,8 @@ export class DeviceOrientation {
* Get the device current heading at a regular interval
*
* Stop the watch by unsubscribing from the observable
- * @param options
- * @returns {Observable}
+ * @param {CompassOptions} options Options for compass. Frequency and Filter. Optional
+ * @returns {Observable} Returns an observable that contains the compass heading
*/
@Cordova({
callbackOrder: 'reverse',
diff --git a/src/plugins/dialogs.ts b/src/plugins/dialogs.ts
index cbd8607b..a619244a 100644
--- a/src/plugins/dialogs.ts
+++ b/src/plugins/dialogs.ts
@@ -40,9 +40,9 @@ export class Dialogs {
/**
* Shows a custom alert or dialog box.
- * @param message Dialog message. (String)
- * @param title Dialog title. (String) (Optional, defaults to Alert)
- * @param buttonName Button name. (String) (Optional, defaults to OK)
+ * @param {string} message Dialog message.
+ * @param {string} title Dialog title. (Optional, defaults to Alert)
+ * @param {string} buttonName Button name. (Optional, defaults to OK)
* @returns {Promise} Returns a blank promise once the user has dismissed the alert.
*/
@Cordova({
@@ -57,9 +57,9 @@ export class Dialogs {
/**
* Displays a customizable confirmation dialog box.
- * @param message Dialog message. (String)
- * @param title Dialog title. (String) (Optional, defaults to Confirm)
- * @param buttonLabels Array of strings specifying button labels. (Array) (Optional, defaults to [OK,Cancel])
+ * @param {string} message Dialog message.
+ * @param {string} title Dialog title. (Optional, defaults to Confirm)
+ * @param {Array} buttonLabels Array of strings specifying button labels. (Optional, defaults to [OK,Cancel])
* @returns {Promise} Returns a promise that resolves the button index that was clicked. Note that the index use one-based indexing.
*/
@Cordova({
@@ -74,10 +74,10 @@ export class Dialogs {
/**
* Displays a native dialog box that is more customizable than the browser's prompt function.
- * @param message Dialog message. (String)
- * @param title Dialog title (String) (Optional, defaults to Prompt)
- * @param buttonLabels Array of strings specifying button labels (Array) (Optional, defaults to ["OK","Cancel"])
- * @param defaultText Default textbox input value (String) (Optional, Default: empty string)
+ * @param {string} message Dialog message.
+ * @param {string} title Dialog title. (Optional, defaults to Prompt)
+ * @param {Array} buttonLabels Array of strings specifying button labels. (Optional, defaults to ["OK","Cancel"])
+ * @param {string} defaultText Default textbox input value. (Optional, Default: empty string)
* @returns {Promise} Returns a promise that resolves an object with the button index clicked and the text entered
*/
@Cordova({
@@ -94,7 +94,7 @@ export class Dialogs {
/**
* The device plays a beep sound.
- * @param times The number of times to repeat the beep. (Number)
+ * @param {numbers} times The number of times to repeat the beep.
*/
@Cordova({
sync: true
diff --git a/src/plugins/facebook.ts b/src/plugins/facebook.ts
index 5cda15b4..4beeee6e 100644
--- a/src/plugins/facebook.ts
+++ b/src/plugins/facebook.ts
@@ -87,8 +87,8 @@ export class Facebook {
/**
* Browser wrapper
- * @param appId
- * @param version
+ * @param {number} appId Your Facebook AppID from their dashboard
+ * @param {string} version The version of API you may want to use. Optional
*/
@Cordova()
static browserInit(appId: number, version?: string): Promise {
diff --git a/src/plugins/geolocation.ts b/src/plugins/geolocation.ts
index a9644adc..6b7fc7bd 100644
--- a/src/plugins/geolocation.ts
+++ b/src/plugins/geolocation.ts
@@ -155,8 +155,7 @@ export class Geolocation {
static watchPosition(options?: GeolocationOptions): Observable {
return new Observable(
(observer: any) => {
- let cb = (data: Geoposition) => observer.next(data);
- let watchId = navigator.geolocation.watchPosition(cb, options);
+ let watchId = navigator.geolocation.watchPosition(observer.next.bind(observer), options);
return () => navigator.geolocation.clearWatch(watchId);
}
);
diff --git a/src/plugins/globalization.ts b/src/plugins/globalization.ts
index 2b5f412f..af21271d 100644
--- a/src/plugins/globalization.ts
+++ b/src/plugins/globalization.ts
@@ -12,9 +12,9 @@ import { Cordova, Plugin } from './plugin';
* ```
*/
@Plugin({
- plugin: 'cordova-plugin-globalization',
- pluginRef: 'navigator.globalization',
- repo: 'https://github.com/apache/cordova-plugin-globalization'
+ plugin: 'cordova-plugin-globalization',
+ pluginRef: 'navigator.globalization',
+ repo: 'https://github.com/apache/cordova-plugin-globalization'
})
export class Globalization {
@@ -23,104 +23,112 @@ export class Globalization {
* @return {Promise<{value: string}>}
*/
@Cordova()
- static getPreferredLanguage(): Promise<{value: string}> { return; }
+ static getPreferredLanguage(): Promise<{ value: string }> { return; }
/**
* Returns the BCP 47 compliant locale identifier string to the successCallback with a properties object as a parameter.
* @return {Promise<{value: string}>}
*/
@Cordova()
- static getLocaleName(): Promise<{value: string}> { return; }
+ static getLocaleName(): Promise<{ value: string }> { return; }
/**
* Converts date to string
- * @param date
- * @param options
- * @return {Promise<{value: string}>}
+ * @param {Date} date Date you wish to convert
+ * @param options Options for the converted date. Length, selector.
+ * @return {Promise<{value: string}>} Returns a promise when the date has been converted.
*/
@Cordova({
successIndex: 1,
errorIndex 2
})
- static dateToString(date: Date, options: {formatLength: string, selector: string}): Promise<{value: string}> { return; }
+ static dateToString(date: Date, options: { formatLength: string, selector: string }): Promise<{ value: string }> { return; }
/**
- *
- * @param dateString
+ * Parses a date formatted as a string, according to the client's user preferences and calendar using the time zone of the client, and returns the corresponding date object.
+ * @param {string} dateString Date as a string to be converted
+ * @param options Options for the converted date. Length, selector.
+ * @return {Promise<{value: string}>} Returns a promise when the date has been converted.
+ */
+ @Cordova({
+ successIndex: 1,
+ errorIndex: 2
+ })
+ static stringToDate(dateString: string, options: { formatLength: string, selector: string }): Promise<{ year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number }> { return; }
+
+ /**
+ * Returns a pattern string to format and parse dates according to the client's user preferences.
+ * @param options Object with the format length and selector
+ * @return {Promise<{value: string}>} Returns a promise.
+ */
+ @Cordova({
+ callbackOrder: 'reverse'
+ })
+ static getDatePattern(options: { formatLength: string, selector: string }): Promise<{ pattern: string }> { return; }
+
+ /**
+ * Returns an array of the names of the months or days of the week, depending on the client's user preferences and calendar.
+ * @param options Object with type (narrow or wide) and item (month or days).
+ * @return {Promise<{value: string}>} Returns a promise.
+ */
+ @Cordova({
+ callbackOrder: 'reverse'
+ })
+ static getDateNames(options: { type: string, item: string }): Promise<{ value: Array }> { return; }
+
+ /**
+ * Indicates whether daylight savings time is in effect for a given date using the client's time zone and calendar.
+ * @param {data} date Date to process
+ * @returns {Promise} reutrns a promise with the value
+ */
+ @Cordova()
+ static isDayLightSavingsTime(date: Date): Promise<{ dst: string }> { return; }
+
+ /**
+ * Returns the first day of the week according to the client's user preferences and calendar.
+ * @returns {Promise} reutrns a promise with the value
+ */
+ @Cordova()
+ static getFirstDayOfWeek(): Promise<{ value: string }> { return; }
+
+ /**
+ * Returns a number formatted as a string according to the client's user preferences.
* @param options
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
- static stringToDate(dateString: string, options: {formatLength: string, selector: string}): Promise<{year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number}> { return; }
+ static numberToString(options: { type: string }): Promise<{ value: string }> { return; }
/**
*
- * @param options
- */
- @Cordova({
- callbackOrder: 'reverse'
- })
- static getDatePattern(options: {formatLength: string, selector: string}): Promise<{pattern: string}> { return; }
-
- /**
- *
- * @param options
- */
- @Cordova({
- callbackOrder: 'reverse'
- })
- static getDateNames(options: {type: string, item: string}): Promise<{value: Array}> { return; }
-
- /**
- * Check if day light saving is active
- * @param date
- */
- @Cordova()
- static isDayLightSavingsTime(date: Date): Promise<{dst: string}> { return; }
-
- /**
- * Get first day of week
- */
- @Cordova()
- static getFirstDayOfWeek(): Promise<{value: string}> { return; }
-
- /**
- *
- * @param options
+ * @param {string} stringToConvert String you want to conver to a number
+ * @param options The type of number you want to return. Can be decimal, percent, or currency.
+ * @returns {Promise} Returns a promise with the value.
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
- static numberToString(options: {type: string}): Promise<{value: string}> { return; }
+ static stringToNumber(stringToConvert: string, options: { type: string }): Promise<{ value: number | string }> { return; }
/**
- *
- * @param stringToConvert
- * @param options
- */
- @Cordova({
- successIndex: 1,
- errorIndex: 2
- })
- static stringToNumber(stringToConvert: string, options: {type: string}): Promise<{value: number|string}> { return; }
-
- /**
- *
- * @param options
+ * Returns a pattern string to format and parse numbers according to the client's user preferences.
+ * @param options Can be decimal, percent, or currency.
+ * @returns {Promise} returns a promise with the value.
*/
@Cordova({
callbackOrder: 'reverse'
})
- static getNumberPattern(options: {type: string}): Promise<{pattern: string, symbol: string, fraction: number, rounding: number, positive: string, negative: string, decimal: string, grouping: string}> { return; }
+ static getNumberPattern(options: { type: string }): Promise<{ pattern: string, symbol: string, fraction: number, rounding: number, positive: string, negative: string, decimal: string, grouping: string }> { return; }
/**
- *
- * @param currencyCode
+ * Returns a pattern string to format and parse currency values according to the client's user preferences and ISO 4217 currency code.
+ * @param {string} currencyCode Currency Code.A
+ * @returns {Promise} returns a promise with the value
*/
@Cordova()
- static getCurrencyPattern(currencyCode: string): Promise<{pattern: string, code: string, fraction: number, rounding: number, decimal: number, grouping: string}> { return; }
+ static getCurrencyPattern(currencyCode: string): Promise<{ pattern: string, code: string, fraction: number, rounding: number, decimal: number, grouping: string }> { return; }
}
diff --git a/src/plugins/googlemaps.ts b/src/plugins/googlemaps.ts
index 029c6696..2ba6beb5 100644
--- a/src/plugins/googlemaps.ts
+++ b/src/plugins/googlemaps.ts
@@ -80,8 +80,7 @@ export class GoogleMap {
on(event: any): Observable {
return new Observable(
(observer) => {
- let cb = data => observer.next(data);
- this._objectInstance.on(event, cb);
+ this._objectInstance.on(event, observer.next.bind(observer));
return () => this._objectInstance.off(event);
}
);
@@ -392,11 +391,8 @@ export class GoogleMapsMarker {
addEventListener(event: any): Observable {
return new Observable(
(observer) => {
- let cb = (data: any) => {
- observer.next(data);
- };
- this._objectInstance.addEventListener(event, cb);
- return () => this._objectInstance.removeEventListener(event, cb);
+ this._objectInstance.addEventListener(event, observer.next.bind(observer));
+ return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer));
}
);
}
@@ -540,9 +536,8 @@ export class GoogleMapsCircle {
addEventListener(event: any): Observable {
return new Observable(
(observer) => {
- let cb = data => observer.next(data);
- this._objectInstance.addEventListener(event, cb);
- return () => this._objectInstance.removeEventListener(event, cb);
+ this._objectInstance.addEventListener(event, observer.next.bind(observer));
+ return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer));
}
);
}
@@ -632,9 +627,8 @@ export class GoogleMapsPolyline {
addEventListener(event: any): Observable {
return new Observable(
(observer) => {
- let cb = data => observer.next(data);
- this._objectInstance.addEventListener(event, cb);
- return () => this._objectInstance.removeEventListener(event, cb);
+ this._objectInstance.addEventListener(event, observer.next.bind(observer));
+ return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer));
}
);
}
@@ -724,9 +718,8 @@ export class GoogleMapsPolygon {
addEventListener(event: any): Observable {
return new Observable(
(observer) => {
- let cb = data => observer.next(data);
- this._objectInstance.addEventListener(event, cb);
- return () => this._objectInstance.removeEventListener(event, cb);
+ this._objectInstance.addEventListener(event, observer.next.bind(observer));
+ return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer));
}
);
}
@@ -954,8 +947,9 @@ export class GoogleMapsKmlOverlay {
export class GoogleMapsLatLngBounds {
private _objectInstance: any;
- constructor(public southwest: GoogleMapsLatLng, public northeast: GoogleMapsLatLng) {
- this._objectInstance = new plugin.google.maps.LatLngBounds([southwest, northeast]);
+ constructor(public southwestOrArrayOfLatLng: GoogleMapsLatLng | GoogleMapsLatLng[], public northeast?: GoogleMapsLatLng) {
+ let args = !!northeast ? [southwestOrArrayOfLatLng, northeast] : southwestOrArrayOfLatLng;
+ this._objectInstance = new plugin.google.maps.LatLngBounds(args);
}
@CordovaInstance({ sync: true })
@@ -1008,3 +1002,38 @@ export class GoogleMapsLatLng {
return this.lat.toFixed(precision) + ',' + this.lng.toFixed(precision);
}
}
+/**
+ * @private
+ */
+export interface GeocoderRequest {
+ address?: string;
+ position?: { lat: number; lng: number };
+}
+/**
+ * @private
+ */
+export interface GeocoderResult {
+ position?: { lat: number; lng: number };
+ subThoroughfare?: string;
+ thoroughfare?: string;
+ locality?: string;
+ adminArea?: string;
+ postalCode?: string;
+ country?: string;
+}
+/**
+ * @private
+ */
+export class Geocoder {
+ /**
+ * Converts position to address and vice versa
+ * @param {GeocoderRequest} request Request object with either an address or a position
+ * @returns {Promise}
+ */
+ static geocode(request: GeocoderRequest): Promise {
+ return new Promise((resolve, reject) => {
+ if (!plugin || !plugin.google || !plugin.google.maps || !plugin.google.maps.Geocoder) reject({ error: 'plugin_not_installed' });
+ else plugin.google.maps.Geocoder.geocode(request, resolve);
+ });
+ }
+}
diff --git a/src/plugins/ibeacon.ts b/src/plugins/ibeacon.ts
new file mode 100644
index 00000000..89176da3
--- /dev/null
+++ b/src/plugins/ibeacon.ts
@@ -0,0 +1,703 @@
+import {Plugin, Cordova} from './plugin';
+import {Observable} from 'rxjs/Observable';
+
+declare var cordova: any;
+
+export interface Beacon {
+ /**
+ * The physical device's identifier.
+ */
+ uuid: string;
+
+ /**
+ * The beacon's major identifier number.
+ */
+ major: number;
+
+ /**
+ * The beacon's major identifier number.
+ */
+ minor: number;
+
+ /**
+ * The proximity of the beacon relative to the phone.
+ *
+ * Possible options are:
+ * ProximityImmediate
+ * ProximityNear
+ * ProximityFar
+ * ProximityUnknown
+ */
+ proximity: 'ProximityImmediate' | 'ProximityNear' | 'ProximityFar' | 'ProximityUnknown';
+
+ /**
+ * Transmission Power of the beacon. A constant emitted by the beacon which indicates what's the expected RSSI at a distance of 1 meter to the beacon.
+ */
+ tx: number;
+
+ /**
+ * Received Signal Strength Indicator. The strength of the beacon's signal when it reaches the device.
+ * RSSI ranges from aprox -26 (a few inches) to -100 (40-50 m distance).
+ */
+ rssi: number;
+
+ /**
+ * The accuracy of the ranging.
+ */
+ accuracy: number;
+
+}
+export interface BeaconRegion {
+ /**
+ * A unique identifier for this region.
+ */
+ identifier: string;
+
+ /**
+ * The the beacon identifier the device will "watch" for. Many beacons can share the same uuid.
+ */
+ uuid: string;
+
+ /**
+ * The beacon's major identifier number. Optional, of nothing is supplied
+ * the plugin will treat it as a wildcard.
+ */
+ major?: number;
+
+ /**
+ * The beacon's minor identifier number. Optional, of nothing is supplied
+ * the plugin will treat it as a wildcard.
+ */
+ minor?: number;
+
+ /**
+ * If set to true the device will scan for beacons and determine region state anytime
+ * the device's screen is turned on or off. Useful for debugging.
+ */
+ notifyEntryStateOnDisplay?: boolean;
+}
+export interface CircularRegion {
+ /**
+ * A unique identifier for this region.
+ */
+ identifier: string;
+
+ /**
+ * The latitude of this region.
+ */
+ latitude: number;
+
+ /**
+ * The longitude of this region.
+ */
+ longitude: number;
+
+ /**
+ * The radius of the geofence for this region.
+ */
+ radius: number;
+}
+export type Region = BeaconRegion | CircularRegion;
+
+export interface PluginResult {
+
+ /**
+ * The name of the delegate function that produced the PluginResult object.
+ */
+ eventType: string;
+
+ /**
+ * The region that triggered the event.
+ */
+ region: Region;
+
+ /**
+ * An array of beacon objects
+ */
+ beacons: Beacon[];
+
+ /**
+ * The status of the location permission for iOS.
+ */
+ authorizationStatus: string;
+
+ /**
+ * The state of the phone in relation to the region. Inside/outside for example.
+ */
+ state: 'CLRegionStateInside' | 'CLRegionStateOutside';
+
+ /**
+ * Error message, used only with monitoringDidFailForRegionWithError delegate.
+ */
+ error: string;
+}
+export interface Delegate {
+ /**
+ * An observable that publishes information about the location permission authorization status.
+ *
+ * @return Returns a string.
+ */
+ didChangeAuthorizationStatus(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * when the native layer is able to determine the device's state.
+ *
+ * This event is called when the phone begins starts monitoring,
+ * when requestStateForRegion is called, etc.
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ didDetermineStateForRegion(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * when the phone enters a region that it was asked to monitor.
+ *
+ * If the user has given the app Always-Location permission, this function
+ * will be called even when the app is not running on iOS.
+ * The app will run silently in the background for a small amount of time.
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ didEnterRegion(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * when the phone exits a region that it was asked to monitor.
+ *
+ * If the user has given the app Always-Location permission, this function
+ * will be called even when the app is not running on iOS.
+ * The app will run silently in the background for a small amount of time.
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ didExitRegion(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * each time that the device ranges beacons. Modern Android and iOS devices range
+ * aproximately once per second.
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ didRangeBeaconsInRegion(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * when the device begins monitoring a region.
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ didStartMonitoringForRegion(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * when the device fails to monitor a region.
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ monitoringDidFailForRegionWithError(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * when the device begins advertising as an iBeacon.
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ peripheralManagerDidStartAdvertising(): Observable;
+
+ /**
+ * An Observable that publishes event data to it's subscribers
+ * when the state of the peripheral manager's state updates.
+ *
+ *
+ * @return {PluginResult} Returns a PluginResult object with information about the event, region, and beacon(s).
+ */
+ peripheralManagerDidUpdateState(): Observable;
+}
+
+/**
+ * @name IBeacon
+ * @description
+ * This plugin provides functions for working with iBeacons.
+ *
+ * The plugin's API closely mimics the one exposed through the [CLLocationManager](https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html) introduced in iOS 7.
+ *
+ * @usage
+ *
+ * ```ts
+ * import {IBeacon} from 'ionic-native';
+ *
+ *
+ * // Request permission to use location on iOS
+ * IBeacon.requestAlwaysAuthorization();
+ * // create a new delegate and register it with the native layer
+ * let delegate = IBeacon.Delegate();
+ *
+ * // Subscribe to some of the delegate's event handlers
+ * delegate.didRangeBeaconsInRegion()
+ * .subscribe(
+ * data => {console.log('didRangeBeaconsInRegion: ', data)},
+ * error => console.error
+ * );
+ * delegate.didStartMonitoringForRegion()
+ * .subscribe(
+ * data => {console.log('didStartMonitoringForRegion: ', data)},
+ * error => console.error
+ * );
+ * delegate.didEnterRegion()
+ * .subscribe(
+ * data => {
+ * console.log('didEnterRegion: ', data);
+ * }
+ * );
+ *
+ * let beaconRegion = IBeacon.BeaconRegion('deskBeacon','F7826DA6-ASDF-ASDF-8024-BC5B71E0893E');
+ *
+ * IBeacon.startMonitoringForRegion(beaconRegion)
+ * .then(
+ * () => console.log('Native layer recieved the request to monitoring'),
+ * error => console.error('Native layer failed to begin monitoring: ', error)
+ * );
+ * ```
+ */
+@Plugin({
+ plugin: 'cordova-plugin-ibeacon',
+ pluginRef: 'cordova.plugins.locationManager',
+ repo: 'https://github.com/petermetz/cordova-plugin-ibeacon',
+ platforms: ['Android', 'iOS']
+})
+export class IBeacon {
+
+
+ /**
+ * Instances of this class are delegates between the {@link LocationManager} and
+ * the code that consumes the messages generated on in the native layer.
+ *
+ * @returns {Delegate} An instance of the type {@type Delegate}.
+ */
+ static Delegate(): Delegate {
+ let delegate = new cordova.plugins.locationManager.Delegate();
+
+ delegate.didChangeAuthorizationStatus = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.didChangeAuthorizationStatus = cb;
+ }
+ );
+ };
+
+ delegate.didDetermineStateForRegion = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.didDetermineStateForRegion = cb;
+ }
+ );
+ };
+
+ delegate.didEnterRegion = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.didEnterRegion = cb;
+ }
+ );
+ };
+
+ delegate.didExitRegion = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.didExitRegion = cb;
+ }
+ );
+ };
+
+ delegate.didRangeBeaconsInRegion = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.didRangeBeaconsInRegion = cb;
+ }
+ );
+ };
+
+ delegate.didStartMonitoringForRegion = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.didStartMonitoringForRegion = cb;
+ }
+ );
+ };
+
+ delegate.monitoringDidFailForRegionWithError = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.monitoringDidFailForRegionWithError = cb;
+ }
+ );
+ };
+
+ delegate.peripheralManagerDidStartAdvertising = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.peripheralManagerDidStartAdvertising = cb;
+ }
+ );
+ };
+
+ delegate.peripheralManagerDidUpdateState = (pluginResult?: PluginResult) => {
+ return new Observable(
+ (observer: any) => {
+ let cb = (data: PluginResult) => observer.next(data);
+ return delegate.peripheralManagerDidUpdateState = cb;
+ }
+ );
+ };
+
+ cordova.plugins.locationManager.setDelegate(delegate);
+ return delegate;
+ }
+
+ /**
+ * Creates a new BeaconRegion
+ *
+ * @param {String} identifier @see {CLRegion}
+ * @param {String} uuid The proximity ID of the beacon being targeted.
+ * This value must not be blank nor invalid as a UUID.
+ * @param {Number} major The major value that you use to identify one or more beacons.
+ * @param {Number} minor The minor value that you use to identify a specific beacon.
+ * @param {BOOL} notifyEntryStateOnDisplay
+ *
+ * @return Returns the BeaconRegion that was created
+ */
+ static BeaconRegion(identifer: string, uuid: string, major?: number, minor?: number, notifyEntryStateOnDisplay?: boolean): BeaconRegion {
+ return new cordova.plugins.locationManager.BeaconRegion(identifer, uuid, major, minor, notifyEntryStateOnDisplay);
+ }
+
+ /**
+ * @return Returns the Delegate
+ */
+ @Cordova()
+ static getDelegate(): Delegate { return; }
+
+ /**
+ * @param {Delegate} delegate An instance of a delegate to register with the native layer.
+ *
+ * @return Returns the Delegate
+ */
+ @Cordova()
+ static setDelegate(delegate: Delegate): Delegate { return; }
+
+ /**
+ * Signals the native layer that the client side is ready to consume messages.
+ * Readiness here means that it has a {Delegate} set by the consumer javascript
+ * code.
+ *
+ * The {LocationManager.setDelegate()} will implicitly call this method as well,
+ * therefore the only case when you have to call this manually is if you don't
+ * wish to specify a {Delegate} of yours.
+ *
+ * The purpose of this signaling mechanism is to make the events work when the
+ * app is being woken up by the Operating System to give it a chance to handle
+ * region monitoring events for example.
+ *
+ * If you don't set a {Delegate} and don't call this method manually, an error
+ * message get emitted in the native runtime and the DOM as well after a certain
+ * period of time.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the request and started to send events.
+ */
+ @Cordova({sync: true})
+ static onDomDelegateReady(): Promise { return; }
+
+ /**
+ * Determines if bluetooth is switched on, according to the native layer.
+ * @returns Returns a promise which is resolved with a {Boolean}
+ * indicating whether bluetooth is active.
+ */
+ @Cordova({sync: true})
+ static isBluetoothEnabled(): Promise { return; }
+
+ /**
+ * Enables Bluetooth using the native Layer. (ANDROID ONLY)
+ *
+ * @returns Returns a promise which is resolved when Bluetooth
+ * could be enabled. If not, the promise will be rejected with an error.
+ */
+ @Cordova({sync: true})
+ static enableBluetooth(): Promise { return; }
+
+ /**
+ * Disables Bluetooth using the native Layer. (ANDROID ONLY)
+ *
+ * @returns Returns a promise which is resolved when Bluetooth
+ * could be enabled. If not, the promise will be rejected with an error.
+ */
+ @Cordova({sync: true})
+ static disableBluetooth(): Promise { return; }
+
+ /**
+ * Start monitoring the specified region.
+ *
+ * If a region of the same type with the same identifier is already being
+ * monitored for this application,
+ * it will be removed from monitoring. For circular regions, the region
+ * monitoring service will prioritize
+ * regions by their size, favoring smaller regions over larger regions.
+ *
+ * This is done asynchronously and may not be immediately reflected in monitoredRegions.
+ *
+ * @param {Region} region An instance of {Region} which will be monitored
+ * by the operating system.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the dispatch of the monitoring request.
+ */
+ @Cordova({sync: true})
+ static startMonitoringForRegion(region: BeaconRegion): Promise { return; }
+
+ /**
+ * Stop monitoring the specified region. It is valid to call
+ * stopMonitoringForRegion: for a region that was registered for monitoring
+ * with a different location manager object, during this or previous
+ * launches of your application.
+ *
+ * This is done asynchronously and may not be immediately reflected in monitoredRegions.
+ *
+ * @param {Region} region An instance of {Region} which will be monitored
+ * by the operating system.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the dispatch of the request to stop monitoring.
+ */
+ @Cordova({sync: true})
+ static stopMonitoringForRegion(region: BeaconRegion): Promise { return; }
+
+ /**
+ * Request state the for specified region. When result is ready
+ * didDetermineStateForRegion is triggered. This can be any region,
+ * also those which is not currently monitored.
+ *
+ * This is done asynchronously and may not be immediately reflected in monitoredRegions.
+ *
+ * @param {Region} region An instance of {Region} which will be monitored
+ * by the operating system.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the dispatch of the request to stop monitoring.
+ */
+ @Cordova({sync: true})
+ static requestStateForRegion(region: Region): Promise { return; }
+
+
+ /**
+ * Start ranging the specified beacon region.
+ *
+ * If a region of the same type with the same identifier is already being
+ * monitored for this application, it will be removed from monitoring.
+ *
+ * This is done asynchronously and may not be immediately reflected in rangedRegions.
+ *
+ * @param {Region} region An instance of {BeaconRegion} which will be monitored
+ * by the operating system.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the dispatch of the monitoring request.
+ */
+ @Cordova({sync: true})
+ static startRangingBeaconsInRegion(region: BeaconRegion): Promise { return; }
+
+ /**
+ * Stop ranging the specified region. It is valid to call
+ * stopMonitoringForRegion: for a region that was registered for ranging
+ * with a different location manager object, during this or previous
+ * launches of your application.
+ *
+ * This is done asynchronously and may not be immediately reflected in rangedRegions.
+ *
+ * @param {Region} region An instance of {BeaconRegion} which will be monitored
+ * by the operating system.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the dispatch of the request to stop monitoring.
+ */
+ @Cordova({sync: true})
+ static stopRangingBeaconsInRegion(region: BeaconRegion): Promise { return; }
+
+ /**
+ * Queries the native layer to determine the current authorization in effect.
+ *
+ * @returns Returns a promise which is resolved with the
+ * requested authorization status.
+ */
+ @Cordova({sync: true})
+ static getAuthorizationStatus(): Promise { return; }
+
+ /**
+ * For iOS 8 and above only. The permission model has changed by Apple in iOS 8, making it necessary for apps to
+ * explicitly request permissions via methods like these:
+ * requestWhenInUseAuthorization
+ * requestAlwaysAuthorization
+ *
+ * If you are using this plugin on Android devices only, you will never have to use this, nor {@code requestAlwaysAuthorization}
+ * @returns Returns a promise that is resolved when the request dialog is shown.
+ */
+ @Cordova({sync: true})
+ static requestWhenInUseAuthorization(): Promise { return; }
+
+
+ /**
+ * See the docuemntation of {@code requestWhenInUseAuthorization} for further details.
+ *
+ * @returns Returns a promise which is resolved when the native layer
+ * shows the request dialog.
+ */
+ @Cordova({sync: true})
+ static requestAlwaysAuthorization(): Promise { return; }
+
+ /**
+ *
+ * @returns Returns a promise which is resolved with an {Array}
+ * of {Region} instances that are being monitored by the native layer.
+ */
+ @Cordova({sync: true})
+ static getMonitoredRegions(): Promise { return; }
+
+ /**
+ *
+ * @returns Returns a promise which is resolved with an {Array}
+ * of {Region} instances that are being ranged by the native layer.
+ */
+ @Cordova({sync: true})
+ static getRangedRegions(): Promise { return; }
+
+ /**
+ * Determines if ranging is available or not, according to the native layer.
+ * @returns Returns a promise which is resolved with a {Boolean}
+ * indicating whether ranging is available or not.
+ */
+ @Cordova({sync: true})
+ static isRangingAvailable(): Promise { return; }
+
+ /**
+ * Determines if region type is supported or not, according to the native layer.
+ *
+ * @param {Region} region An instance of {Region} which will be checked
+ * by the operating system.
+ *
+ * @returns Returns a promise which is resolved with a {Boolean}
+ * indicating whether the region type is supported or not.
+ */
+ @Cordova({sync: true})
+ static isMonitoringAvailableForClass(region: Region): Promise { return; }
+
+ /**
+ * Start advertising the specified region.
+ *
+ * If a region a different identifier is already being advertised for
+ * this application, it will be replaced with the new identifier.
+ *
+ * This call will accept a valid beacon even when no BlueTooth is available,
+ * and will start when BlueTooth is powered on. See {Delegate.}
+ *
+ * @param {Region} region An instance of {Region} which will be advertised
+ * by the operating system.
+ * @param {Integer} measuredPower: Optional parameter, if left empty, the device will
+ * use it's own default value.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the dispatch of the advertising request.
+ */
+ @Cordova({sync: true})
+ static startAdvertising(region: Region, measuredPower: number): Promise { return; }
+
+ /**
+ * Stop advertising as a beacon.
+ *
+ * This is done asynchronously and may not be immediately reflected in isAdvertising.
+ *
+ * @return Returns a promise which is resolved as soon as the
+ * native layer acknowledged the dispatch of the request to stop advertising.
+ */
+ @Cordova({sync: true})
+ static stopAdvertising(region: Region): Promise { return; }
+
+ /**
+ * Determines if advertising is available or not, according to the native layer.
+ * @returns Returns a promise which is resolved with a {Boolean}
+ * indicating whether advertising is available or not.
+ */
+ @Cordova({sync: true})
+ static isAdvertisingAvailable(): Promise { return; }
+
+ /**
+ * Determines if advertising is currently active, according to the native layer.
+ * @returns Returns a promise which is resolved with a {Boolean}
+ * indicating whether advertising is active.
+ */
+ @Cordova({sync: true})
+ static isAdvertising(): Promise { return; }
+
+ /**
+ * Disables debug logging in the native layer. Use this method if you want
+ * to prevent this plugin from writing to the device logs.
+ *
+ * @returns Returns a promise which is resolved as soon as the
+ * native layer has set the logging level accordingly.
+ */
+ @Cordova({sync: true})
+ static disableDebugLogs(): Promise { return; }
+
+ /**
+ * Enables the posting of debug notifications in the native layer. Use this method if you want
+ * to allow the plugin the posting local notifications.
+ * This can be very helpful when debugging how to apps behave when launched into the background.
+ *
+ * @returns Returns a promise which is resolved as soon as the
+ * native layer has set the flag to enabled.
+ */
+ @Cordova({sync: true})
+ static enableDebugNotifications(): Promise { return; }
+
+ /**
+ * Disables the posting of debug notifications in the native layer. Use this method if you want
+ * to prevent the plugin from posting local notifications.
+ *
+ * @returns Returns a promise which is resolved as soon as the
+ * native layer has set the flag to disabled.
+ */
+ @Cordova({sync: true})
+ static disableDebugNotifications(): Promise { return; }
+
+ /**
+ * Enables debug logging in the native layer. Use this method if you want
+ * a debug the inner workings of this plugin.
+ *
+ * @returns Returns a promise which is resolved as soon as the
+ * native layer has set the logging level accordingly.
+ */
+ @Cordova({sync: true})
+ static enableDebugLogs(): Promise { return; }
+
+ /**
+ * Appends the provided [message] to the device logs.
+ * Note: If debug logging is turned off, this won't do anything.
+ *
+ * @param {String} message The message to append to the device logs.
+ *
+ * @returns Returns a promise which is resolved with the log
+ * message received by the native layer for appending. The returned message
+ * is expected to be equivalent to the one provided in the original call.
+ */
+ @Cordova({sync: true})
+ static appendToDeviceLog(message: string): Promise { return; }
+
+}
\ No newline at end of file
diff --git a/src/plugins/launchnavigator.ts b/src/plugins/launchnavigator.ts
index b28ead09..ae931918 100644
--- a/src/plugins/launchnavigator.ts
+++ b/src/plugins/launchnavigator.ts
@@ -3,47 +3,58 @@ import {Plugin, Cordova} from './plugin';
export interface LaunchNavigatorOptions {
/**
- * iOS, Android, Windows
- * If true, the plugin will NOT attempt to use the geolocation plugin to determine the current device position when the start location parameter is omitted. Defaults to false.
+ * name of the navigation app to use for directions. Specify using launchnavigator.APP constants. If not specified, defaults to User Selection.
*/
- disableAutoGeolocation?: boolean;
+ app?: string;
+
+ /**
+ * nickname to display in app for destination. e.g. "Bob's House".
+ */
+ destinationName?: string;
+
+ /**
+ * Start point of the navigation
+ */
+ start?: string|number[];
+
+ /**
+ * nickname to display in app for start . e.g. "My House".
+ */
+ startName?: string;
/**
- * iOS, Android, Windows
* Transportation mode for navigation: "driving", "walking" or "transit". Defaults to "driving" if not specified.
*/
transportMode?: string;
/**
- * iOS
- * If true, plugin will attempt to launch Google Maps instead of Apple Maps. If Google Maps is not available, it will fall back to Apple Maps.
- */
- preferGoogleMaps?: boolean;
-
- /**
- * iOS
- * If using Google Maps and the app has a URL scheme, passing this to Google Maps will display a button which returns to the app.
- */
- urlScheme?: string;
-
- /**
- * iOS
- * If using Google Maps with a URL scheme, this specifies the text of the button in Google Maps which returns to the app. Defaults to "Back" if not specified.
- */
- backButtonText?: string;
-
- /**
- * iOS
* If true, debug log output will be generated by the plugin. Defaults to false.
*/
enableDebug?: boolean;
/**
- * Android
- * Navigation mode in which to open Google Maps app: "maps" or "turn-by-turn". Defaults to "maps" if not specified.
+ * a key/value map of extra app-specific parameters. For example, to tell Google Maps on Android to display Satellite view in "maps" launch mode: `{"t": "k"}`
*/
- navigationMode?: string;
+ 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.
+ */
+ launchMode?: 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.
+ */
+ appSelectionDialogHeader?: 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.
+ */
+ appSelectionCancelButton?: string;
+
+ successCallback?: Function;
+
+ errorCallback?: Function;
}
/**
@@ -52,12 +63,17 @@ export interface LaunchNavigatorOptions {
* Requires Cordova plugin: uk.co.workingedge.phonegap.plugin.launchnavigator. For more info, please see the [LaunchNavigator plugin docs](https://github.com/dpa99c/phonegap-launch-navigator).
*
* @usage
+ * Please refer to the plugin's repo for detailed usage. This docs page only explains the Native wrapper.
+ *
* ```js
- * import {LaunchNavigator} from 'ionic-native';
+ * import {LaunchNavigator, LaunchNavigatorOptions} from 'ionic-native';
*
+ * let options: LaunchNavigatorOptions = {
+ * start: 'London, ON',
+ * app: LaunchNavigator.APPS.UBER
+ * };
*
- *
- * LaunchNavigator.navigate("Toronto, ON", "London, ON")
+ * LaunchNavigator.navigate("Toronto, ON", options)
* .then(
* success => console.log("Launched navigator"),
* error => console.log("Error launching navigator", error)
@@ -73,19 +89,109 @@ export class LaunchNavigator {
/**
* Launches navigator app
- * @param destination Location name or coordinates
- * @param start Location name or coordinates
- * @param options
+ * @param destination {string|number[]} Location name or coordinates (as string or array)
+ * @param options {LaunchNavigatorOptions}
* @returns {Promise}
*/
@Cordova({
- successIndex: 2,
- errorIndex: 3
+ successIndex: 1,
+ errorIndex: 2
})
static navigate(
- destination: any,
- start: any = null,
+ destination: string|number[],
options?: LaunchNavigatorOptions
): Promise { return; }
+ /**
+ * Determines if the given app is installed and available on the current device.
+ * @param app {string}
+ */
+ @Cordova()
+ static isAppAvailable(app: string): Promise {return; }
+
+ /**
+ * Returns a list indicating which apps are installed and available on the current device.
+ */
+ @Cordova()
+ static availableApps(): Promise {return; }
+
+ /**
+ * Returns the display name of the specified app.
+ * @param app {string}
+ */
+ @Cordova({sync: true})
+ static getAppDisplayName(app: string): string {return; }
+
+ /**
+ * Returns list of supported apps on a given platform.
+ * @param platform {string}
+ */
+ @Cordova({sync: true})
+ static getAppsForPlatform(platform: string): string[] {return; }
+
+ /**
+ * Indicates if an app on a given platform supports specification of transport mode.
+ * @param app {string} specified as a string, you can use one of the constants, e.g `LaunchNavigator.APP.GOOGLE_MAPS`
+ * @param platform {string}
+ */
+ @Cordova({sync: true})
+ static supportsTransportMode(app: string, platform: string): boolean {return; }
+
+ /**
+ * Returns the list of transport modes supported by an app on a given platform.
+ * @param app {string}
+ * @param platform {string}
+ */
+ @Cordova({sync: true})
+ static 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}
+ */
+ @Cordova({sync: true})
+ static supportsLaunchMode(app: string, platform: string): boolean {return; }
+
+ /**
+ * Indicates if an app on a given platform supports specification of start location.
+ * @param app {string}
+ * @param platform {string}
+ */
+ @Cordova({sync: true})
+ static supportsStart(app: string, platform: string): boolean {return; }
+
+ @Cordova({sync: true})
+ static supportsStartName(app: string, platform: string): boolean {return; }
+
+ @Cordova({sync: true})
+ static supportsDestName(app: string, platform: string): boolean {return; }
+
+ @Cordova({sync: true})
+ static userSelect(destination: string|number[], options: LaunchNavigatorOptions): void { }
+
+ static 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'
+ };
+
+ static TRANSPORT_MODE: any = {
+ DRIVING: 'driving',
+ WALKING: 'walking',
+ BICYCLING: 'bicycling',
+ TRANSIT: 'transit'
+ };
}
diff --git a/src/plugins/media-capture.ts b/src/plugins/media-capture.ts
new file mode 100644
index 00000000..4366dc51
--- /dev/null
+++ b/src/plugins/media-capture.ts
@@ -0,0 +1,219 @@
+import {Plugin, Cordova, CordovaProperty} from './plugin';
+import {Observable} from 'rxjs/Rx';
+declare var navigator: any;
+/**
+ * @name Media Capture
+ * @description
+ * @usage
+ * ```typescript
+ * import {MediaCapture} from 'ionic-native';
+ *
+ * ...
+ *
+ * let options: CaptureImageOptions = { limit: 3 };
+ * MediaCapture.captureImage(options)
+ * .then(
+ * (data: MediaFile[]) => console.log(data),
+ * (err: CaptureError) => console.error(err)
+ * );
+ *
+ * ```
+ */
+@Plugin({
+ plugin: 'cordova-plugin-media-capture',
+ pluginRef: 'navigator.device.capture',
+ repo: 'https://github.com/apache/cordova-plugin-media-capture'
+})
+export class MediaCapture {
+ /**
+ * The audio recording formats supported by the device.
+ * @returns {ConfigurationData[]}
+ */
+ @CordovaProperty
+ static get supportedImageModes(): ConfigurationData[] {
+ return navigator.device.capture.supportedImageModes;
+ }
+
+ /**
+ * The recording image sizes and formats supported by the device.
+ * @returns {ConfigurationData[]}
+ */
+ @CordovaProperty
+ static get supportedAudioModes(): ConfigurationData[] {
+ return navigator.device.capture.supportedAudioModes;
+ }
+
+ /**
+ * The recording video resolutions and formats supported by the device.
+ * @returns {ConfigurationData[]}
+ */
+ @CordovaProperty
+ static get supportedVideoModes(): ConfigurationData[] {
+ return navigator.device.capture.supportedVideoModes;
+ }
+
+ /**
+ * Start the audio recorder application and return information about captured audio clip files.
+ * @param options
+ */
+ @Cordova({
+ callbackOrder: 'reverse'
+ })
+ static captureAudio(options?: CaptureAudioOptions): Promise {return; }
+
+ /**
+ * Start the camera application and return information about captured image files.
+ * @param options
+ */
+ @Cordova({
+ callbackOrder: 'reverse'
+ })
+ static captureImage(options?: CaptureImageOptions): Promise {return; }
+
+ /**
+ * Start the video recorder application and return information about captured video clip files.
+ * @param options
+ */
+ @Cordova({
+ callbackOrder: 'reverse'
+ })
+ static captureVideo(options?: CaptureVideoOptions): Promise {return; }
+
+ /**
+ * is fired if the capture call is successful
+ */
+ @Cordova({
+ eventObservable: true,
+ event: 'pendingcaptureresult'
+ })
+ static onPendingCaptureResult(): Observable {return; }
+
+ /**
+ * is fired if the capture call is unsuccessful
+ */
+ @Cordova({
+ eventObservable: true,
+ event: 'pendingcaptureerror'
+ })
+ static onPendingCaptureError(): Observable {return; }
+
+}
+/**
+ * Encapsulates properties of a media capture file.
+ */
+export interface MediaFile {
+ /**
+ * The name of the file, without path information.
+ */
+ name: string;
+ /**
+ * The full path of the file, including the name.
+ */
+ fullPath: string;
+ /**
+ * The file's mime type
+ */
+ type: string;
+ /**
+ * The date and time when the file was last modified.
+ */
+ lastModifiedDate: Date;
+ /**
+ * The size of the file, in bytes.
+ */
+ size: number;
+ /**
+ * Retrieves the format information of the media file.
+ * @param {Function} successCallback
+ * @param {Function} errorCallback
+ */
+ getFormatData(successCallback: (data: MediaFileData) => any, errorCallback?: (err: any) => any);
+}
+/**
+ * Encapsulates format information about a media file.
+ */
+export interface MediaFileData {
+ /**
+ * The actual format of the audio and video content.
+ */
+ codecs: string;
+ /**
+ * The average bitrate of the content. The value is zero for images.
+ */
+ bitrate: number;
+ /**
+ * The height of the image or video in pixels. The value is zero for audio clips.
+ */
+ height: number;
+ /**
+ * The width of the image or video in pixels. The value is zero for audio clips.
+ */
+ width: number;
+ /**
+ * The length of the video or sound clip in seconds. The value is zero for images.
+ */
+ duration: number;
+}
+/**
+ * Encapsulates the error code resulting from a failed media capture operation.
+ */
+export interface CaptureError {
+ code: string;
+}
+/**
+ * Encapsulates audio capture configuration options.
+ */
+export interface CaptureAudioOptions {
+ /**
+ * Maximum number of audio clips. Defaults to 1.
+ * On iOS you can only record one file.
+ */
+ limit?: number;
+ /**
+ * Maximum duration of an audio sound clip, in seconds. This does not work on Android devices.
+ */
+ duration?: number;
+}
+/**
+ * Encapsulates image capture configuration options.
+ */
+export interface CaptureImageOptions {
+ /**
+ * Maximum number of images to capture. This limit is not supported on iOS, only one image will be taken per invocation.
+ */
+ limit?: number;
+}
+/**
+ * Encapsulates video capture configuration options.
+ */
+export interface CaptureVideoOptions {
+ /**
+ * Maximum number of video clips to record. This value is ignored on iOS, only one video clip can be taken per invocation.
+ */
+ limit?: number;
+ /**
+ * Maximum duration per video clip. This will be ignored on BlackBerry.
+ */
+ duration?: number;
+ /**
+ * Quality of the video. This parameter can only be used with Android.
+ */
+ quality?: number;
+}
+/**
+ * Encapsulates a set of media capture parameters that a device supports.
+ */
+export interface ConfigurationData {
+ /**
+ * The ASCII-encoded lowercase string representing the media type.
+ */
+ type: string;
+ /**
+ * The height of the image or video in pixels. The value is zero for sound clips.
+ */
+ height: number;
+ /**
+ * The width of the image or video in pixels. The value is zero for sound clips.
+ */
+ width: number;
+}
diff --git a/src/plugins/nativestorage.ts b/src/plugins/nativestorage.ts
new file mode 100644
index 00000000..3a19ef6f
--- /dev/null
+++ b/src/plugins/nativestorage.ts
@@ -0,0 +1,56 @@
+import {Plugin, Cordova} from './plugin';
+/**
+ * @name Native Storage
+ * @description
+ *
+ * @usage
+ * ```typescript
+ * import {NativeStorage} from 'ionic-native';
+ *
+ * NativeStorage.setItem('myitem', {property: 'value', anotherProperty: 'anotherValue'})
+ * .then(
+ * () => console.log('Stored item!'),
+ * error => console.error('Error storing item', error)
+ * );
+ *
+ * NativeStorage.getItem('myitem')
+ * .then(
+ * data => console.log(data),
+ * error => console.error(error)
+ * );
+ * ```
+ */
+@Plugin({
+ plugin: 'cordova-plugin-nativestorage',
+ pluginRef: 'NativeStorage',
+ repo: 'https://github.com/TheCocoaProject/cordova-plugin-nativestorage'
+})
+export class NativeStorage {
+ /**
+ * Stores a value
+ * @param reference
+ * @param value
+ */
+ @Cordova()
+ static setItem(reference: string, value: any): Promise {return; }
+
+ /**
+ * Gets a stored item
+ * @param reference
+ */
+ @Cordova()
+ static getItem(reference: string): Promise {return; }
+
+ /**
+ * Removes a single stored item
+ * @param reference
+ */
+ @Cordova()
+ static remove(reference: string): Promise {return; }
+
+ /**
+ * Removes all stored values.
+ */
+ @Cordova()
+ static clear(): Promise {return; }
+}
diff --git a/src/plugins/network.ts b/src/plugins/network.ts
index ba79dfef..43bbba3d 100644
--- a/src/plugins/network.ts
+++ b/src/plugins/network.ts
@@ -10,7 +10,7 @@ declare var navigator: any;
*
* @usage
* ```js
- * import {Network, Connection} from 'ionic-native';
+ * import {Network} from 'ionic-native';
*
* // watch network for a disconnect
* let disconnectSubscription = Network.onDisconnect().subscribe(() => {
@@ -28,8 +28,7 @@ declare var navigator: any;
*
// before we determine the connection type. Might need to wait
* // prior to doing any api requests as well.
* setTimeout(() => {
- * console.log(Network.connection);
- * if (Network.connection === Connection.WIFI) {
+ * if (Network.connection === 'wifi') {
* console.log('we got a wifi connection, woohoo!');
* }
* }, 3000);
@@ -39,6 +38,8 @@ declare var navigator: any;
* connectSubscription.unsubscribe();
*
* ```
+ * @advanced
+ * The `connection` property will return one of the following connection types: `unknown`, `ethernet`, `wifi`, `2g`, `3g`, `4g`, `cellular`, `none`
*/
@Plugin({
plugin: 'cordova-plugin-network-information',
@@ -52,7 +53,7 @@ export class Network {
* Return the network connection type
*/
@CordovaProperty
- static get connection(): Connection { return navigator.connection.type; }
+ static get connection(): String { return navigator.connection.type; }
/**
* Get notified when the device goes offline
@@ -75,14 +76,3 @@ export class Network {
static onConnect(): Observable { return; }
}
-
-export class Connection {
- static get UNKNOWN() { return 'unknown'; }
- static get ETHERNET() { return 'ethernet'; }
- static get WIFI() { return 'wifi'; }
- static get CELL_2G() { return '2g'; }
- static get CELL_3G() { return '3g'; }
- static get CELL_4G() { return '4g'; }
- static get CELL() { return 'cellular'; }
- static get NONE() { return 'none'; }
-}
diff --git a/src/plugins/pin-dialog.ts b/src/plugins/pin-dialog.ts
new file mode 100644
index 00000000..bc6671fe
--- /dev/null
+++ b/src/plugins/pin-dialog.ts
@@ -0,0 +1,37 @@
+import {Plugin, Cordova} from './plugin';
+/**
+ * @name Pin Dialog
+ * @description
+ *
+ * @usage
+ * ```typescript
+ * import {PinDialog} from 'ionic-native';
+ *
+ * ...
+ *
+ * PinDialog.prompt('Enter your PIN', 'Verify PIN', ['OK', 'Cancel'])
+ * .then(
+ * (result: any) => {
+ * if(result.buttonIndex == 1) console.log('User clicked OK, value is: ', result.input1);
+ * else if(result.buttonIndex == 2) console.log('User cancelled');
+ * }
+ * );
+ * ```
+ */
+@Plugin({
+ plugin: 'cordova-plugin-pin-dialog',
+ pluginRef: 'plugins.pinDialog',
+ repo: 'https://github.com/Paldom/PinDialog'
+})
+export class PinDialog {
+ /**
+ * Show pin dialog
+ * @param {string} message Message to show the user
+ * @param {string} title Title of the dialog
+ * @param {string[]} buttons Buttons to show
+ */
+ @Cordova({
+ successIndex: 1
+ })
+ static prompt(message: string, title: string, buttons: string[]): Promise<{buttonIndex: number, input1: string}> {return; }
+}
diff --git a/src/plugins/plugin.ts b/src/plugins/plugin.ts
index b6dc607b..99b99c0e 100644
--- a/src/plugins/plugin.ts
+++ b/src/plugins/plugin.ts
@@ -142,6 +142,7 @@ function callInstance(pluginObj: any, methodName: string, args: any[], opts: any
function wrapInstance (pluginObj: any, methodName: string, opts: any = {}) {
return (...args) => {
if (opts.sync) {
+ // Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is
return callInstance(pluginObj, methodName, args, opts);
} else if (opts.observable) {
return new Observable(observer => {
@@ -173,9 +174,8 @@ function wrapInstance (pluginObj: any, methodName: string, opts: any = {}) {
*/
function wrapEventObservable (event: string): Observable {
return new Observable(observer => {
- let callback = (status: any) => observer.next(status);
- window.addEventListener(event, callback, false);
- return () => window.removeEventListener(event, callback, false);
+ window.addEventListener(event, observer.next.bind(observer), false);
+ return () => window.removeEventListener(event, observer.next.bind(observer), false);
});
}
@@ -190,6 +190,7 @@ export const wrap = function(pluginObj: any, methodName: string, opts: any = {}
return (...args) => {
if (opts.sync)
+ // Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is
return callCordovaPlugin(pluginObj, methodName, args, opts);
else if (opts.observable)
diff --git a/src/plugins/push.ts b/src/plugins/push.ts
index eec40e24..42cb47d3 100644
--- a/src/plugins/push.ts
+++ b/src/plugins/push.ts
@@ -191,24 +191,24 @@ export interface IOSPushOptions {
* The data required in order to enable Action Buttons for iOS.
* Action Buttons on iOS - https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#action-buttons-1
*/
- categories?: CategoryArray
+ categories?: CategoryArray;
}
export interface CategoryArray {
- [name: string]: CategoryAction
+ [name: string]: CategoryAction;
}
export interface CategoryAction {
- yes?: CategoryActionData
- no?: CategoryActionData
- maybe?: CategoryActionData
+ yes?: CategoryActionData;
+ no?: CategoryActionData;
+ maybe?: CategoryActionData;
}
export interface CategoryActionData {
- callback: string
- title: string
- foreground: boolean
- destructive: boolean
+ callback: string;
+ title: string;
+ foreground: boolean;
+ destructive: boolean;
}
export interface AndroidPushOptions {
diff --git a/src/plugins/safari-view-controller.ts b/src/plugins/safari-view-controller.ts
index 397748f6..e6c80e9e 100644
--- a/src/plugins/safari-view-controller.ts
+++ b/src/plugins/safari-view-controller.ts
@@ -41,7 +41,7 @@ import {Plugin, Cordova} from './plugin';
@Plugin({
plugin: 'cordova-plugin-safariviewcontroller',
pluginRef: 'SafariViewController',
- platforms: ['iOS'],
+ platforms: ['iOS', 'Android'],
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-safariviewcontroller'
})
export class SafariViewController {
@@ -56,17 +56,13 @@ export class SafariViewController {
* Shows Safari View Controller
* @param options
*/
- @Cordova({
- callbackOrder: 'reverse'
- })
+ @Cordova()
static show(options?: SafariViewControllerOptions): Promise {return; }
/**
* Hides Safari View Controller
*/
- @Cordova({
- sync: true
- })
+ @Cordova()
static hide(): void {}
/**
diff --git a/src/plugins/sim.ts b/src/plugins/sim.ts
new file mode 100644
index 00000000..7155cb7a
--- /dev/null
+++ b/src/plugins/sim.ts
@@ -0,0 +1,35 @@
+import {Plugin, Cordova} from './plugin';
+
+/**
+ * @name Sim
+ * @description
+ * Gets info from the Sim card like the carrier name, mcc, mnc and country code and other system dependent info.
+ *
+ * Requires Cordova plugin: `cordova-plugin-sim`. For more info, please see the [Cordova Sim docs](https://github.com/pbakondy/cordova-plugin-sim).
+ *
+ * @usage
+ * ```js
+ * import {Sim} from 'ionic-native';
+ *
+ *
+ * Sim.getSimInfo().then(
+ * (info) => console.log('Sim info:', info),
+ * (err) => console.log('Unable to get sim info:', err)
+ * );
+ * ```
+ */
+@Plugin({
+ plugin: 'cordova-plugin-sim',
+ pluginRef: 'plugins.sim',
+ repo: 'https://github.com/pbakondy/cordova-plugin-sim',
+ platforms: ['Android', 'iOS', 'Windows Phone']
+})
+export class Sim {
+ /**
+ * Returns info from the SIM card.
+ * @returns {Promise}
+ */
+ @Cordova()
+ static getSimInfo(): Promise { return; }
+
+}
diff --git a/src/plugins/socialsharing.ts b/src/plugins/socialsharing.ts
index f94d7554..c6053bad 100644
--- a/src/plugins/socialsharing.ts
+++ b/src/plugins/socialsharing.ts
@@ -28,10 +28,8 @@ export class SocialSharing {
* @param file {string|Array} URL(s) to file(s) or image(s), local path(s) to file(s) or image(s), or base64 data of an image. Only the first file/image will be used on Windows Phone.
* @param url {string} A URL to share
*/
- @Cordova({
- sync: true
- })
- static share (message?: string, subject?: string, file?: string|Array, url?: string): void {}
+ @Cordova()
+ static share (message?: string, subject?: string, file?: string|Array, url?: string): Promise {return; }
/**
* Shares using the share sheet with additional options and returns a result object or an error message (requires plugin version 5.1.0+)
@@ -58,10 +56,9 @@ export class SocialSharing {
* @param url
*/
@Cordova({
- sync: true,
platforms: ['iOS', 'Android']
})
- static shareViaTwitter (message: string, image?: string, url?: string): void {}
+ static shareViaTwitter (message: string, image?: string, url?: string): Promise {return; }
/**
* Shares directly to Facebook
diff --git a/src/plugins/spinnerdialog.ts b/src/plugins/spinnerdialog.ts
index 3f019609..b577ee57 100644
--- a/src/plugins/spinnerdialog.ts
+++ b/src/plugins/spinnerdialog.ts
@@ -27,7 +27,7 @@ export class SpinnerDialog {
* Shows the spinner dialog
* @param title {string} Spinner title (shows on Android only)
* @param message {string} Spinner message
- * @param cancelCallback {boolean|function} Set to false to set spinner not cancelable. Or provide a function to call when the user cancels the spinner.
+ * @param cancelCallback {boolean|function} Set to true to set spinner not cancelable. Or provide a function to call when the user cancels the spinner.
* @param iOSOptions {object} Options for iOS only
*/
@Cordova({
@@ -50,4 +50,4 @@ export interface SpinnerDialogIOSOptions {
textColorRed?: number;
textColorGreen?: number;
textColorBlue?: number;
-}
\ No newline at end of file
+}
diff --git a/src/plugins/sqlite.ts b/src/plugins/sqlite.ts
index 5a90ac1a..8d37a967 100644
--- a/src/plugins/sqlite.ts
+++ b/src/plugins/sqlite.ts
@@ -53,7 +53,7 @@ export class SQLite {
* import { SQLite } from 'ionic-native';
*
* let db = new SQLite();
- * db.openDatabse({
+ * db.openDatabase({
* name: 'data.db',
* location: 'default' // the location field is required
* }).then(() => {
diff --git a/src/plugins/touchid.ts b/src/plugins/touchid.ts
index a84a0af6..86d0ccaf 100644
--- a/src/plugins/touchid.ts
+++ b/src/plugins/touchid.ts
@@ -53,7 +53,7 @@ export class TouchID {
* @return {Promise} Returns a Promise that resolves if yes, rejects if no.
*/
@Cordova()
- isAvailable(): Promise { return; }
+ static isAvailable(): Promise { return; }
/**
* Show TouchID dialog and wait for a fingerprint scan. If user taps 'Enter Password' button, brings up standard system passcode screen.