2014-03-05 2 views
3

Я понимаю, что этот вопрос задан 100 раз, и я чувствую, что прочитал каждый вопрос и ответ, но я не нашел решения для своей проблемы.Телефонная подсказка GPS запрашивает дважды

У меня установлены и настроены плагины PhoneGap правильно.

Я подтвердил все файлы, расположенные в плагинах> org.apache.cordova.geolocation папку

Вот вызов функции геолокации в моей config.xml

<feature name="Geolocation"> 
    <param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" /> 
    <param name="ios-package" value="CDVLocation" /> 
</feature> 

Мое приложение призывая к геолокации только тогда, когда пользователь просит найти свое местоположение. Тем не менее, я позаботился использовать:

document.addEventListener("deviceready", beginSetup, false); 

Для обеспечения готовности устройства до вызова геолокации.

Первый запрос использует мое имя приложения. Второй вызов отображает длинный уродливый url. После первого запроса запрос имени приложения уходит (совершенный до сих пор), но уродливый url все еще запрашивает разрешение.

После устройства готов я связывание вызова местоположения к событию крана так:

geocoder = new google.maps.Geocoder(); 

    $("#my-location").bind("tap", function(e){ 
     //unrelated code omitted 
     //I know these times are big, but this is just testing at this point 
     var options = { maximumAge: 3600000, timeout: 60000, enableHighAccuracy: true }; 

     if(map != null){ 
      circle.setMap(null); 
      personalCircle.setMap(null); 
      google.maps.event.clearInstanceListeners(map); 
      deleteMarkers(); 
      map = null; 
     } 

     navigator.geolocation.getCurrentPosition(onSuccess, onError, options); 
}); 

Заранее спасибо за ваши советы. Пожалуйста, дайте мне знать, если вы хотите увидеть какой-либо другой код.

EDIT Я добавил следующие строки в мой config.xml для совета @cagdas. Все еще испытывает ту же проблему.

<gap:plugin name="org.apache.cordova.geolocation" /> 
<feature name="http://api.phonegap.com/1.0/geolocation"/> 

UPDATE

Этот вопрос, похоже, была решена с помощью последней версии PhoneGap. Теперь, когда я скомпилирую приложение, у меня больше нет этой проблемы. Мне не нужно ничего менять в коде.

+0

Привет @James, вы используете какие-либо другие рамки, такие как Sencha? –

+0

@JamesWong Я не использую никаких фреймворков, кроме рамки PhoneGap. – Bullyen

+0

Проблема заключается в том, что ваша 'bind ('tap')' запускается дважды по какой-либо причине, поэтому запрос пользователя дважды. Попробуйте заменить его на 'on ('click')' и посмотреть, как это происходит. –

ответ

1

Вам необходимо включить ниже линии в вашем config.xml:

<gap:plugin name="org.apache.cordova.geolocation" /> 

Если он не включен, HTML геолокации пытается найти свое местоположение и, как вы упомянули некоторые URL -possibly включая ваш MAC или другой идентификатор устройства - требуется одобрение.

После включения выше линий для устройств Android и Windows, пожалуйста, введите ниже линии адаптировать правильный premissions:

<feature name="http://api.phonegap.com/1.0/geolocation"/> 

Пожалуйста, проверьте эти документы проверки с правильной версией PhoneGap:

http://docs.build.phonegap.com/en_US/2.9.0/configuring_features.md.html https://build.phonegap.com/plugins/627

+0

Спасибо за предложение cadgas. Я добавил эти строки в свой config.xml, но я все еще вижу ту же проблему. Также жаль, что потребовалось столько времени, чтобы ответить. Начну немного работать над другим проектом. – Bullyen

1

Хотя я не совсем понимаю, что вы испытываете повторно: «первый запрос» и «второй звонок», я предложу это, fwiw ...

В начальной установке и выполнении приложения будет отображено приглашение, позволяющее приложению использовать ваше местоположение (для конфигурации CDV, требующей геолокации). Это подсказка, которая включает ваше имя приложения. Это одно время, и ответы пользователей определяют, было ли предоставлено разрешение, которое вы должны проверить, прежде чем делать последующие вызовы адресов.

Несмотря на то, что перед вызовом каких-либо методов геолокации рекомендуется проверить разрешение на размещение, оно должно завершиться неудачно, если разрешение не предоставлено.

«длинный уродливый url» связан с явным вызовом геолокации.

Если вы видите это только в вашем тренажере, то, пожалуйста, убедитесь, что у вас есть IOS Simulator -> Debug -> Location не установлено значение Нет

Если вы получаете ОБА этих один за другим, не касаясь вашего управления, тогда должен быть вызов геолокации, происходящий вне обработчика события, или обработчик события запускается программно.

Если вы получаете ОБА из них один за другим после нажатия на элемент управления, то что-то может быть неправильно в настройке вашего проекта, так как первое приглашение должно отображаться при начальной установке.

Пожалуйста, не нужно удалять приложение из симулятора, чтобы произошла «первоначальная установка приложения» (или сброс имитатора).

Если это не помогает, предоставьте варианты iOS и phonegap/cordova.

+0

Спасибо за информацию. Я перешел от этого проекта и не работал над ним некоторое время, но я уверен, что вы правы, был какой-то явный вызов, который вызывал это, но для жизни меня я не знаю, откуда он. Фактическая проблема, если я не был ясен (что я редко бываю), заключается в том, что при первом использовании приложения BOTH появится. При последующем использовании будет отображаться только уродливый url, поскольку приложение уже предоставило разрешения GPS. Я сделал только один GPS-вызов, который произошел только после того, как пользователь запросил поиск по местоположению. Кроме того, это произошло на сим и телефоне. – Bullyen

1

Вы должны указать скрипт cordova.js в index.html.

<script type="text/javascript" src="cordova.js"></script>

Этот файл будет создан и добавлен в platforms/<platform>/www при сборке. Я ударил головой об этой проблеме в течение нескольких дней и никогда не видел явного упоминания о том, что оставить этот файл будет причиной этого второго запроса прав. Я проверил примеры геолокации в официальных документах и, конечно же, эта строка находится в файле index.html.

Я знаю, что это старый вопрос, но я надеюсь, что это поможет кому-то в будущем.

Смежные вопросы