В настоящее время я делаю гибридное приложение с использованием ионной/кордовой. Приложение нуждается в функциональности, где он связывает наш сервер с его местоположением каждые 1 минуту или около того, а backend API ответит, если что-то интересное поблизости. Если да, приложение будет помещать в очередь локальное уведомление, которое, надеюсь, заставит пользователя открыть приложение. Эта функция необходима, когда приложение находится в фоновом режиме и даже когда телефон заблокирован. Приложение должно быть развернуто как в магазине приложений, так и в Google Play и в конечном итоге на телефоне Windows.
В настоящее время я использую комбинацию из этих трех плагинов:
https://www.npmjs.com/package/cordova-plugin-geolocation - для местоположения https://github.com/katzer/cordova-plugin-background-mode - для режима bg https://github.com/katzer/cordova-plugin-local-notifications - для локальных уведомлений
В настоящее время он работает на Android, когда устройство не заблокировано (поэтому оно работает в режиме переднего и заднего плана), но когда устройство заблокировано, оно не может получить координаты GPS.
В настоящее время мой код выглядит следующим образом:
// Enable background worker
(cordova as any).plugins.backgroundMode.enable();
intervalPromise = $interval(intervalWork, 30000, 0, false);
function intervalWork() {
$log.log('Trying to fetch pos');
var options = { maximumAge: 30000, timeout: 30000, enableHighAccuracy: false };
navigator.geolocation.getCurrentPosition(success,
err,
options);
}
function success(pos) {
$log.log("lat: " + pos.coords.latitude + " long: " + pos.coords.longitude);
var Checkin = $resource(ApiDataEndpoint.url + 'checkin/:lat/:lng/', {});
var res= Checkin.get({ lat: pos.coords.latitude, lng: pos.coords.longitude });
if (res) {
$cordovaLocalNotification.schedule({
id: 1,
title: 'test',
text: 'test',
}).then(function(result) {
$log.log("ok");
});
};
}
Итак... мои вопросы:
1) Как заставить решение работать, когда мое устройство заблокировано (getCurrentPosition вызывается, даже когда устройство заблокировано, но возвращает таймаут)?
2) Можно ли заставить это решение работать на iOS?
3) Будет ли приложение одобрено в Google Play и магазине приложений?
4) Если проект обречен, каковы мои альтернативы?
Мне действительно нужна помощь в этом!