Нужен способ постоянного отслеживания текущего местоположения пользователя в формах Xamarin на Android и iOS
Я работаю над старшим проектом для школы, который требует от меня постоянно отслеживать пользователей через их телефоны GPS
координаты. Моя конечная цель - постоянно обновлять мой Mapsui
карта с текущим местоположением пользователя. Я нахожу контрольно-пропускной пункт о том, как постоянно обновлять данные в Mapsui
, Если я введу статический GPS
координаты, точка отображается правильно на моей карте.
Действительно, основная проблема, которая меня сбивает с толку, - это асинхронные функции и способы их правильной реализации при получении данных о местоположении с помощью Xamarin.Essentials
,
Любые идеи или советы будут с благодарностью!
1 ответ
Кажется, вы хотите отслеживать местоположение пользователя в фоновом режиме. Если вы читали документы о Xamarin.Essentials: Геолокация. Есть кое-что еще, что вы должны сделать.
в проекте iOS
1. Добавьте конфиденциальность в info.plist
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access location when open.</string>
<key>NSLocationAlwaysAndWhenInUsageDescription</key>
<string>This app needs access location when open or in background.</string>
// support iOS 10 and before
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access location when open.</string>
2. Для задач, которые требуют больше времени для выполнения, вы должны запросить определенные разрешения для их запуска в фоновом режиме без их приостановки.
Поддержка некоторых типов фонового выполнения должна быть заранее объявлена приложением, которое их использует. Вы объявляете фоновые режимы, которые поддерживает ваше приложение, на вкладке "Возможности" настроек вашего проекта в VS . Включение параметра "Фоновые режимы" добавляет ключ UIBackgroundModes в файл Info.plist вашего приложения.
Для более подробной информации о фоновом исполнении в iOS вы можете обратиться к этой документации
в проекте Android
Вы можете создать background service
,
IntentService
Класс предоставляет простую структуру для запуска операции в одном фоновом потоке. Это позволяет ему обрабатывать длительные операции, не влияя на скорость отклика вашего пользовательского интерфейса. Кроме того, IntentService
не подвержены влиянию большинства событий жизненного цикла пользовательского интерфейса, поэтому он продолжает работать при обстоятельствах, при которых AsyncTask
,
Для более подробной информации вы можете обратиться сюда.