Giter VIP home page Giter VIP logo

Comments (5)

dpa99c avatar dpa99c commented on July 30, 2024

If Location Services is enabled, canRequest() will return false. It is only true if Location Services is disabled. Try the example project to see the logic.

from cordova-plugin-request-location-accuracy.

kaynz avatar kaynz commented on July 30, 2024

Your example from the README will never deliver a location point if that is true:

cordova.plugins.locationAccuracy.canRequest(function(canRequest){
    if(canRequest){
        cordova.plugins.locationAccuracy.request(function(){
            console.log("Request successful");
        }, function (error){
            console.error("Request failed");
            if(error){
                // Android only
                console.error("error code="+error.code+"; error message="+error.message);
                if(error.code !== cordova.plugins.locationAccuracy.ERROR_USER_DISAGREED){
                    if(window.confirm("Failed to automatically set Location Mode to 'High Accuracy'. Would you like to switch to the Location Settings page and do this manually?")){
                        cordova.plugins.diagnostic.switchToLocationSettings();
                    }
                }
            }
        }, cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY // iOS will ignore this
        );
    }
});

Am I missing something? :o

from cordova-plugin-request-location-accuracy.

dpa99c avatar dpa99c commented on July 30, 2024

The iOS plugin implementation is intended to request a location in order trigger the native dialog to enable Location Services to be switched ON if it is OFF, not to deliver a location (which is the job of cordova-plugin-geolocation) hence the example above is valid. Here is a commented version of the above example to indicate the logic:

cordova.plugins.locationAccuracy.canRequest(function(canRequest){ // Check if plugin is able to request the native dialog
    if(canRequest){ // If it can request the dialog
        // Location Services is OFF
        cordova.plugins.locationAccuracy.request(function(){ // Make a location request to invoke the native dialog
            console.log("Request successful"); // The location request was successful
        }, function (error){
            console.error("Request failed"); // The location request failed
            if(error){
                // Android only
                console.error("error code="+error.code+"; error message="+error.message);
                if(error.code !== cordova.plugins.locationAccuracy.ERROR_USER_DISAGREED){
                    if(window.confirm("Failed to automatically set Location Mode to 'High Accuracy'. Would you like to switch to the Location Settings page and do this manually?")){
                        cordova.plugins.diagnostic.switchToLocationSettings();
                    }
                }
            }
        }, cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY // iOS will ignore this
        );
    }else{
        // Location Services is already ON
    }
});

from cordova-plugin-request-location-accuracy.

kaynz avatar kaynz commented on July 30, 2024

Aww, now it makes sense. I thought it was canRequestLocation , but it is canRequestDialog. Thank you ;)

from cordova-plugin-request-location-accuracy.

laconstituante avatar laconstituante commented on July 30, 2024

The method name is misleading then.
It should be called isLocationPermissionRequired()
Cause when CanRequest returns false that means you can't access the location where it actually means that you don't need to ask permission!

from cordova-plugin-request-location-accuracy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.