Flutter-geolocator: Fügen Sie Unterstützung für die Standortverfolgung im Hintergrund hinzu

Erstellt am 31. Juli 2018  ·  82Kommentare  ·  Quelle: Baseflow/flutter-geolocator

Hilfreichster Kommentar

Ich war auch mit diesem Problem konfrontiert und habe mein eigenes Plugin für Standortaktualisierungen im Hintergrund entwickelt, hier ist es, flutter_background_location ,

Alle 82 Kommentare

Dies ist einer der Hauptgründe, warum ich keine meiner Apps auf Flutter umgestellt habe, die Standortverfolgung im Hintergrund ist ein Muss. Danke, dass du das auf Kurs hältst!

Ich probier das auch aus. Sie möchten eine App in einer Unternehmensumgebung mit einer Hintergrund-GPS-Tracking-Anforderung erstellen. flutter/plugins#656 (oben erwähnt) ist noch nicht auf Pub und unterstützt nur iOS.
Ich werde diesen Thread für alle Updates abonnieren.

Am Ende habe ich meine eigene Implementierung geschrieben (zumindest auf Android), basierend auf diesem Google-Beispiel , das ausgeführt wird, wenn die App geschlossen wird.

Ich pushe die Standortdaten an die Firebase, sodass ich nichts über den Methodenkanal zurücksenden musste. Ich lade einfach mit nativem Code direkt auf Firebase hoch, wenn ein Standortergebnis eintrifft. Das bedeutet, dass ich es nicht verallgemeinern kann, um diesem Plugin zu helfen, aber dieses Beispiel-Repo könnte nützlich sein.

Ich habe eine Lösung gefunden, um Ihre @aidandavis- Methode zu verallgemeinern.
In diesem Paket sind alle Standorte in sqlite gespeichert.
Wenn Ihr Vordergrunddienst den Speicheranbieter sqlite/firebase/... akzeptieren kann.
Mit MethodChannel können wir den Speicherort der db-Datei abrufen und die Flutter-App kann sie lesen.

Update: Das Google-Beispiel verhindert den Doze-Modus nicht. Wenn das Gerät das Netzwerk döst, kann das GPS auch mit Ihrem Dienst getötet werden.

Update 2: Dieser Stackoverflow-Thread hilft gegen chinesische ROMs, die Dinge sparen, und fügt die App zur geschützten Liste hinzu.
Dies gegen Doze

Das ist definitiv ein Weg, es zu tun. Das verbleibende Problem besteht darin, etwas mit den Daten zu tun, während die App im Hintergrund läuft oder das System sie schließt.

In Bezug auf Doze sollte es nur gelten, wenn das Telefon stationär ist (wie auf einem Tisch). Zu diesem Zeitpunkt gibt es ohnehin keine Standortaktualisierungen für die Punktverfolgung - der letzte Standort, der vor Doze gesendet wurde, wäre immer noch genau.

Darüber hinaus könnte Dart-Code so eingebettet werden, wie er in alarm_manager_android implementiert ist. Der Android-Callback ruft Dart-Code auf, ohne dass die App ausgeführt wird.

Wie ich sehe, wurde diese Funktion aus dem Meilenstein 2.1.0 entfernt. Wurde es in den Hintergrund gedrängt? Auch mein Projekt würde davon stark profitieren.

Leute, gibt es dazu ein Update? Diese Funktion kann diesem Plugin Flügel hinzufügen. Es ist unbedingt erforderlich.

Es ist vielleicht auch erwähnenswert, dass einige Geräte bei ausgeschaltetem Bildschirm keine GPS-Standorte abrufen können. Ich habe eine Weile an diesem Problem festgehalten und schließlich festgestellt, dass es am Chipsatz des Geräts liegt. Es kann sich also lohnen, dies auch noch einmal zu überprüfen, insbesondere wenn es sich um ein Gerät mit schwacher Batterie wie eine Uhr handelt.

@ibrierley Ich bin mir bei den Wearables nicht sicher, aber alle Geräte (Mobile/Tablets), auf denen API>= 16 ausgeführt wird, können Standortaktualisierungen erhalten, selbst wenn der Bildschirm ausgeschaltet ist. Ich habe das auch selbst getestet.

