Как запретить 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");
}