Используют ли два (или более) приложения, использующие GPS, один и тот же поток данных о местоположении?

Когда приложение запрашивает данные GPS, активирует ли оно сам вызов GPS, а затем, когда другое приложение одновременно выполняет вызовы, оно делает отдельный вызов? Или когда второе приложение обращается к GPS, оно получает данные, которые уже есть (или что-то подобное, например, канал открывается в обоих приложениях, и система GPS отправляет все данные на каждый канал, когда данные доступны)?

Мне интересно, потому что, если каждое приложение получает контроль над GPS только в половине случаев, это, безусловно, может привести к менее эффективному GPS. Поэтому я предполагаю, что iPhone был создан с учетом этого, и одни и те же данные GPS будут доступны для каждого приложения, но я не знаю, делается ли это именно так.

Кто-нибудь знает внутреннюю работу GPS на iOS?

Ответы (2)

Я начну с того, что я не разработчик IOS, но я уверен, что он работает почти так же, как Android и другие API GPS.

Когда приложение вызывает API-интерфейсы GPS, оно вызывает абстракцию системы GPS/местоположения и получает информацию о местоположении, которую представляет система.

Таким образом, в этом случае, когда одно приложение запрашивает у ОС данные о местоположении, ОС использует сочетание данных GPS и Wi-Fi для определения местоположения устройства. Если в то же время другое приложение запрашивает данные о местоположении, телефон просто использует имеющиеся у него данные о местоположении вместо того, чтобы снова включать радио.

предположим, что где-то в ОС будет настройка того, насколько близко должны быть эти вызовы, прежде чем выполнять пересчет
Вероятно, нет, ОС выбирает лучшее действие, и я предполагаю, что оно будет хорошо скрыто, но опять же я не знаю API.

В iOS службы определения местоположения находятся между всеми радиостанциями определения местоположения (информация о вышках сотовой связи, ближайший Wi-Fi, GPS) и приложениями и кэшируют объединенные результаты между получением новой информации от этих радиостанций со скоростью, определяемой ОС для приличного времени автономной работы по сравнению с запрошенным. точность. Приложения никогда не «контролируют» и не взаимодействуют с оборудованием GPS или драйвером ОС напрямую. Информация о местоположении, которую получает приложение, имеет отметку времени, поэтому приложение может проверить, является ли это старой информацией или нет.