GPS-Koordinaten im Hintergrund in Cordova App

8

Ich mache derzeit eine Hybrid-App mit ionic / cordova. Die App benötigt Funktionen, bei denen 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 lautet, 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 in der Lage sein, sowohl im App Store, Google Play und Windows Phone installiert werden.

Ich verwende derzeit eine Kombination dieser drei Plugins:

Ссылка - für den Standort Ссылка - für den bg-Modus Ссылка - für lokale Benachrichtigungen

Dies funktioniert derzeit bei Android, wenn das Gerät nicht gesperrt ist (also im Vordergrund- und Hintergrundmodus), aber wenn das Gerät gesperrt ist, kann es die GPS-Koordinaten nicht abrufen.

Mein Code sieht momentan so aus:

%Vor%

Also ... meine Fragen sind:

1) Wie funktioniert die Lösung, wenn mein Gerät gesperrt ist (die getCurrentPosition wird auch aufgerufen, wenn das Gerät gesperrt ist, aber das Zeitlimit 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 hier!

    
iCediCe 16.03.2016, 12:58
quelle

3 Antworten

7

Also habe ich derzeit eine App, die alle oben aufgeführten Probleme anspricht und hier ist das Plugin, das ich verwende:

Ссылка

  1. Das Plugin verwendet watchPosition () getCurrentPosition () nicht, da es zu lange dauert, das Gerät ständig anpingen zu lassen und mehr Akkuleistung zu verbrauchen.

  2. Dies wird definitiv für Android & amp funktionieren; iOS aber IMHO funktioniert es besser für Android als das letztere, was die Präzision und die Keep-Alive-Funktionalität angeht.

  3. Ich habe es in Google Play kein Problem, Apple erlaubt dieses Plugin, es gibt eine Reihe von Apps, die dieses Plugin im Apple Store nutzen, aber Apple wird es wahrscheinlich zunächst ablehnen und die Apps vor der Hintergrundnutzung fragen, wirst du dann muss appellieren, was die App im Hintergrund macht und sicherstellen, dass es nicht unbegrenzt läuft (das war meine Erfahrung).

    a. Sie werden auch sicherstellen wollen, dass Sie den Apple Peeps darauf hinweisen, dass es für den Benutzer eine Möglichkeit gibt, das Hintergrund-Geolocation-Tracking auszuschalten. Ich gehe davon aus, dass es da ist? Das ist ihr Hauptproblem bei der Verwendung des Plugins.

Viel Glück.

    
Faraji Anderson 22.03.2016, 20:31
quelle
2

Dieses Plugin hat eine großartige Anleitung, wie man einen Meteorserver und Cordova benutzt, um das zu tun, was Sie brauchen:

​​zeroasterisk / meteor-cordova-geolocation-background

Es konfiguriert sich automatisch mit Android und iOS. Für Windows Phone weiß ich nicht.

  1. Meteor konfiguriert dieses Plugin in Cordova (Sie müssen konfigurieren)
  2. Meteor konfiguriert dieses Plugin in Cordova (Sie müssen konfigurieren)
  3. Meteor kann den Hintergrunddienst auslösen, um Geolocation (GPS) -Details zu erhalten
  4. Der Cordova-Hintergrunddienst sendet seine Daten regelmäßig an den Meteor-Server (nicht an die Client-Cordova-Instanz)
  5. Meteor Server kann eine Sammlung (oder etwas anderes)
  6. aktualisieren
  7. Meteor Client synchronisiert sich mit dem Server
Mark Ryan 22.03.2016 15:31
quelle
1

Ich habe das gleiche Problem mit den gleichen Plugins, die Sie verwendet haben, gefunden. Es stellt sich heraus, dass es sich um ein Problem mit Geräteberechtigungen handelt .

Das cordova-plugin-geolocation-Plugin hat nicht die Berechtigung, im Hintergrund zu laufen, und vor allem hat es nicht die Berechtigung, GPS im Hintergrund zu verfolgen . Während das cordova-plugin-background-mode-Plugin es erlaubt, Code im Hintergrund auszuführen, können Sie im Hintergrund keine GPS-Koordinaten erhalten.

Die Lösung besteht darin, ein Plugin hinzuzufügen, das das Abrufen der Standortdaten unterstützt, während die App im Hintergrund läuft . Es gibt mehrere Plugins, die dies unterstützen, einschließlich der mauron85 / cordova-plugin-background-geolocation Plugin (wie zuvor vorgeschlagen). Eine Alternative ist das cordova-custom-config Plugin, mit dem Sie Ihre eigenen benutzerdefinierten Berechtigungen festlegen können. Wirklich können Sie jedes Plugin hinzufügen, solange es Hintergrundortungsdienste unterstützt . Kein zusätzlicher Code ist erforderlich.

Sie können überprüfen, ob Sie über die richtigen Berechtigungen verfügen, indem Sie die App-Einstellungen (in iOS) öffnen und bestätigen, dass die Option "Immer" verfügbar ist.

    
attila226 04.07.2017 00:06
quelle