Ja, ich habe hauptsächlich auf einer Huawei Watch 2 getestet und einen Thread gelesen, in dem es einen Beitrag mit einem Huawei-Ingenieur gab (kann falsch sein), der sagte, dass es im Chipsatz eingestellt war, sodass sie es nicht reparieren konnten (Ich werde hier posten, wenn ich den Thread finden kann, ihn aber bei einer schnellen Suche nicht gesehen habe).

Am Ende habe ich den Bildschirm schwarz geschaltet, aber ich hasse diese Lösung :) (aber es funktioniert, ich bin mir nur nicht ganz sicher, ob es so viel Batterie spart, also kann es passieren, dass der Bildschirm eingeschaltet wird und etwas angezeigt wird).

@martijn00 Ich frage mich, ob das Geofence-Plugin diese Funktion nicht verbessert. Ich glaube, dass die Hinrichtung im Hintergrund von entscheidender Bedeutung wäre, und viele von uns erwarten sie. Lass mich wissen was du denkst...

Ich hoffe, ihr könnt den BG-Service bald hinzufügen :)

Hallo!
Wie ist der aktuelle Stand zu diesem Thema? arbeitet jemand daran? oder wurde verschoben?

Hey Leute, was denkt ihr über https://pub.dartlang.org/packages/flutter_background_geolocation
Bietet dieses Plugin nicht, was hier gefragt wird?

Hey Leute, was denkt ihr über https://pub.dartlang.org/packages/flutter_background_geolocation
Bietet dieses Plugin nicht, was hier gefragt wird?

Es tut, aber es kostet $300+

@christocracy , ich denke, dein Paket ist jeden Cent wert, aber ich bin einfach zu arm :) Beobachte diesen Raum

Hallo, ist es möglich, den Live-Standort @christocracy kostenlos zu verfolgen?

Ich freue mich darauf!

Glauben Sie, dass es möglich sein wird, noch in diesem Jahr mit der Arbeit daran zu beginnen?

Glauben Sie, dass es möglich sein wird, noch in diesem Jahr mit der Arbeit daran zu beginnen?

Jeder kann sofort mit der Arbeit beginnen. Beiträge sind willkommen.

Die Betreuer dieses Projekts leisten ziemlich gute Arbeit beim Akzeptieren eingehender Änderungen aus der Community.

Ok, Gimmie-Ressourcen und Platz im Code, wo ich anfangen soll, und ich versuche, mein Bestes zu geben: Ich könnte einige Wochen damit verbringen, es zu lösen, aber zuerst muss ich tiefer in Android einsteigen: (, Ich bin nur neugierig, ob jemand arbeitet drauf ;)

Ich weiß deinen Enthusiasmus zu schätzen :1st_place_medal:

Gimmie-Ressourcen und platzieren Sie im Code, wo Sie anfangen sollen

Ich glaube, dass Sie dieses ganze Plugin berühren und verstehen müssen.


Allerdings ... Einige allgemeine Designprobleme sollten berücksichtigt werden, bevor Sie mit dem Codieren beginnen.

  1. Auf Android neueren Android (API 26) ist die einzige Möglichkeit, hochpräzise Standortaktualisierungen zu erhalten, der Foreground-Dienst. Die neueste Version (Android Q) hat auch eine zusätzliche Berechtigung (um den Standort im Hintergrund abzurufen). Sie müssen also 3 verschiedene Verhaltensweisen ansprechen, um Kompatibilität zu haben: Android vor 26, Android 26 und Android Q
  2. Um den Foreground-Dienst zu verwenden, müssen Sie die Systembenachrichtigung anzeigen. Wahrscheinlich möchte jede Anwendung eine angepasste Benachrichtigung haben.
  3. Kompatibilität mit iOS. Die Geolocator-API sollte Unterschiede zwischen den Plattformen so weit wie möglich verbergen.
  4. Der Vordergrunddienst kann wie die Aktivität gestoppt und neu gestartet werden. Brauchen Sie Logik, um damit umzugehen. Flutter hat keine einfache Möglichkeit, dies zu tun. Das einzige Beispiel, das ich kenne, ist das Plugin alarm_manager . Aber es ist auch fehlerhaft und behandelt nicht alle Fälle. Ich kenne keine Open-Source-Flutter-Bibliothek, die dies korrekt macht.

