Foro

Home Forums Apache Cordova Problema Plugin Geolocalizacion

This topic contains 18 replies, has 5 voices, and was last updated by  Nicolas Villalobos Gonzalez 3 meses, 1 semana .

Viendo 15 respuestas - de la 1 a 15 (de 19 en total)
  • Problema Plugin Geolocalizacion

    Intervenciones
  • Nicolas Villalobos Gonzalez 
    Participant

    Buenas, estoy desarrollando una aplicacion y necesito obtener las coordenadas para poder trabajar con ellas. Por lo que instale el plugin de geolocalizacion, pero al momento de probarlas no me entrega ninguna respuesta, funciona en el navegador, pero solo ahi, en el movil donde lo estoy probando no muestra ni siquiera un mensaje de error. He , buscado soluciones por la internet, pero no he llegado a nada.

    Empece hace poco con esto asi que ando algo perdido, espero me puedan ayudar. Gracias.


    Miguel Machado 
    Participant

    Si escribes un código con el api de geolocalización de HTML5 y muestras el resultado por pantalla, debería funcionar. Haz que responda a un evento de ratón, repetir el click a veces funciona.


    tecnostation 
    Participant

    yo tengo el mismo problema… me aparece “code: 3, time out expired”, pregunta adicional, estoy corriendo directamente en mi celular la app, hay forma de tener una consola y ver los console.log que manda mi teléfono?, saludos!! :)


    tecnostation 
    Participant

    hay forma de tener una consola y ver los console.log que manda mi teléfono?, la respuesta esta en “ANDROID DEVICE MONITOR”, empezaré a debuguear y ver que es lo que sucede y ver la forma de solucionar, forzar y/o acceder al GPS del dispositivo ;) , saludos!!


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola @tecnostation,

    Puedes ver el log de tu tlf conectándolo a tu ordenador y usando las herramientas de Chrome para dispositivos remotos.

    Te dejo aquí dos enlaces que pueden ayudarte con ello :)

    https://developers.google.com/web/tools/chrome-devtools/remote-debugging/?hl=es

    https://www.phonegapspain.com/tutorial/como-trabajar-con-la-consola-de-chrome-y-phonegap/

    Saludos!


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola de nuevo :)

    Para revisar que te está ocurriendo con el GPS sería necesario que compartas el código de tu archivo config.xml y el código JS que estás implementando, así podremos ver donde puede estar el problema :)

    ¿Estás compilando en local o en remoto con PhoneGap Build?

    Saludos!


    tecnostation 
    Participant

    hola Jose, uso el siguiente codigo de otro plugin que se supone que forza el uso del GPS y practicamente es el mismo que el plugin de geolocation (simple)

    ————————— CODIGO JAVASCRIPT —————————

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.

    var onSuccess = function(position) {
        alert('Latitude: '          + position.coords.latitude          + '\n' +
              'Longitude: '         + position.coords.longitude         + '\n' +
              'Altitude: '          + position.coords.altitude          + '\n' +
              'Accuracy: '          + position.coords.accuracy          + '\n' +
              'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
              'Heading: '           + position.coords.heading           + '\n' +
              'Speed: '             + position.coords.speed             + '\n' +
              'Timestamp: '         + position.timestamp                + '\n');
    };

    // onError Callback receives a PositionError object
    //
    function onError(error) {
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }

    LocationServices.getCurrentPosition(onSuccess, onError,{ maximumAge: 3000, timeout: 5000, enableHighAccuracy: true, priority: LocationServices.priorities.PRIORITY_HIGH_ACCURACY, interval: 6000, fastInterval: 1000 });

    ————————— ————————— ————————— —————————

    ————————— ARCHIVO CONFIG.XML —————————

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.
    23.
    24.
    25.
    26.
    27.
    28.
    29.
    30.
    31.
    32.
    33.

    <?xml version='1.0' encoding='utf-8'?>
    <widget id="com.example.helloFenixDrive" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
        <name>HelloCordova</name>
        <description>
            A sample Apache Cordova application that responds to the deviceready event.
        </description>
        <author email="dev@cordova.apache.org" href="http://cordova.io">
            Apache Cordova Team
        </author>
        <content src="index.html" />
        <plugin name="cordova-plugin-whitelist" spec="1" />
        <access origin="*" />
        <allow-intent href="http://*/*" />
        <allow-intent href="https://*/*" />
        <allow-intent href="tel:*" />
        <allow-intent href="sms:*" />
        <allow-intent href="mailto:*" />
        <allow-intent href="geo:*" />
        <platform name="android">
            <allow-intent href="market:*" />
        </platform>
        <platform name="ios">
            <allow-intent href="itms:*" />
            <allow-intent href="itms-apps:*" />
        </platform>
        <feature name="Geolocation">
            <param name="android-package" value="org.apache.cordova.GeoBroker" />
        </feature>
        <plugin name="cordova-plugin-locationservices" source="npm" spec="^2.1.0" />
        <plugin name="cordova-plugin-console" spec="^1.1.0" />
        <plugin name="cordova.plugins.diagnostic" spec="^4.0.10" />
        <engine name="android" spec="^7.1.2" />
    </widget>

    ————————— ————————— ————————— —————————

    ————————— ARCHIVO ANDROIDMANIFEST.XML —————————

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.

    <?xml version='1.0' encoding='utf-8'?>
    <manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.example.helloFenixDrive" xmlns:android="http://schemas.android.com/apk/res/android">
        <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
        <uses-permission android:name="android.permission.INTERNET" />
        <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
            <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
                <intent-filter android:label="@string/launcher_name">
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="27" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
        <uses-permission android:name="android.permission.BLUETOOTH" />
    </manifest>

    ————————— ————————— ————————— —————————

    Lo compilo desde mi PC por medio de la consola (cordova run android –target=”id_dispositivo”)

    • This reply was modified 3 meses, 1 semana by Jose Jesus Perez Rivas Jose Jesus Perez Rivas. Reason: Recuerda usar la etiqueta "code" para publicar código con buen formato

    • This reply was modified 3 meses, 1 semana by Jose Jesus Perez Rivas Jose Jesus Perez Rivas. Reason: Recuerda usar la etiqueta "code" para publicar código con buen formato
    tecnostation 
    Participant

    he navegado por la web ya varios dias y estoy atorado como nuestro amigo @shuungo y he encontrado que el problema es por los permisos, por cuestiones de versiones de android antes se daban los permisos cuando se instalaban, aora es cuando se usa la app, se supone que este plugin “Android permission Cordova plugin” te deberia de ayudar a dar el permiso, pero resulta que indica un error de : “Uncaught TypeError: Cannot read property ‘permissions’ of undefined”, esto lo tome de aqui “https://github.com/NeoLSN/cordova-plugin-android-permissions”; de verdad que no entiendo que es lo que pase, alguien ya ha hecho un “requestPermission” con exito?, saludos!!


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola @tecnostation,

    yo lo primero que haría es un test con el plugin oficial de Apache Cordova, añade este plugin a tu config.xml

    1.  <plugin name="cordova-plugin-geolocation" source="npm" spec="~2.4.3" />

    Implementa este código en tu archivo JS y veremos que pasa ;)

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.

    var onSuccess = function(position) {
            alert('Latitude: '          + position.coords.latitude          + '\n' +
                  'Longitude: '         + position.coords.longitude         + '\n' +
                  'Altitude: '          + position.coords.altitude          + '\n' +
                  'Accuracy: '          + position.coords.accuracy          + '\n' +
                  'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
                  'Heading: '           + position.coords.heading           + '\n' +
                  'Speed: '             + position.coords.speed             + '\n' +
                  'Timestamp: '         + position.timestamp                + '\n');
        };

        // onError Callback receives a PositionError object
        //
        function onError(error) {
            alert('code: '    + error.code    + '\n' +
                  'message: ' + error.message + '\n');
        }

        navigator.geolocation.getCurrentPosition(onSuccess, onError);

    Ya nos cuentas :)


    tecnostation 
    Participant

    ok, jose.. hice un nuevo proyecto, con todo lo necesario para la instalacion del plugin de geolocalizacion version 2.4.3 y me aparece este error en la consola:

    11-15 10:11:03.620: I/chromium(29393): [INFO:CONSOLE(21)] “Refused to execute inline script because it violates the following Content Security Policy directive: “default-src ‘self’ data: gap: https://ssl.gstatic.com ‘unsafe-eval’”. Either the ‘unsafe-inline’ keyword, a hash (‘sha256-…’), or a nonce (‘nonce-…’) is required to enable inline execution. Note also that ‘script-src’ was not explicitly set, so ‘default-src’ is used as a fallback.

    nunca lo habia visto pero investigare por el momento, mas tarde indicare que pude avanzar.


    Daniel Riera
    Daniel Riera 
    Participant

    Hola, ese error proviene del meta tag <meta http-equiv=”Content-Security-Policy” content=”……” />

    Aquí tienes toda la info https://content-security-policy.com/

    Saludos


    tecnostation 
    Participant

    hola @Daniel Riera termine quitando ese meta tag, pero sigo teniendo el mismo problema de “code: 3 timeout expired”, no encuentro como solucionarlo :’(


    Daniel Riera
    Daniel Riera 
    Participant

    Hola de nuevo,

    No tienes que quitarlo, tienes que configurarlo, añadiendo las urls.

    En el enlace que te he pasado aparece todo explicado.

    Sin ese tag no te va a funcionar en dispositivos físicos.

    Saludos


    tecnostation 
    Participant

    Hola @Daniel Rivera si ya lo revise, vi algunos ejmplos en la web pero… no se que url usar ya que el error lo manda cuando agrego el codigo javascript

    var onSuccess = function(position) {
    alert(‘Latitude: ‘ + position.coords.latitude + ‘\n’ +
    ‘Longitude: ‘ + position.coords.longitude + ‘\n’ +
    ‘Altitude: ‘ + position.coords.altitude + ‘\n’ +
    ‘Accuracy: ‘ + position.coords.accuracy + ‘\n’ +
    ‘Altitude Accuracy: ‘ + position.coords.altitudeAccuracy + ‘\n’ +
    ‘Heading: ‘ + position.coords.heading + ‘\n’ +
    ‘Speed: ‘ + position.coords.speed + ‘\n’ +
    ‘Timestamp: ‘ + position.timestamp + ‘\n’);
    };

    // onError Callback receives a PositionError object
    //
    function onError(error) {
    alert(‘code: ‘ + error.code + ‘\n’ +
    ‘message: ‘ + error.message + ‘\n’);
    }

    navigator.geolocation.getCurrentPosition(onSuccess, onError,{ maximumAge: 3000, timeout: 5000, enableHighAccuracy: true };);

    la verdad es que no le entiendo muy bien a esas politicas de seguridad, este tag me funciono bien hasta que agregue el codigo javascript

    <meta http-equiv=”Content-Security-Policy” content=”default-src ‘self’ data: gap: https://ssl.gstatic.com ‘unsafe-eval’; style-src ‘self’ ‘unsafe-inline’; media-src *; img-src ‘self’ data: content:;”>

    que url tendria que poner para usar el GPS del dispositivo? :/


    tecnostation 
    Participant

    perdonen pero es la primera vez que me topo con este problema, antes usaba eclipse con los plugins de phonegap precargados y ya solo los usaba a mi conveniencia y nunca tuve este problema hasta ahora ya que deje de programar para moviles hace ya bastante tiempo y veo que hay ya varios cambios en distintos aspectos, del ultimo problema parecido que llegue a ver fue unos de acces origin*, pero ya tiene mucho tiempo y lo supe solucionar ahora la verdad estoy muy desorientado :/… debido a la falta de actualización yo creo, les ofrezco disculpas y un agradecimiento por su apoyo :)


Viendo 15 respuestas - de la 1 a 15 (de 19 en total)

You must be logged in to reply to this topic.