2016-11-25 4 views
3

Я использую плагин cordova-plugin-geolocation. Моя единственная проблема в том, что сообщение с подсказкой, чтобы место выглядит следующим образом:Сообщение о местоположении Кордовы iOS

/var/container/bundle/application/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/my_project/www/index.html Хотела для использования вашего местоположения.

Есть ли вообще что-то немного сексуальнее, как

my_project хотели бы использовать ваше местоположение

Приветствия.

Добавлена ​​некоторый код, для не верующих

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

function onDeviceReady(){ 

    navigator.geolocation.getCurrentPosition(onLocationSuccess, onLocationError, {maximumAge:3000, timeout:2000, enableHighAccuracy:true}); 

    function onLocationSuccess(){ 

    } 

    function onLocationError(){ 

    } 
} 
+0

геолокации плагин автоматически позаботится об этом за вас. Обязательно дождитесь 'deviceready' перед первым GPS-запросом - иначе вы получите реализацию браузера вместо реализации плагина. –

+0

Я хочу, чтобы ondevice уже готово – Eric

+0

Помогло бы увидеть код. –

ответ

8

От docs:

IOS Quirks

С iOS 10 обязательно добавить запись NSLocationWhenInUseUsageDescription в info.plist.

NSLocationWhenInUseUsageDescription описывает причину, по которой приложение получает доступ к местоположению пользователя. Когда система запрашивает у пользователя разрешить доступ, эта строка отображается как часть диалогового окна. До Добавить эту запись, вы можете передать переменную GEOLOCATION_USAGE_DESCRIPTION при установке плагина.

Пример: Cordova плагин добавить Cordova-плагин-геолокации --variable GEOLOCATION_USAGE_DESCRIPTION = «Ваше сообщение об использовании»

Если вы не передаете переменную, плагин добавит пустую строку в качестве значения.

Чтобы решить проблему, попробуйте:

Удаление плагина:

cordova plugin remove cordova-plugin-geolocation 

Переустановка с:

cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="my_project would like to use your location" 
+0

@Eric Это ваш ответ прямо здесь. Я использовал плагин и не настроил info.plist, который привел к той же проблеме, что и вы. Если вы не знаете, как добавить деталь в info.plist, добавьте еще один вопрос или найдите его. Но это прекрасно и отвечает на вашу щедрость. –

+0

GEOLOCATION_USAGE_DESCRIPTION предназначен для «конфиденциальности - Описание использования местоположения», что такое имя переменной «privacy - Location Always Usage Description» и «privacy - Location When in Use Description»? – h3nr1ke

+0

Спасибо, Бруно! :) –

1

Если вы ориентируетесь IOS 8 и позже (я мое мнение, не нужно больше целевых старые версии ...), есть два ключа для конфигурация:

NSLocationAlwaysUsageDescription

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

NSLocationWhenInUseUsageDescription

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

Так что в вашей прошивке проект info.plist файла, вы можете добавить следующее:

<key>NSLocationAlwaysUsageDescription</key> 
<string>my_project requires constant access to your location, even when the screen is off.</string> 

места доступа только тогда, когда приложение используется

<key>NSLocationWhenInUseUsageDescription</key> 
<string>my_project requires access to your location only when being used.</string> 
+0

Я добавил ключи и строки в exportOptions.plist (только файл plist, который я мог найти) в платформе/iOS, и он ничего не менял ... – Eric

1

Есть 3 возможных причины для отображения пути к index.html вместо имени вашего приложения:

  1. Вы не установили плагин (или он установлен неправильно)
  2. Вы не дожидаясь готовности устройства к событию вызвать плагин
  3. Вы не связывал cordova.js файл в индексе.HTML

Как вы говорите, что вы установили плагин, и вы используете его на устройство, готовое событие, то оно должно быть, что вы забыли связать cordova.js в index.html или плагин WASN» t правильно установлена. Убедитесь, что у вас есть cordova.js связаны между собой и, если у вас есть, удалить плагин и добавить его снова, удаление и повторное добавление платформы IOS тоже может помочь

2

Похоже, что версия 3.0.0 из cordova-plugin-geolocation игнорирует установку pa госу

--variable GEOLOCATION_USAGE_DESCRIPTION=""

как Бруно Переса сказал выше.

Он отлично подходит для меня, устанавливая версию 2.4.3.

2

Решение изменилось на cordova-plugin-geolocation: "4.0.0". Это то, что вам нужно добавить в Ваш config.xml:

<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge"> 
    <string>need location access to find things nearby</string> 
</edit-config> 

Для получения дополнительной информации: https://github.com/apache/cordova-plugin-geolocation

+0

Это именно то, что мне нужно. – MikeC

+0

Я рад, что это помогло @MikeC – Stan

+0

Это должен быть принятый ответ. –

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