Нужен способ постоянного отслеживания текущего местоположения пользователя в Xamarin Forms как на Android, так и на iOS.

Я работаю над старшим проектом для школы, который требует от меня постоянного отслеживания пользователей по их телефонным GPS координатам. Моя конечная цель — постоянно обновлять мою Mapsui карту с текущим местоположением пользователя. Я столкнулся с проблемой постоянного обновления данных до Mapsui. Если я ввожу статические GPS координаты, точка правильно отображается на моей карте.

На самом деле, основная проблема, которая меня смущает, — это асинхронные функции и то, как правильно их реализовать при получении данных о местоположении с помощью Xamarin.Essentials.

Любые идеи или советы будут с благодарностью!


person Matt Ohren    schedule 03.02.2019    source источник
comment
Спасибо за пост, но у меня все еще есть проблемы. Я могу получать GPS-координаты при каждом нажатии кнопки и понимаю, что мог бы работать над реализацией фоновых задач для iOS и Android по отдельности. Я хотел бы найти способ использовать Xamarin.Essentials.Geolocation для постоянного обновления местоположения пользователя, пытаясь сохранить большую часть кода в кросс-платформенном каталоге.   -  person Matt Ohren    schedule 04.02.2019


Ответы (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.

Подробнее см. здесь.

person Lucas Zhang    schedule 03.02.2019