Подтвердить что ты не робот

Предупреждение о разрешении местоположения на iPhone с помощью PhoneGap

Как вы изменяете строку в предупреждении, говоря:

(Appname/что бы это ни было) хотел бы использовать ваше текущее местоположение

Конечно, я хочу изменить часть appname. Потому что, когда вы используете фреймворк PhoneGap, строка очень уродливая, что-то вроде этого:

/var/mobile/Applications/157EB70D-4AA7-826E-690F0CBE0F/appname.app/www/index.html

У кого-то есть идея?

4b9b3361

Ответ 1

Вам нужно выполнить геолокацию после того, как устройство будет готово. Следующий код JQuery, например, будет группироваться без этого неприятного предупреждения:

$(function(){
  document.addEventListener("deviceready", onDeviceReady, false);
})

function onDeviceReady() {
  navigator.geolocation.getCurrentPosition(onSuccess, onError);     
}

function onSuccess(position) {
  // your callback here 
}

function onError(error) { 
  // your callback here
}

Ответ 2

В телефонной книге 3.0 следует ответить Пию Узамере и установить плагин.

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

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

Ответ 3

Я только что выполнил документацию и решил ее. Откройте терминал и компакт-диск в своем проекте и введите следующую команду. $cordova plugin добавить https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

Также добавьте это в свой config.xml

<feature name="Geolocation">
    <param name="ios-package" value="CDVLocation" />
</feature>

Он решит эту проблему.:)

Источник: http://docs.phonegap.com/en/3.0.0/cordova_geolocation_geolocation.md.html#The%20Command-line%0AInterface

Ответ 4

Хотя этот вопрос намного старше, я нашел похожие вопросы здесь и здесь.

Для моего разрешения мне пришлось добавить NSLocationWhenInUseUsageDescription в файл .plist. Однако, я полагаю, поскольку мой плагин геолокации был устаревшим, мне пришлось сначала его обновить. Затем мне пришлось удалить/добавить платформу ICOS Кордовы. Наконец, я добавил NSLocationWhenInUseUsageDescription в файл .plist.

Сначала удалите/добавьте плагин геолокации:

cordova plugin rm org.apache.cordova.geolocation
cordova plugin add org.apache.cordova.geolocation

Во-вторых, удалите/добавьте платформу iOS:

cordova platform rm ios
cordova platform add ios

Наконец, добавьте NSLocationWhenInUseUsageDescription в .plist. Откройте /platforms/ios/{project}/{project}-Info.plist и добавьте следующее:

<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>

Смотрите iOS Developer Library link для получения более подробной информации о NSLocationWhenInUseUsageDescription против NSLocationAlwaysUsageDescription по сравнению с NSLocationUsageDescription.

Ответ 5

Наконец, исправлена ​​проблема.

В index.html просто переместите ваш cordova.js вверх

     < script src= "cordova.js" > </script>

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

Никаких других кодов или ondeviceready не требуется.

Ответ 6

Ни один из вышеперечисленных ответов не работал у меня. Мой запрос о местоположении уже стрелял в девицери. Добавление следующего в config.xml исправлено:

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

Ответ 7

Чтобы решить проблему, я должен запустить cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git, который добавляет (автоматически) в файл config.xml следующее:

<feature name="Geolocation">
     <param name="ios-package" value="CDVLocation" />
</feature>

Чтобы получить работу, я должен также поместить эти строки в файл config.xml:

<plugins>
        <plugin name="Device" value="CDVDevice" />
        <plugin name="Logger" value="CDVLogger" />
        <plugin name="Compass" value="CDVLocation" />
        <plugin name="NetworkStatus" value="CDVConnection" />
        <plugin name="Debug Console" value="CDVDebugConsole" />
        <plugin name="Geolocation" value="CDVLocation" />
        <plugin name="SplashScreen" value="CDVSplashScreen" />
        <plugin name="Battery" value="CDVBattery" />
        <plugin name="Globalization" value="CDVGlobalization" />
    </plugins>

Надеюсь, это может быть полезно.

Ответ 8

  • Просто включив файл "cordova.js" в ваш html файл, где вы обращаетесь к этому местоположению, разрешите эту проблему. НИЧЕГО НЕВОЗМОЖНО.

Ответ 9

После поиска решения, которое я основал, просто добавьте переменную, когда вы добавляете местоположение плагина, как эта строка

cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="your usage message"

Ответ 10

Я опаздываю на вечеринку здесь, но отвечу на вопрос для справки. Ответ заключается в использовании функций геолокации, найденных в phonegap.js, который включен в Phonegap. Вы сможете найти такие инструкции на сайте Phonegap по адресу http://www.phonegap.com.

Если вы используете navigator.geolocation, вы используете геолокационную систему Safari по умолчанию. Это происходит, поскольку PhoneGap работает, эффективно управляя вашими страницами в экземпляре Safari. Если вы включили phonegap.js на свой сайт, вы можете использовать отдельный метод геолокации, который вызывается кодом PhoneGap Objective-C, который будет отображать поведение, наблюдаемое в других приложениях, где он запрашивает разрешение от имени вашего приложения.