In unserem Fall müssen wir mehr Daten über längere Zeiträume verfolgen (Standort, Bluetooth, Sensoren). Daher ist es nicht geeignet, jedes Plugin einzeln mit lang laufender Logik zu behandeln, da jedes Plugin einen separaten Foreground-Dienst haben würde und der Benutzer drei verschiedene Benachrichtigungen sehen würde.

Ich hoffe, Google würde diese Funktion sofort einbauen: p

Hallo, ist dieses Thema geschlossen? Ich brauche die Hintergrund-Geolokalisierung auch für Android und iOS zum Flattern! Welches ist das beste lib dafür?

Nur um mein +1 zu dieser Funktionsanfrage hinzuzufügen. Für einige Anwendungen ist dies ein Showstopper.
Wäre toll, es zu haben.

+1 Wäre für so viele Anwendungen so hilfreich

Dies wird in meinem Projekt dringend benötigt ... Ich war beeindruckt von dem, das ich in der Kneipe gefunden habe, aber 300 USD?

Ich war auch mit diesem Problem konfrontiert und habe mein eigenes Plugin für Standortaktualisierungen im Hintergrund entwickelt, hier ist es, flutter_background_location ,

+1 Ich freue mich auch darauf.

+1 Dies wird dringend benötigt!

  • Diese Funktion wird benötigt. Bitte fügen Sie dies hinzu!
  • 1

@milesgranger @Zeissus @shishirraven und andere

Wenn Sie dieses Problem haben, geben Sie dem Problem einen Daumen hoch, anstatt +1 in den Kommentar zu schreiben, es ist sinnvoller.

@AlexCampos95 Warum fragst du mich nicht in meinem Repo?

Schon eine Lösung?

irgendeine Lösung ?

beliebig?

Weiß nicht, ob das hilfreich ist, habe vor einigen Monaten daran gearbeitet.
https://github.com/akinsete/Flutter-Background-Location-Service

Versuch es.

Am Do, 12. Dez. 2019 um 12:05 Uhr Felix Hamborg [email protected]
schrieb:

beliebig?


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/Baseflow/flutter-geolocator/issues/53?email_source=notifications&email_token=AFKOFXJ2RA2FV2Q6LBZBXTQYKDNZA5CNFSM4FM72VCKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGXV2AQ#issuecomment-565
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AFKOFXLSVIXG74CNIBXLPQDQYKDNZANCNFSM4FM72VCA
.

Das einzige, was für mich wirklich funktioniert, ist workmanager + geolocator . Wenn der Batteriesparmodus für Ihre App deaktiviert wird, funktioniert dies auch nach dem Neustart des Telefons.

Hallo Jegor Wjalow

Das scheint eine gute Idee zu sein. Haben Sie ein Beispielprojekt, das Sie umsetzen können
beide für die Standortüberwachung im Hintergrund? Wenn ja, kannst du es bitte teilen.

Danke

Am Freitag, 13. Dezember 2019 um 1:52 Uhr Yegor Vialov [email protected]
schrieb:

Das einzige, was für mich wirklich funktioniert, ist Workmanager
https://pub.dev/packages/workmanager + geolocator
https://pub.dev/packages/geolocator . Wenn der Batteriesparmodus deaktiviert wird
Für Ihre App funktioniert dies auch nach dem Neustart des Telefons.


Sie erhalten dies, weil Sie kommentiert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/Baseflow/flutter-geolocator/issues/53?email_source=notifications&email_token=AFKOFXJ3L4B6SVPCWOUYBLLQYNENLA5CNFSM4FM72VCKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGZKOXY#issuecomment-565356#issuecomment-5653566
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AFKOFXOP3K36MV6LCE3E7HTQYNENLANCNFSM4FM72VCA
.

Workmanager ist in iOS inkonsistent, Sie haben keine Kontrolle darüber, wann eine Aufgabe ausgeführt wird, sodass es nicht für Echtzeit-Standortaktualisierungen funktioniert. Auf Android beträgt die Mindestfrequenz 15 Minuten, daher funktioniert dies auch nicht.

Wir brauchen dies wirklich, um es in Flatter out of the box zu implementieren.

