iOS Как узнать, смоделировано ли местоположение из GPX [duplicate]

Что-то вроде этого:

  int pos = 0;  while (pos & lt; lst.size ()) {Foo foo = lst.get (pos);  if (hasToBeRemoved (foo)) {lst.remove (pos);  // не перемещать позицию} else {pos ++;  }}  
5
задан Rodrigo 24 March 2015 в 13:15
поделиться

4 ответа

Благодарим за информацию о симуляторе GPS. Я попытался сделать простое приложение iOS на iPhone5 (iOS8), чтобы получить местоположение от приложения GPS-Simulator на Samsung S4. Я отключил Wi-Fi и 3G, включил BlueTooth на iPhone. Но CLLocationManager не может получить местоположение.

Вот код:

clManager = [[CLLocationManager alloc] init]; clManager.delegate = self; clManager.desiredAccuracy = 100; clManager.distanceFilter = kCLDistanceFilterNone; [clManager startUpdatingLocation];

код получил kCLAuthorizationStatusAuthorizedAlways уведомили. Но после этого нет возвращенных данных о местоположении через делегат callback «didUpdateLocations».

Не могли бы вы рассказать мне какую-либо специальную настройку CLLocationManager, чтобы он мог получать GPS-сообщение от GPS-симулятора.

5
ответ дан KennyHo 16 August 2018 в 05:14
поделиться
  • 1
    Обратите внимание, что имитируемое местоположение будет приниматься каждую секунду, только если оно имитируется через файл gpx, добавленный пользователем. Если то, что используется, это местоположение xcode по умолчанию (London, johannesburg, ... и т. Д.), Оно будет получено только один раз. – Mohammed A. Al Jama 18 August 2016 в 19:58
  • 2
    относительно ответа (2), что, если атакующий имитирует 3 поддельных местоположения? (1) поддельное местоположение (2) реальное местоположение (3) другое поддельное местоположение от первого – Mohammed A. Al Jama 20 August 2016 в 07:14
  • 3
    что, если атакующий имитирует 3 поддельных местоположения? == & GT; Нет, они не могут этого сделать или очень сложно сделать, потому что все 3 местоположения постоянно возвращаются для 1 запроса геолокации. Даже они это делают, они должны повторно запустить приложение 3 отдельно, что не так, как я упоминал. – KennyHo 17 February 2017 в 23:35
  • 4
    «Обратите внимание, что имитируемое местоположение будет приниматься каждую секунду, только если оно имитируется через добавленный пользователем файл gpx». == & GT; Согласен! Итак, нам нужна еще одна модель для определения имитируемого местоположения. Есть ли у вас предложения ? – KennyHo 17 February 2017 в 23:36
5
ответ дан KennyHo 6 September 2018 в 03:57
поделиться

Чтобы уточнить ответ @KennyHo, я узнал, что существует другая разница между реальной и имитируемой обратной связью местоположений.

Симуляционное местоположение, как я заметил, всегда возвращает эту комбинацию значений для этих свойств / опций местоположения:

horizontalAccuracy: 5
verticalAccuracy: -1
altitude: 0.000000
speed: -1

, в то время как реальное местоположение будет давать разные комминирования 99% время, например

horizontalAccuracy: 5
verticalAccuracy: 10
altitude: +/- 0.4243232
speed: -1

Обратите внимание, что для моделируемого местоположения возможно иметь другую комбинацию, чем приведенная выше, но только если пользователь использует xcode целевой тест автоматизации . Однако пользователь может смоделировать местоположение только для подписанного приложения с идентификатором разработки (должен принадлежать приложение). Это означает, что никто, кроме вас, не может подделать местоположение с разными altitude или verticalAccuracy, чтобы обмануть ваше приложение в xcode.

4
ответ дан Community 16 August 2018 в 05:14
поделиться
  • 1
    Мне нужно провести больше тестов с этими параметрами, это кажется хорошим, но во внутренних местах мне удалось воспроизвести некоторые из этих параметров на реальных измерениях. – Rodrigo 19 August 2016 в 12:12
  • 2
    с Xcode 9.3, выше смоделированные значения местоположения по-прежнему верны. – iori24 23 July 2018 в 08:35

Я не считаю, что можно обнаружить симуляторы местоположения.

Более простой способ подделать местоположение - использовать внешнее bluetooth или последовательное соединение с симулятором GPS , который выводит Предложения NMEA . Вам не нужна учетная запись разработчика, хотя вам нужен Android-телефон для запуска симулятора.

iPhone автоматически обнаружит внешний GPS и CLLocationManager будет использовать внешние источники GPS вместо собственных внутренних GPS. Это действительно удобно для лабораторных испытаний картографических и навигационных приложений.

1
ответ дан progrmr 16 August 2018 в 05:14
поделиться