GPS tracker React native expo

Делаю приложение для диспетчерской грузоперевозок на ReactNative expo, мне необходимо отправлять на сервер местоположение груза(телефона) даже если приложение убито, нечто подобное тому как нативно я бы сделал подписчика на события изменения местоположения и он работал как сервис, который дергался бы системой тогда, когда решит сама система. Я создал такс в app.js

const LOCATION_TASK_NAME = 'background-location-task';

TaskManager.defineTask(LOCATION_TASK_NAME, ({ data: { locations }, error }) => {
   if (error) {
return;
}
sendDataToServer(locations);

});

Затем после авторизации в приложении на одном из экраном сначала получаю разрешение на foreground. как написано в мане, нужно сначала получить разрешение на доступ к местоположение при открытом приложении

let { status } = await Location.requestForegroundPermissionsAsync();

Затем вешаю слушателя на изменение местоположения с записью объекта в переменную, а на сервер отправляются данные в заданные промежутки времени через таймер

let foregroundLocation = await Location.watchPositionAsync({accuracy:Location.Accuracy.High, distanceInterval: 1, timeInterval: 5000}, (loc) => locationGPS = loc)

Затем показываю модалку с предложением и разъяснением для чего это нужно получить доступ к местоположению в любом режиме:

let { statusBackground } = await Location.requestBackgroundPermissionsAsync();

ну и наконец стартую таску

let backgroundLocations = await Location.startLocationUpdatesAsync(LOCATION_TASK_NAME, {accuracy:Location.Accuracy.High, distanceInterval: 1, timeInterval: 5000})

После чего собираю АПК, открываю, вижу что при активном приложении всё работает корректно. Убиваю приложение и физически перемещаюсь(пробовал также Fake GPS) и не вижу никаких запросов на указанный в таске сервер.


Ответы (0 шт):