UNPKG

cordova.plugins.diagnostic

Version:

Cordova/Phonegap plugin to check the state of Location/WiFi/Camera/Bluetooth device settings.

161 lines (146 loc) 9.48 kB
/* globals cordova, require, exports, module */ /** * Diagnostic Motion plugin for iOS * * Copyright (c) 2015 Working Edge Ltd. * Copyright (c) 2012 AVANTIC ESTUDIO DE INGENIEROS **/ var Diagnostic_Motion = (function(){ /*********************** * * Internal properties * *********************/ var Diagnostic_Motion = {}; var Diagnostic = require("cordova.plugins.diagnostic.Diagnostic"); /******************** * * Public properties * ********************/ /** * Status of motion+tracking permission * @type {object} */ Diagnostic.motionStatus = Diagnostic_Motion.motionStatus = { "UNKNOWN": "unknown", // Status is not known "NOT_REQUESTED": "not_requested", // App has not yet requested this permission "DENIED_ALWAYS": "denied_always", // User denied access to this permission "RESTRICTED": "restricted", // Permission is unavailable and user cannot enable it. For example, when parental controls are in effect for the current user. "GRANTED": "authorized", // User granted access to this permission "NOT_AVAILABLE": "not_available", // Motion tracking not available on device "NOT_DETERMINED": "not_determined" // Motion authorization request status outcome cannot be determined on device }; /******************** * * Internal functions * ********************/ /***************************** * * Protected member functions * ****************************/ /********************** * * Public API functions * **********************/ /** * Checks if motion tracking is available on the current device. * Motion tracking is supported by iOS devices with an M7 co-processor (or above): that is iPhone 5s (or above), iPad Air (or above), iPad Mini 2 (or above). * * @param {Function} successCallback - The callback which will be called when operation is successful. * This callback function is passed a single boolean parameter which is TRUE if motion tracking is available on the current device. * @param {Function} errorCallback - The callback which will be called when operation encounters an error. * This callback function is passed a single string parameter containing the error message. */ Diagnostic_Motion.isMotionAvailable = function(successCallback, errorCallback) { return cordova.exec(Diagnostic._ensureBoolean(successCallback), errorCallback, 'Diagnostic_Motion', 'isMotionAvailable', []); }; /** * Checks if it's possible to determine the outcome of a motion authorization request on the current device. * There's no direct way to determine if authorization was granted or denied, so the Pedometer API must be used to indirectly determine this. * Therefore, if the device supports motion tracking but not Pedometer Event Tracking, while Motion Track permission can be requested, the outcome of the request cannot be determined. * Pedometer Event Tracking is only available on iPhones with an M7 co-processor (or above): that is iPhone 5s (or above). No iPads yet support it. * * @param {Function} successCallback - The callback which will be called when operation is successful. * This callback function is passed a single boolean parameter which is TRUE if it's possible to determine the outcome of a motion authorization request on the current device. * @param {Function} errorCallback - The callback which will be called when operation encounters an error. * This callback function is passed a single string parameter containing the error message. */ Diagnostic_Motion.isMotionRequestOutcomeAvailable = function(successCallback, errorCallback) { return cordova.exec(Diagnostic._ensureBoolean(successCallback), errorCallback, 'Diagnostic_Motion', 'isMotionRequestOutcomeAvailable', []); }; /** * Requests motion tracking authorization for the application. * The native dialog asking user's consent can only be invoked once after the app is installed by calling this function. * Once the user has either allowed or denied access, calling this function again will result in an error. * It is not possible to re-invoke the dialog if the user denied permission in the native dialog, * so in this case you will have to instruct the user how to change motion authorization manually via the Settings app. * When calling this function, the message contained in the `NSMotionUsageDescription` .plist key is displayed to the user; * this plugin provides a default message, but you should override this with your specific reason for requesting access. * There's no direct way to determine if authorization was granted or denied, so the Pedometer API must be used to indirectly determine this: * therefore, if the device supports motion tracking but not Pedometer Event Tracking, the outcome of requesting motion detection cannot be determined. * * @param {Function} successCallback - The callback which will be called when operation is successful. * This callback function is passed a single string parameter indicating the result: * - `cordova.plugins.diagnostic.motionStatus.GRANTED` - user granted motion authorization. * - `cordova.plugins.diagnostic.motionStatus.DENIED_ALWAYS` - user denied authorization. * - `cordova.plugins.diagnostic.motionStatus.RESTRICTED` - user cannot grant motion authorization. * - `cordova.plugins.diagnostic.motionStatus.NOT_AVAILABLE` - device does not support Motion Tracking. * Motion tracking is supported by iOS devices with an M7 co-processor (or above): that is iPhone 5s (or above), iPad Air (or above), iPad Mini 2 (or above). * - `cordova.plugins.diagnostic.motionStatus.NOT_DETERMINED` - authorization outcome cannot be determined because device does not support Pedometer Event Tracking. * Pedometer Event Tracking is only available on iPhones with an M7 co-processor (or above): that is iPhone 5s (or above). No iPads yet support it. * - `cordova.plugins.diagnostic.motionStatus.UNKNOWN` - motion tracking authorization is in an unknown state. * - {Function} errorCallback - The callback which will be called when an error occurs. This callback function is passed a single string parameter containing the error message. * @param {Function} errorCallback - The callback which will be called when operation encounters an error. * This callback function is passed a single string parameter containing the error message. */ Diagnostic_Motion.requestMotionAuthorization = function(successCallback, errorCallback) { return cordova.exec( successCallback, errorCallback, 'Diagnostic_Motion', 'requestMotionAuthorization', []); }; /** * Checks motion authorization status for the application. * There's no direct way to determine if authorization was granted or denied, so the Pedometer API is used to indirectly determine this. * Pedometer Event Tracking is only available on iPhones with an M7 co-processor (or above): that is iPhone 5s (or above). No iPads yet support it. * * @param {Function} successCallback - The callback which will be called when operation is successful. * This callback function is passed a single string parameter indicating the result: * - `cordova.plugins.diagnostic.motionStatus.NOT_REQUESTED` - App has not yet requested this permission. * - `cordova.plugins.diagnostic.motionStatus.GRANTED` - user granted motion authorization. * - `cordova.plugins.diagnostic.motionStatus.DENIED_ALWAYS` - user denied authorization. * - `cordova.plugins.diagnostic.motionStatus.RESTRICTED` - user cannot grant motion authorization. * - `cordova.plugins.diagnostic.motionStatus.NOT_AVAILABLE` - device does not support Motion Tracking. * Motion tracking is supported by iOS devices with an M7 co-processor (or above): that is iPhone 5s (or above), iPad Air (or above), iPad Mini 2 (or above). * - `cordova.plugins.diagnostic.motionStatus.NOT_DETERMINED` - authorization outcome cannot be determined because device does not support Pedometer Event Tracking. * Pedometer Event Tracking is only available on iPhones with an M7 co-processor (or above): that is iPhone 5s (or above). No iPads yet support it. * - `cordova.plugins.diagnostic.motionStatus.UNKNOWN` - motion tracking authorization is in an unknown state. * - {Function} errorCallback - The callback which will be called when an error occurs. This callback function is passed a single string parameter containing the error message. * @param {Function} errorCallback - The callback which will be called when operation encounters an error. * This callback function is passed a single string parameter containing the error message. */ Diagnostic_Motion.getMotionAuthorizationStatus = function(successCallback, errorCallback) { return cordova.exec( successCallback, errorCallback, 'Diagnostic_Motion', 'getMotionAuthorizationStatus', []); }; return Diagnostic_Motion; }); module.exports = new Diagnostic_Motion();