Ich mache derzeit eine Hybrid-App mit ionic/Cordova. Die App benötigt Funktionalität, bei der das Backend alle 1 Minute mit dem Standort gepingt wird und die Backend-API antwortet, wenn etwas Interessantes in der Nähe ist. Wenn die Antwort ja ist, wird die App eine lokale Benachrichtigung in die Warteschlange stellen, die den Benutzer hoffentlich dazu bringt, die App zu öffnen. Diese Funktion wird benötigt, wenn sich die App im Hintergrundmodus befindet und auch wenn das Telefon gesperrt ist. Die App muss sowohl im App Store als auch in Google Play und Windows Phone implementiert werden können.GPS-Koordinaten im Hintergrund in Cordova App
ich zur Zeit mit einer Kombination dieser drei Plugins:
https://www.npmjs.com/package/cordova-plugin-geolocation - für Standort https://github.com/katzer/cordova-plugin-background-mode - für bg Modus https://github.com/katzer/cordova-plugin-local-notifications - für lokale Benachrichtigungen
Die derzeit auf Android arbeitet, wenn das Gerät nicht ist gesperrt (funktioniert also im Vordergrund- und Hintergrundmodus), aber wenn das Gerät gesperrt ist, können die GPS-Koordinaten nicht abgerufen werden.
Mein Code sieht derzeit wie folgt aus:
// 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");
});
};
}
Also ... meine Fragen sind:
1) Wie die Lösung erhalten zu arbeiten, wenn mein Gerät gesperrt ist (die getCurrentPosition auch genannt wird, wenn Gerät gesperrt ist, aber Timeout zurückgibt)?
2) Ist es möglich, diese Lösung unter iOS zu verwenden?
3) Wird eine App auf diese Weise in Google Play und App Store genehmigt?
4) Wenn das Projekt zum Scheitern verurteilt ist, was sind meine Alternativen?
Ich brauche wirklich Hilfe auf diesem!
Ich kann nicht Ihre Fragen beantworten, ob die App genehmigt wird, aber ich denke, dass, wenn Sie können es auf Android zu arbeiten, wird es höchstwahrscheinliche Arbeit auf Ios zu. Wenn dies nicht funktioniert, werden Sie wahrscheinlich eine nativa App zu bauen. Ich denke, man die Macher der App wenden könnte, vielleicht können sie Ihnen sagen, ob dies möglich ist oder nicht. –