Ich habe nicht viel Erfahrung mit Android, aber es sieht so aus, als ob es einen separaten Aufruf für Standortaktualisierungen im Hintergrund im Vergleich zu Vordergrundaktualisierungen gibt (der derzeit in diesem Plugin verwendet wird). Ich bin mir nicht sicher, wie es funktionieren würde, aber ich stelle mir vor, dass wir die optimale Funktion basierend auf dem Status der App irgendwie verwenden möchten.

Gibt es diesbezüglich noch andere Updates? Dies ist eine ziemlich wichtige Funktion für ein Standortverfolgungspaket und wäre wirklich schön zu haben, wenn dies das Standortpaket Nummer 1 für Flattern sein soll

Das Plugin von @christocracy ist sein Geld wert und er reagiert sehr, sehr schnell. Wenn der Standort im Hintergrund für Ihre Anwendung wichtig ist, handelt es sich um geringe Kosten.

@jamesdixon diese Bibliothek ist großartig. Aber ich habe eine Task-Manager-App, in der Aufgaben eine Standortbenachrichtigung haben. Mit Geolocator + flutter_local_notifications kann ich eine Push-Benachrichtigung auslösen, wenn die App im Vordergrund ist, funktioniert aber nicht, wenn die App in den Hintergrund wechselt. flutter_background_geolocation ist zu viel für meine Anforderung.

Vielleicht kann dir diese Bibliothek helfen:
https://github.com/rekab-app/background_locator

Maaaan, Sie finden hier ein Juwel, es ist GENAU das, was ich brauche, das einzige Problem ist, dass es keine Dokumentation gibt

Vielleicht kann dir diese Bibliothek helfen:
https://github.com/rekab-app/background_locator

Maaaan, Sie finden hier ein Juwel, es ist GENAU das, was ich brauche, das einzige Problem ist, dass es keine Dokumentation gibt

Ich habe es geschafft, ihr Beispiel auszuführen ... Es funktioniert gut, manchmal scheint es, dass es die Aufzeichnung der Koordinaten stoppt, wenn ich die Haupt-App schließe und es den Dienst im Hintergrund ausführt ... Aber ich muss es noch einmal testen ...

Lassen Sie mich wissen, wenn Sie Hilfe bei der Ausführung benötigen :)

Es funktioniert gut für mich, das einzige Problem besteht darin, in der Callback-Funktion auf der Festplatte zu speichern, der Dienst registriert den nativen Code des Plugins nicht und daher kann ich beispielsweise keine nativen Aufrufe mit path_provider tätigen, auch wenn die App beim Isolate beendet wird sendet von der getöteten FlutterActivity an den ReceivePort, sodass nichts zuhört. Beim Neustart muss ich das Isolat beenden und es dann mit einem neuen Port neu erstellen, aber ich denke nicht, dass es die beste Lösung ist, lol.
Ich habe auch dieses Beispiel gefunden, das dem, was die Bibliothek tut, ziemlich ähnlich ist (einen Dienst haben, der Dart-Code mit einer Benachrichtigung ausführt), aber sie registrieren den Plugin-Eintrag in der Kotlin-Datei, damit sie Dinge auf der Festplatte speichern können
Wenn Sie wissen, wie ich die LatLng aus der Callback-Funktion abrufen kann, wäre das großartig🙏

@christocracy würde es begrüßen, wenn Sie auf diese Weise einen Schlüssel senden könnten, da ich alle oben genannten Lösungen ausprobiert habe und keine konsistent zu funktionieren scheint (entweder sie werden beendet, nachdem die App geschlossen wurde, oder die Aufzeichnung beendet). Ich baue derzeit auf Wunsch des Direktors meines örtlichen Krankenhauses einen Corona-Tracker. Wenn Sie mir helfen können, wäre es dankbar.

Ich baue derzeit auf Wunsch des Direktors meines örtlichen Krankenhauses einen Corona-Tracker. Wenn Sie mir helfen können, wäre es dankbar.

Sie möchten wahrscheinlich ein bestehendes Projekt auf Github forken, anstatt bei Null anzufangen

@RomanJos @Ashar2shahid https://corona-trace.github.io/

@christocracy Das ist genau das, was ich zu bauen versucht habe - die Suche nach Background-Location-Plugins für Flattern hat mich hierher geführt. Allerdings der Link auf dieser Website: https://corona-trace.github.io/
für Slack-Kanal funktioniert nicht. Hast du einen anderen Link für Slack?

