diff --git a/src/index.ts b/src/index.ts index 83f9dc8455..8a042898b4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -64,6 +64,7 @@ import { IsDebug } from './plugins/is-debug'; import { Keyboard } from './plugins/keyboard'; import { LaunchNavigator } from './plugins/launchnavigator'; import { LocalNotifications } from './plugins/localnotifications'; +import { LocationAccuracy } from './plugins/location-accuracy'; import { MediaCapture } from './plugins/media-capture'; import { NativeAudio } from './plugins/native-audio'; import { NativePageTransitions } from './plugins/native-page-transitions'; @@ -98,7 +99,7 @@ import { ThreeDeeTouch } from './plugins/3dtouch'; import { Toast } from './plugins/toast'; import { TouchID } from './plugins/touchid'; import { TextToSpeech } from './plugins/text-to-speech'; -import {ThemableBrowser} from './plugins/themable-browser'; +import { ThemableBrowser } from './plugins/themable-browser'; import { TwitterConnect } from './plugins/twitter-connect'; import { Vibration } from './plugins/vibration'; import { VideoEditor } from './plugins/video-editor'; @@ -188,6 +189,7 @@ Insomnia, Instagram, IsDebug, Keyboard, +LocationAccuracy, MusicControls, NativeAudio, NativeStorage, @@ -278,6 +280,7 @@ window['IonicNative'] = { Keyboard, LaunchNavigator, LocalNotifications, + LocationAccuracy, Market, MediaCapture, MediaPlugin, diff --git a/src/plugins/location-accuracy.ts b/src/plugins/location-accuracy.ts new file mode 100644 index 0000000000..b99f2405e9 --- /dev/null +++ b/src/plugins/location-accuracy.ts @@ -0,0 +1,66 @@ +import {Plugin, Cordova} from './plugin'; +/** + * @name LocationAccuracy + * @description + * This Cordova/Phonegap plugin for Android and iOS to request enabling/changing of Location Services by triggering a native dialog from within the app, avoiding the need for the user to leave your app to change location settings manually. + * + * @usage + * ``` + * import { LocationAccuracy } from 'ionic-native'; + * + * LocationAccuracy.canRequest().then((canRequest: boolean) => { + * + * if(canRequest) { + * // the accuracy option will be ignored by iOS + * LocationAccuracy.request(LocaitonAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY).then( + * () => console.log('Request successful'), + * error => console.log('Error requesting location permissions', error) + * ); + * } + * + * }); + * + * ``` + */ +@Plugin({ + plugin: 'cordova-plugin-request-location-accuracy', + pluginRef: 'cordova.plugins.locationAccuracy', + repo: 'https://github.com/dpa99c/cordova-plugin-request-location-accuracy' +}) +export class LocationAccuracy { + /** + * Indicates if you can request accurate location + * @returns {Promise} Returns a promise that resovles with a boolean that indicates if you can request accurate location + */ + @Cordova() + static canRequest(): Promise { return; } + + /** + * Indicates if a request is currently in progress + * @returns {Promise} Returns a promise that resolves with a boolean that indicates if a request is currently in progress + */ + @Cordova() + static isRequesting(): Promise { return; } + + /** + * Requests accurate location + * @returns {Promise} Returns a promise that resolves on success and rejects if an error occurred + */ + @Cordova({ callbackOrder: 'reverse' }) + static request(accuracy: string): Promise { return; } + + static REQUEST_PRIORITY_NO_POWER = 0; + static REQUEST_PRIORITY_LOW_POWER = 1; + static REQUEST_PRIORITY_BALANCED_POWER_ACCURACY = 2; + static REQUEST_PRIORITY_HIGH_ACCURACY = 3; + static SUCCESS_SETTINGS_SATISFIED = 0; + static SUCCESS_USER_AGREED = 1; + static ERROR_ALREADY_REQUESTING = -1; + static ERROR_INVALID_ACTION = 0; + static ERROR_INVALID_ACCURACY = 1; + static ERROR_EXCEPTION = 1; + static ERROR_CANNOT_CHANGE_ACCURACY = 3; + static ERROR_USER_DISAGREED = 4; + static ERROR_GOOGLE_API_CONNECTION_FAILED = 4; + +}