Как избежать запроса Google при попытке определить местоположение - PullRequest
0 голосов
/ 09 июня 2019

Я занимаюсь разработкой простого приложения с использованием плагина Flutter location, с некоторым кодом на основе их образца кода :

var location = new Location();
try {
  _currentLocation = await location.getLocation();
} on PlatformException catch (e) {
  if (e.code == 'PERMISSION_DENIED') {
    _locationMsg = 'Permission denied';
  }
  _currentLocation = null;
}

Как указано на странице плагина, я добавил ACCESS_FINE_LOCATION до манифеста Android.

Проблема в том, что, когда я тестирую приложение на телефоне (с Android 9, если это актуально), даже если местоположение включено , и у меня естьСигнал GPS, выполнение приведенного выше кода приводит к следующему приглашению:

Prompt about enabling Google's location service

Подсказка гласит: «Для лучшего опыта включитеместоположение устройства, которое использует службу определения местоположения Google. ", с двумя кнопками: " НЕТ СПАСИБО " и " ОК ".

Это ужаснонедружелюбно: местоположение уже поступает из GPS, больше нет необходимости беспокоить пользователя.

Откуда возникла проблема, и как я могу избежать этого запроса?Я предпочитаю сообщать «неизвестное местоположение», чем отображать приглашение.

Редактировать : обратите внимание, что приглашение не связано с уведомлением пользователя о том, что местоположение будет использоваться, но это функция защиты конфиденциальности Google, которая, когда вы нажимаете OK, включает Точность местоположения Google, как описано ниже (скрыто глубоко в меню настроек):

Google Location Accuracy description

Изображение выше: «Повышение точности определения местоположения», с кнопкой переключения.Точность определения местоположения Google. Служба определения местоположения Google повышает точность определения местоположения, используя Wi-Fi и мобильные сети для оценки вашего местоположения.Анонимные данные о местоположении будут отправляться в Google, когда ваше устройство включено.

При нажатии на первую подсказку это разрешается, и пользователь затем должен вручную отключить его, если он не хочет отправлять данные о своем местоположении.загуглить.Отключение его и попытка получить местоположение снова приводит к тому же самому запросу, так что это определенно не связано с предупреждением пользователя об использовании данных местоположения.Кроме того, если Google Location Accuracy активирована за до с помощью приложения, подсказка никогда не появляется в первую очередь, и, вероятно, поэтому большинство разработчиков никогда не замечают ее.

Я знаю, что возможнополучить данные о местоположении без , включая Google Location Accuracy, поскольку большинство приложений делают это.Но я не знаю, откуда появляется подсказка: это плагин для определения местоположения Flutter?То, что я использую Android 9 SDK?Или пример кода?

1 Ответ

0 голосов
/ 09 июня 2019

Кажется, проблема связана с плагином location.Я попытался заменить его на geolocator и изменить код вызывающего абонента, и на этот раз такого приглашения не появилось.

Я попытался снизить точность, прежде чем запрашивать местоположение, но плагин location по-прежнему отображает приглашение.Должен быть какой-то базовый код, который во всех случаях запрограммирован для запроса точности местоположения Google.

Если бы только Google предоставил способ навсегда отключить приглашение с систематическим «нет» (это было проблемой для несколькихAndroid-релизы), я мог бы дать им преимущество сомнения.

...