1

在 PWA 中,我们可以使用 W3C 地理定位 API 获取设备的当前位置。这很容易。

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

但是,在 Android 中,W3C 位置 API 会受到用户模拟位置设置的影响。所以用户很容易能够欺骗当前位置。

有什么方法可以防止 PWA 中的模拟位置设置?

4

3 回答 3

1

使用此条件检查模拟位置:

 public static boolean isMockLocation(Location location) {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && location != null && location.isFromMockProvider();
    }
于 2020-02-12T08:45:18.403 回答
0

如果您担心用户会欺骗他们的位置,那么模拟位置不是他们唯一的选择。他们可以使用 gps-sdr-sim 和 HackRF SDR 生成虚假 GPS 信号并通过空中传输。

于 2020-08-17T18:42:07.803 回答
-1

我对 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");
    }
于 2020-02-12T06:09:41.463 回答