Как запретить Android Mock Location в приложении PWA?

В PWA мы можем получить текущее положение устройства с помощью API геолокации W3C. Это просто.

  if (!navigator.geolocation) {
    status.textContent = 'Geolocation is not supported by your browser';
  } else {
    status.textContent = 'Locating…';
    navigator.geolocation.getCurrentPosition(success, error);
  }

Но в Android на API местоположения W3C влияет настройка фиктивного местоположения пользователя. Таким образом, пользователь может легко подменить текущую позицию.

Есть ли способ предотвратить установку фиктивного местоположения в PWA?

3 ответа

Проверьте фиктивное местоположение, используя это условие:

 public static boolean isMockLocation(Location location) {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && location != null && location.isFromMockProvider();
    }

Если вы боитесь, что пользователи будут подделывать свое местоположение, имитация местоположения - не единственный вариант. Они могут использовать gps-sdr-sim и HackRF SDR для генерации поддельных сигналов GPS и передачи их по воздуху.

У меня мало знаний о PWA, но ниже приведен java-код, который поможет вам проверить, включена ли настройка фиктивного местоположения или нет.

/**
     * Method for check is location server enabled or not
     * @param context
     * @return
     */
    public static boolean isMockSettingsEnabled(Context context) {
        return !Settings.Secure.getString(context.getContentResolver(),
                Settings.Secure.ALLOW_MOCK_LOCATION).equals("0");
    }
Другие вопросы по тегам