Уведомление о разрешении местоположения на iPhone с PhoneGap

Как изменить строку в сообщении:

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

Конечно, я хочу изменить только часть приложения. Потому что, когда вы используете каркас PhoneGap, строкаочень некрасиво, как то так

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

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

Ответы на вопрос(19)

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

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

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

Кстати: я использую Cordova 3.2.0.

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

 Jeff Tian16 мая 2015 г., 07:55
Не работа для меня. module.exports не определен

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

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

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

 Jeff Tian08 июн. 2015 г., 06:40
Не работает для меня
 bolmaster204 нояб. 2009 г., 15:45
Неважно, я поставил оба "отображаемое имя пакета а также "название пакета " свойства вручную! Тот, который я не установил вручную, "Запускаемый файл" это $ {EXECUTABLE_NAME}. Но если я изменю это, я не могу скомпилировать, очевидно ..

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

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

В моем случае я использую Cordova / Ionic и столкнулся с той же проблемой. Тот'из-за кода до того, как устройство будет готово. Я просто обернул код с помощью document.addEventListener наdeviceready», Например:

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

Тогда дополнительное сообщение не появится. "

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

Для моего разрешения мне пришлось добавитьNSLocationWhenInUseUsageDescription в файл .plist. Тем не менее, я полагаю, поскольку мой плагин геолокации устарел, мне пришлось сначала обновить его. Затем мне пришлось удалить / добавить платформу Cordova iOS. Наконец я добавил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 и добавьте следующее:

NSLocationWhenInUseUsageDescription
[App Name] would like to access your location when running and displayed.

Видеть этоСсылка для библиотеки разработчиков iOS для подробной информации относительноNSLocationWhenInUseUsageDescription противNSLocationAlwaysUsageDescription против .NSLocationUsageDescription

 El Dude14 авг. 2015 г., 01:51
у меня не работает ... :(

На phonegap 3.0 необходимо следовать ответу Пия Узамере и установить плагин.

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

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

 user27664820 янв. 2014 г., 08:17
Если вы используете PhoneGap Build, нене забудьте добавить этот плагин в файл config.xml: <пробел: имя плагина = "org.apache.cordova.geolocation "/>
 Pat Fowler02 сент. 2015 г., 22:02
при бегеcordova plugin add cordova-plugin-geolocation он будет установлен сApache / Cordova-плагин-геолокация РЕПО на GitHub - который является зеркаломapache.org репо

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

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


    

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

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

 Jeff Tian16 мая 2015 г., 07:58
не работа для меня.
 Captain03 нояб. 2015 г., 14:47
Это работает для меня, я переустановил плагин:cordova plugin rm org.apache.cordova.geolocation затемcordova plugin add cordova-plugin-geolocation которые добавляют предыдущий линии, которые отсутствовали.

Вам нужно сделать геолокацию после того, как устройство будет готово. Например, следующий код 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
}
 Jeff Tian16 мая 2015 г., 06:46
Это решение нея не работаю
 thandasoru28 сент. 2011 г., 11:40
Это работает отлично! Можно'не понимаю, почему нетт это помечено как ответ ..
 nrhode05 дек. 2016 г., 21:57
работает отлично! Прекрасная работа!
 KAUSHAL J. SATHWARA26 окт. 2015 г., 11:44
Здравствуйте, Как отключить оповещение о разрешении местоположения на iPhone с помощью Cordova.
 Dev DOS27 мар. 2015 г., 14:18
это решение неу меня не работает, второе предупреждение все еще появляется. ни одно из этих решений не помогает мне!
 NHTorres04 июн. 2015 г., 15:59
Это сработало и для меня, я отказался от чертовой тревоги
 Mike Li23 дек. 2011 г., 08:42
отличный ответ, решил мою проблему. почему правильный ответ не на вершине?
 Little Tiny Dev05 апр. 2013 г., 09:07
мы добавили этот код. Но результат для меня - 2 предупреждения появятся при первом запуске из xcode на симуляторе. затем при втором запуске появляется только второе предупреждение. при 3-м запуске оповещения больше не появляются. тот'с какой-то странной
 Ashwin G23 июл. 2016 г., 08:22