Ich habe das Repo durchgesehen - das wird mir viel Arbeit ersparen, wenn ich die 300 Dollar plus finde. Apple versucht, etwas Ähnliches mit Bluetooth zu bauen - sie sind mehr besorgt über den Datenschutz - aber ich denke - Standortdatenschutz ist in diesen Zeiten ein kleiner Preis, den man so bauen muss, Google Takeout usw. zu verwenden, ist genau das, was ich im Sinn hatte.

@tatiblockchain , bitte komm zu meinem Repo, um zu diskutieren, bitte.

Warum ist das so eine große Sache, um es sofort einsatzbereit zu haben?

@MazEbeid was meinst du genau?

Ich würde gerne in der Lage sein, es zu unterstützen, ich habe nur nicht das nötige Wissen, um es zu bauen. Habe auch nicht die Zeit gefunden, es zu lernen. Bitte zögern Sie nicht, eine Pull-Anfrage zu erstellen, oder Sie können mir vielleicht eine gute Ressource zur Verfügung stellen, damit ich sie erstellen kann (abgesehen von dem Tutorial von der Flutter-Site habe ich dies viele Male gelesen, aber es fällt mir schwer, eine solides Verständnis)?

Ich meinte, warum das Flutter-Team kein nettes und wartbares Plugin für das Abrufen von Standorten im Hintergrund hinzufügt.

Ich habe dieses Plugin background_locator verwendet, das gut funktioniert, aber im Moment unterstützt es keine Standortaktualisierungen auf iOS, wenn die App beendet wird