Ответ 11

1) изменить Location.m в проекте PhoneGapLib. заменить все ссылки на navigator.geolocation с navigator_geo

2) Скопируйте phonegap.js в phonegap2.js и вставьте его в корневое приложение. У меня есть сейчас узнал, что каждый раз, когда я создаю приложение и загружаю его на устройство или симулятора, файл phonegap.js восстанавливается. ОК. Ну, я необходимо изменить его, поэтому давайте просто использовать другой и суеты модернизации в будущем.

3) Измените строку (в phonegap2.js), которая создает конструктор для navigator.geolocation на 626 будет... if (typeof navigator._geo == "undefined" ) navigator._geo = new Geolocation();

4) Теперь, когда вы хотите использовать материал PHONEGAP GPS, вы можете ссылаться на него с помощью navigator._geo.getCurrentPosition или аналогичного 5) Наслаждайтесь ОДНОМ и ЧИСТЫМ, показывая своим пользователям вашу разумность использовать PhoneGap и приложение с HTML/JS.

* ПЕЧАТЬ И ПОЖАЛУЙСТА, ПОМОГИТЕ! *

Если я запустил функцию watchPosition, я получу первое место обновлять все виды статистики. После этого он всегда будет сообщать ошибка. Я предполагаю, что это отстой для этого 30-секундного времени получения точной GPS на этих вещах?

http://groups.google.com/group/phonegap/browse_thread/thread/8067c2037816a9ad

Ответ 12

Я следил за всеми инструкциями, и он все еще не прошел. В итоге я играл с демо-версией PhoneGap и нашел окончательное решение:

  • Переместите все файлы js и html файлы в одну и ту же папку (даже не вложенную папку). Поздравления! Проблема решена, больше нет предупреждений:)

  • Кстати, вам лучше использовать "setTimeout (function() {utility.getGeoData();}, 1000); Я нашел" document.addEventListener( "deviceready", utility.getGeoData(), false); не работает для меня.

Надеюсь, что это поможет, когда вы не найдете решения выше:)

Удачи!

Ответ 13

Поскольку я боролся уже несколько дней с той же проблемой и, наконец, нашел решение, я решил поделиться им с тем, кто еще не смог его исправить.

Решение прост: плагин геолокации отсутствовал в каталоге плагинов в каталоге www, хотя я добавил плагин через интерфейс командной строки phonegap. И файлы плагинов были в каталоге /Plugins. Поэтому вам нужно только скопировать недостающие файлы в /www/plugins, и все готово. Просто так.

Если кому-то нужны недостающие файлы: http://d.pr/f/xqhq

btw: я использую cordova 3.2.0.

Я надеюсь, что это сработает и для вас!

Ответ 14

Phoengap/Cordova версия 3.5 здесь.

Как и в ответ Manuel, но на этот раз плагин не устанавливается в папку platform/ios/[appname]/Plugins.

Исправление для меня состояло в том, чтобы просто вручную создать новую папку для плагина в папке.. /platforms/ios/ [appname]/Plugins > затем переименуйте ее в org.apache.cordova.geolocation > , затем скопируйте. h и .m файлов плагина.

Вы можете найти файлы .m и .h для плагина geoLocation в каталоге [root]/plugins/org.apache.cordova.geolocation/src/ios.

Ответ 15

После того, как мой запрос geolocation был вызван после того, как устройство было готово, убедитесь, что плагин геолокации правильно установлен и настроен, я все еще получал неприглядное всплывающее окно.

Я разрешил его, перемещая и ссылаясь на мои файлы cordova.js и cordova_plugins.js в корневой каталог моего приложения (они были изначально во вложенной папке), поэтому путь к cordova.js был бы следующим:

<script src="cordova.js"></script>  

Я считаю, что это должно быть включено в документацию (возможно, это так, но я не смог ее найти)

Ответ 16

Получил эту ошибку (и многое другое) после обновления Кордовы от 3.6 до 4.3.

Я думаю, что в процессе обновления есть некоторые сбои, и единственным рабочим решением для меня было cordova platform rm ios, затем cordova platform add ios

/!\Вы потеряете все свои настройки проекта ios, и вам нужно повторно загрузить всплеск и значки.

Ответ 17

В моем случае я использую Cordova/Ionic и испытываю ту же проблему. Это из-за кода перед устройством. Я просто завернул код с document.addEventListener на "deviceready". Например:

document.addEventListener("deviceready", function () {
  $cordovaGeolocation.getCurrentPosition(options).then(function(position){
      ...your code here...
    });
});

Затем дополнительное сообщение не появляется.

Ответ 18

"Переместите все файлы js и html файлы в одну и ту же папку (даже не вложенную папку). Поздравляем! Проблема решена, больше нет предупреждений:)" Как говорит Калеб, работает для меня, ну, только перемещая кордову. js к корню и добавление плагина в config.xml

Ответ 19

Каково отображаемое имя Bundle вашего проекта?

Попробуйте вручную изменить значение по умолчанию ${PRODUCT_NAME} и посмотрите..

Это разрешение на использование оповещения о местоположении выбирает только отображаемое имя вашего пакета!