Это даже не ответ, вопрос в том, чтобы изменить содержание предупреждения, а не удалить его, и вы получите его при первой установке приложения в любом случае
 JackTurky29 февр. 2012 г., 13:11
не работает для меня!
 Daniel Saidi29 сент. 2015 г., 08:38
Ожидание устройства у меня тоже хорошо работает. Однако это работает только для устройств. Если вы используете Cordova с Ionic и используете этот подход, службы определения местоположения не будут работать в браузере. Я добавил переключатель, который проверяет, работает ли приложение в браузере. Если это так, я запускаю код навигатора мгновенно. Если я'м на устройстве, я жду, когда устройство будет готово.
 Rodrigo Dias12 мар. 2013 г., 13:26
работает как шарм, уродливое сообщение исчезло! Я
 BruceHill27 февр. 2012 г., 09:15
Да! Я согласен, это должно быть помечено как правильный ответ. Спасибо, Пий; это решило мою проблему.

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

2) Скопируйте phonegap.js в phonegap2.js и поместите в корень приложения. Теперь я узнал, что каждый раз, когда я собираю свое приложение и загружаю его на устройство или симулятор, файл phonegap.js восстанавливается. ХОРОШО. Что ж, мне нужно изменить его, поэтому давайте просто воспользуемся другим и справимся с проблемами обновления в будущем.

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

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

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

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

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

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

Похож на МануэляОтвет выше, но на этот раз плагин не устанавливается в папку 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.

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

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

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

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

Удачи!

 Bingo09 мар. 2011 г., 07:22
Спасибо Калеб за исправление :)
 Purpletoucan26 мар. 2012 г., 13:45
Я обнаружил, что мне нужно было установить тайм-аут тоже. Спасибо Бинго!
 kirb30 авг. 2011 г., 13:50
document.addEventListener (»deviceready», Utility.getGeoData (), ложные)» не работает, потому что вы выполняете getGeoData, из-за которого его возвращаемое значение становится вторым параметром для addEventListener вместо функции. Удалите скобки для этого, и это должно работать. Ad @ м

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

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

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

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

Просто включивcordova.js» файл в вашем html-файле, к которому вы обращаетесь, решит эту проблему. НИЧЕГО НЕ ТРЕБУЕТСЯ.
 Olivier de Jonge08 сент. 2017 г., 09:23
В моем случае уродливое сообщение не исчезает при первом запуске приложения.

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


     

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


        
        
        
        
        
        
        
        
        
    

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

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

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

  

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

Наконец-то исправили проблему.

В index.html просто переместите файл cordova.js вверх <



script src = "cordova.js "> </ Скрипт>

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

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

 Ben Taliadoros20 окт. 2014 г., 11:20
Я думаю, что это решило бы много проблем в любом проекте phonegap / cordova, но не обязательно причина этой проблемы
 luke22 сент. 2016 г., 16:43
решил мою проблему - это сильно раздражало. Спасибо!
 Gagan24 дек. 2015 г., 07:54
отличный ответ, решил мою проблему для ионных

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


 David Rust-Smith27 апр. 2014 г., 18:01
Если вы используете сборку PhoneGap, вам нужно будет добавить плагин в ваш config.xml, как вы описываете. Мне нужно было сделать это и убедиться, что мои звонки были внутри onDeviceReady
 Kyle Suss26 мая 2015 г., 23:23
Добавление следующего в config.xml решило проблему " :)
 Jeff Tian16 мая 2015 г., 06:57
Куда вы положили это заявление? ?»config.xml

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

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

 thandasoru29 сент. 2011 г., 09:53
Можете ли вы указать точное местоположение на phonegap.com, где это написано?
 trejder22 июл. 2013 г., 08:11
@ Тим Роджерс Кажется, тынеправильно (по крайней мере, через три года после вашего ответа). PhoneGap переопределяет этот объект и эти методы, и когда выповторный звонокnavigator.geolocation, вы'на самом деле вызывает PhoneGap API.Вот ссылка на соответствующий документ. Затем PhoneGap решает, может ли он использовать механизм геолокации, предоставляемый пользовательским устройством, или использовать свой собственный ("Этот API основан на спецификации API геолокации W3C и выполняется только на устройствах, которые неуже обеспечил реализацию ")

Ваш ответ на вопрос