Dem Club ohne Hoffnung beigetreten =(

Ich verwende derzeit das Paket background_locator . Es ist nicht perfekt, aber funktioniert

background_locator ist nett... aber es hat seine Probleme.

Ich bin sehr daran interessiert, etwas Robusteres zu finden (hoffentlich das hier) und es würde mir nichts ausmachen, einige bewährte Verfahren zum Speichern dieser Werte zu haben, während sich beispielsweise die App im Hintergrund befindet oder der Bildschirm ausgeschaltet ist.

Ich habe festgestellt, dass viele der verfügbaren Optionen nicht Isolate-Safe sind und Probleme wie beschädigte Daten oder sogar nur Zugriffsfehler verursachen, was nicht ideal ist, wenn es um eine Hintergrundlösung geht.

@Flavsditz Ich plane derzeit die Entwicklung eines nativen Plugins für das BG-Tracking. Ich werde wahrscheinlich den Standort verfolgen, indem ich die Chat-Blase auf Android zeige (ich könnte mich irren, aber ich denke, dass Android den Vordergrunddienst benötigt, um den Dienst am Leben zu erhalten). Aber ich habe keine Ahnung von Tracking auf iOS.

Ich würde dieses Plugin gerne verwenden, aber aufgrund der Nichtverfügbarkeit der Standortaktualisierungen im Hintergrund bin ich gezwungen, etwas anderes zu wählen, das diese Funktion bietet, selbst wenn ich mehr als 300 US-Dollar bezahlen muss. Diese Funktion ist sehr wichtig für jede Anwendung mit Geolokalisierung.

Ich würde dieses Plugin gerne verwenden, aber aufgrund der Nichtverfügbarkeit der Standortaktualisierungen im Hintergrund bin ich gezwungen, etwas anderes zu wählen, das diese Funktion bietet, selbst wenn ich mehr als 300 US-Dollar bezahlen muss. Diese Funktion ist sehr wichtig für jede Anwendung mit Geolokalisierung.

Hast du dieses Plugin ausprobiert? Es wurde kürzlich aktualisiert und sollte die Hintergrundortung unterstützen.
https://github.com/rekab-app/background_locator

@mvanbeusekom Haben Sie die Absicht, dies aufzunehmen? Es wäre unglaublich cool. Das brauchen viele Menschen.

@ndhbr ja, ich habe die Absicht, das Abrufen von Positionsaktualisierungen im Hintergrund zu unterstützen. Allerdings finde ich bisher nicht wirklich die Zeit dazu. Jedes Mal, wenn ich anfange, kommt etwas anderes (wichtigeres) dazu. Jetzt wird beispielsweise iOS 14 veröffentlicht, das eine neue API für Standortberechtigungen einführt, die unterstützt werden muss, damit Benutzer den Geolocator auf iOS 14 verwenden können.

Wenn Sie sich also wohl fühlen, wäre es großartig, wenn Sie einen Anfang machen könnten, vielleicht Ecken und Kanten. Die Idee, die ich habe, ist, Entwicklern eine Option zur Verfügung zu stellen, um eine Dart-Callback-Methode zu registrieren, die (nur) ausgeführt wird, wenn die App jedes Mal im Hintergrund läuft, wenn eine Positionsaktualisierung eintrifft (wie in diesem Artikel beschrieben). Es würde schon sehr helfen, wenn wir einen Plan machen könnten. Teilen Sie die Arbeit, die erledigt werden muss, in kleinere Stücke auf.

@mvanbeusekom
Ah okay, danke für das Update. Ich kann das verstehen. Danke dir für deine Bemühungen.

Den Artikel kenne ich schon fast auswendig, aber einfach ist es trotzdem nicht.

Ich versuche seit einer Woche, background_locator stabil zum Laufen zu bringen (funktioniert oft nicht auf Android) und sie funktionieren mit Isolaten. Ein Isolate startet und bekommt den Standort in den Hintergrund. Mein aktuelles Vorgehen ist, eine Datei Byte für Byte im Callback zu füllen und die Datei ab dem letzten Byte im UI zu lesen. Leider schreibt Android nur alle paar Minuten den Standort in den Callback und so verliere ich fast alle Standorte. Unter iOS funktioniert das Verfahren gut.

Vielleicht ist das auch eine Inspiration.

Gibt es eine STABLE- Alternative, um den Hintergrundort zu handhaben?

Und habt ihr euch entschieden, diese Funktion in Zukunft hinzuzufügen?

Gibt es eine STABLE- Alternative, um den Hintergrundort zu handhaben?

Und habt ihr euch entschieden, diese Funktion in Zukunft hinzuzufügen?

https://github.com/rekab-app/background_locator funktioniert gut.

@TheMisir Danke. Sind Sie sicher, dass es gut funktioniert und für die Produktions-App in Ordnung ist? Es gibt auch Absturzberichte hier https://github.com/rekab-app/background_locator/issues

@TheMisir Danke. Sind Sie sicher, dass es gut funktioniert und für die Produktions-App in Ordnung ist? Es gibt auch Absturzberichte hier https://github.com/rekab-app/background_locator/issues

Ich hatte keine Wahl. Also verwenden wir es in der Produktion. Ja, es funktioniert nicht perfekt, aber es funktioniert, wenn es richtig konfiguriert ist. (Manchmal wurden Probleme in unseren Projekten durch falsche Konfiguration verursacht).

Gibt es eine STABLE- Alternative, um den Hintergrundort zu handhaben?

Und habt ihr euch entschieden, diese Funktion in Zukunft hinzuzufügen?

Ja, da ich die Funktion dringend in der Produktion benötigte, habe ich eine Lizenz für https://www.transistorsoft.com/shop/products/flutter-background-geolocation gekauft. Ich benutze es seit 1 Monat in der Produktion und es funktioniert bisher gut.

Sobald ich hinzufüge:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Zu meinem Manifest (gefunden im Beispiel background_locator) könnte ich Folgendes verwenden:
var userPosition = await Geolocator().getCurrentPosition();
im Hintergrund mit background_fetch: ^0.6.0.

Es ist also nur alle 15 Minuten, aber hat ziemlich gut funktioniert.
Werde es jetzt mit background_locator versuchen

Sobald ich hinzufüge:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Zu meinem Manifest (gefunden im Beispiel background_locator) könnte ich Folgendes verwenden:
var userPosition = await Geolocator().getCurrentPosition();
im Hintergrund mit background_fetch: ^0.6.0.

Es ist also nur alle 15 Minuten, aber hat ziemlich gut funktioniert.
Werde es jetzt mit background_locator versuchen

Ich bin auf dieses Problem auf background_locator https://github.com/rekab-app/background_locator/issues/167 gestoßen

Und dann bin ich zu diesem Paket https://github.com/transistorsoft/flutter_background_geolocation gewechselt . Dieses Paket ist großartig

@Dereumaux-Adrien danke für das Update! Schätze es wirklich. 15 Minuten sind gut genug für mich. Werde es versuchen..

@bhanuka96 Tatsächlich funktioniert es einwandfrei, aber da ich noch nicht weiß, ob mein Projekt einen kommerziellen Wert hat, habe ich nicht vor, Geld für Plugins auszugeben.
Ich schätze transistorsoft bereits, da background_fetch auch von ihnen stammt.
Wenn das Projekt ein gutes Ergebnis liefert, werde ich wohl später zu flutter_background_geolocation wechseln.

TLDR für Leute, die neu in diesem Thread sind

Geolocator unterstützt die Geolokalisierung im Hintergrund noch nicht vollständig.

Die Lösungen sind die folgenden

Wenn Sie bezahlen können, funktioniert https://pub.dev/packages/flutter_background_geolocation einfach und gut.
Wenn Sie Zeit damit verbringen können, sollten Sie es schaffen, https://pub.dev/packages/background_locator zum Laufen zu bringen (konnte ich noch nicht).
Wenn Sie schnell anfangen wollen, noch kein Geld ausgeben können und mit einer Hintergrundüberprüfung einverstanden sind, die alle 15 ~ Minuten stattfindet: https://pub.dev/packages/background_fetch mit https://pub.dev/packages/geolocator mit manifest Änderungen hier geschrieben

Sie können WorkManager auch wie hier beschrieben verwenden: https://medium.com/@pierre.sabot/how -to-fetch-user-location-in-background-with-flutter-e3494021bdf5

Es ist immer noch auf 15 Minuten für Android begrenzt, aber es ist ein anderer Ansatz, eine einfache API.

Ich habe https://pub.dev/packages/background_location verwendet, um den Benutzerstandort im Hintergrund zu verfolgen und in Firestore zu speichern

Außerdem frage ich mich, ob Sie nicht wirklich möchten, dass ein Rückruf angerufen wird, wenn ein Standort im Hintergrund eintrifft (damit Sie den Standort verarbeiten oder irgendwo speichern können, damit er verarbeitet werden kann, wenn die App wieder in den Vordergrund kommt). .

Ich bin mir nicht sicher, wie dies im Moment im location -Plugin gehandhabt wird. Aber so wollte ich es für die geolocator machen.

Übrigens ist es nicht wirklich respektvoll, auf andere Plugins zu verweisen.

Sie können WorkManager auch wie hier beschrieben verwenden: https://medium.com/@pierre.sabot/how -to-fetch-user-location-in-background-with-flutter-e3494021bdf5

Es ist immer noch auf 15 Minuten für Android begrenzt, aber es ist ein anderer Ansatz, eine einfache API.

Ich habe versucht, die Position regelmäßig alle 15 Minuten zu bekommen, und alles funktioniert gut.
Aber wenn ich jede Stunde ein periodisches Ereignis einstelle, kann ich die Position nicht bekommen. Der Workmanager funktioniert (die Benachrichtigung wird angezeigt), aber ich kann den Standort nicht abrufen.
Haben Sie versucht, ein periodisches Ereignis festzulegen? Wenn ja, wie lange?

@mvanbeusekom soll ich ein separates Problem für die Unterstützung von Standortaktualisierungen öffnen, während die App im Vordergrund läuft?
Mit Vordergrund meine ich, dass die Anwendung ausgeführt wird, aber der Benutzer auf die Home-Schaltfläche getippt hat, zu einer anderen App gewechselt ist oder der Bildschirm ausgeschaltet wurde. Für Android müssen wir einen Vordergrunddienst hinzufügen, der eine dauerhafte Benachrichtigung anzeigt, die den Benutzer darauf hinweist, dass die App seinen Standort verwendet. Für iOS wird ein grünes Symbol in der Statusleiste angezeigt (dies ist unter der NSLocationWhenInUsage-Berechtigung zulässig).
Ich denke, dies zu unterstützen wäre viel einfacher und würde viele Anwendungsfälle lösen, in denen keine tatsächlichen Standortaktualisierungen im Hintergrund erforderlich sind. (Standortzugriff im Hintergrund bedeutet, dass die App gestartet wird, wenn sie beendet wird, wenn Standortaktualisierungen abgerufen werden, und der Hintergrunddienst unabhängig von der App ausgeführt werden kann).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen