Flutter-geolocator: أضف دعمًا لتتبع الموقع في الخلفية

تم إنشاؤها على ٣١ يوليو ٢٠١٨  ·  82تعليقات  ·  مصدر: Baseflow/flutter-geolocator

enhancement

التعليق الأكثر فائدة

كنت أواجه هذه المشكلة أيضًا وقمت بتطوير المكوِّن الإضافي الخاص بي لتحديثات موقع الخلفية ، ها هو ، flutter_background_location ،

ال 82 كومينتر

هذا هو أحد الأسباب الرئيسية لعدم تبديل أحد تطبيقاتي إلى Flutter ، فتتبع الموقع في الخلفية أمر لا بد منه. شكرا لإبقاء هذا على المسار الصحيح!

أنا أيضا أبحث في هذا. الرغبة في إنشاء تطبيق في إعداد شركة مع متطلبات تتبع نظام تحديد المواقع العالمي (GPS) في الخلفية. flutter / plugins # 656 (المذكورة أعلاه) ليست متوفرة في Pub حتى الآن وتدعم iOS فقط.
سأشترك في هذا الموضوع لأية تحديثات.

انتهى بي الأمر بكتابة تطبيقي الخاص (على Android ، على الأقل) ، بناءً على نموذج Google هذا الذي يتم تشغيله عند إغلاق التطبيق.

أقوم بدفع بيانات الموقع إلى Firebase ، لذلك لم أكن بحاجة إلى إرسال أي شيء احتياطيًا لقناة الطريقة. أقوم بالتحميل مباشرة إلى Firebase باستخدام كود أصلي عند وصول نتيجة الموقع. هذا يعني أنه لا يمكنني تعميمه لمساعدة هذا المكون الإضافي ، ولكن نموذج الريبو هذا قد يكون مفيدًا.

لقد وجدت حلاً لتعميم طريقة aidandavis .
في هذه الحزمة ، يتم تخزين جميع المواقع في sqlite.
إذا كان بإمكان الخدمة الأمامية قبول مزود المتجر sqlite / firebase / ....
باستخدام MethodChannel ، يمكننا الحصول على موقع ملف db ، ويمكن لتطبيق flutter قراءته.

تحديث: نموذج Google لا يمنع وضع Doze. إذا كان الجهاز يستخدم غفوة الشبكة ويمكن أن يقتل نظام تحديد المواقع مع خدمتك أيضًا.

التحديث 2: يساعد مؤشر ترابط stackoverflow هذا ضد الأشياء التي توفر بطارية روم الصينية ، ويضيف التطبيق إلى القائمة المحمية.
هذا ضد Doze

هذه بالتأكيد طريقة للقيام بذلك. المشكلة التي لا تزال قائمة هي القيام بشيء ما بالبيانات أثناء عمل التطبيق في الخلفية أو عندما يختار النظام إغلاقه.

فيما يتعلق بـ Doze ، يجب أن يتم تطبيقه فقط عندما يكون الهاتف ثابتًا (مثل على منضدة). لا توجد تحديثات موقع تتبع نقطة في تلك المرحلة على أي حال - سيظل آخر موقع تم إرساله قبل Doze دقيقًا.

علاوة على ذلك ، يمكن تضمين رمز Dart بنفس الطريقة التي تم تنفيذها في alarm_manager_android. يستدعي رد الاتصال على Android رمز Dart بدون تشغيل التطبيق.

أرى أنه تمت إزالة هذه الميزة من الإصدار 2.1.0. هل تم دفعه إلى الشعلة الخلفية؟ سيستفيد مشروعي أيضًا بشكل كبير من هذا.

رفاق ، أي تحديث على هذا؟ يمكن أن تضيف هذه الميزة أجنحة إلى هذا البرنامج المساعد. لا بد من ذلك.

ربما تجدر الإشارة أيضًا إلى أن بعض الأجهزة لا يمكنها الحصول على مواقع GPS مع إيقاف تشغيل الشاشة. لقد علقت في هذا لفترة من الوقت ، ووجدت أخيرًا أنه يرجع إلى مجموعة شرائح الأجهزة. لذلك قد يكون من المفيد التحقق من ذلك أيضًا ، خاصةً إذا كان جهازًا ذا بطارية منخفضة مثل الساعة.

ibrierley لست متأكدًا من الأجهزة القابلة للارتداء ولكن جميع الأجهزة (الهواتف المحمولة / الأجهزة اللوحية) التي تعمل بواجهة برمجة التطبيقات> = 16 قادرة على الحصول على تحديثات الموقع حتى عندما تكون الشاشة مغلقة. اختبرت ذلك بنفسي أيضًا.

نعم ، لقد كنت أختبر بشكل أساسي على Huawei watch 2 ، وقرأت سلسلة رسائل حيث كان هناك منشور مع أحد مهندسي Huawei (قد يكون مخطئًا) ، قائلًا إنه تم تعيينه في مجموعة الشرائح ، لذلك لم يتمكنوا من إصلاحه (سأنشر هنا إذا كان بإمكاني العثور على الموضوع ، لكنني لم أره في بحث سريع).

انتهى بي الأمر إلى تحويل الشاشة إلى اللون الأسود ، لكنني أكره هذا الحل :) (لكنه يعمل ، لست متأكدًا تمامًا مما إذا كان يوفر هذا القدر من البطارية ، لذلك قد ينتهي الأمر بإجبار الشاشة على عرض شيء ما).

@ martijn00 أتساءل عما إذا كان البرنامج المساعد Geofence لن يعطي دفعة لهذه الميزة. أعتقد أن تنفيذ الخلفية سيكون أمرًا بالغ الأهمية ويتوقعه الكثير منا. اسمحوا لي أن أعرف ما هو رأيك...

آمل أن تتمكنوا يا رفاق من إضافة خدمة BG قريبًا :)

مرحبا!
ما هو الوضع الحالي لهذه القضية؟ هل هناك من يعمل عليها؟ او تم تأجيلها؟

مرحبًا يا رفاق ، ما هي أفكاركم على https://pub.dartlang.org/packages/flutter_background_geolocation
ألا يوفر هذا المكون الإضافي ما هو مطلوب هنا؟

مرحبًا يا رفاق ، ما هي أفكاركم على https://pub.dartlang.org/packages/flutter_background_geolocation
ألا يوفر هذا المكون الإضافي ما هو مطلوب هنا؟

إنه كذلك ، لكنه يكلف 300 دولار +

@ كريستوقراطية ، أعتقد أن رزمتك تساوي كل سنت ، لكنني فقير جدًا في أجهزة الصراف الآلي :) مشاهدة هذه المساحة

مرحبًا ، هل من الممكن تتبع الموقع المباشر christocracy مجانًا؟

نتطلع إلى هذا!

هل تعتقد أنه سيكون من الممكن البدء في العمل فيه هذا العام؟

هل تعتقد أنه سيكون من الممكن البدء في العمل فيه هذا العام؟

يمكن لأي شخص أن يبدأ العمل على الفور. نرحب بالمساهمات.

يقوم المشرفون على هذا المشروع بعمل جيد للغاية في قبول التغييرات الواردة من المجتمع.

حسنًا ، موارد gimmie ، ضعها في الكود من أين أبدأ وأحاول أن أبذل قصارى جهدي: قد يقضي DI بضعة أسابيع لحلها ولكن أولاً أحتاج إلى الدخول إلى android بشكل أعمق :( ، أنا مجرد فضول إذا كان شخص ما يعمل عليه ؛)

أقدر حماسك: 1st_place_medal:

موارد gimmie ، ووضعها في التعليمات البرمجية من أين تبدأ

أعتقد أنه سيتعين عليك لمس وفهم هذا المكون الإضافي بأكمله.


ومع ذلك ... يجب مراعاة عدد قليل من مشكلات التصميم عالية المستوى قبل البدء في الترميز.

  1. على نظام Android الأحدث (API 26) ، الطريقة الوحيدة للحصول على تحديثات الموقع عالية الدقة هي استخدام خدمة المقدمة. أحدث (Android Q) سيكون لديه أيضًا إذن إضافي (للحصول على الموقع في الخلفية). لذلك تحتاج إلى معالجة 3 سلوكيات مختلفة للتوافق مع: android pre 26 و android 26 و android Q
  2. لاستخدام خدمة المقدمة ، تحتاج إلى إظهار إشعار النظام. ربما سيرغب كل تطبيق في الحصول على إشعار مخصص.
  3. التوافق مع iOS. يجب أن تخفي Geolocator API الاختلافات بين النظام الأساسي قدر الإمكان.
  4. يمكن إيقاف الخدمة الأمامية وإعادة تشغيلها مثل النشاط. تحتاج إلى منطق للتعامل مع هذا. ليس لدى Flutter طريقة سهلة للقيام بذلك. المثال الوحيد الذي أعرفه هو المكون الإضافي alarm_manager . لكنها عربات التي تجرها الدواب أيضًا ولا تتعامل مع جميع الحالات. لا أعرف أي مكتبة Flutter مفتوحة المصدر تقوم بذلك بشكل صحيح.

بالنسبة لحالتنا ، نحتاج إلى تتبع المزيد من البيانات لفترات طويلة من الوقت (الموقع ، والبلوتوث ، وأجهزة الاستشعار). لذا فإن جعل كل مكون إضافي يتعامل مع منطق التشغيل الطويل بشكل منفصل غير مناسب للاستخدام لأن كل مكون إضافي سيكون له خدمة مقدمة منفصلة وسيشاهد المستخدم ثلاثة إعلامات مختلفة.

آمل أن تضيف Google هذه الميزة في رفرفة خارج الصندوق: p

مرحبا ، هل هذه القضية مغلقة؟ أحتاج إلى تحديد الموقع الجغرافي في الخلفية أيضًا لنظامي Android و iOS من أجل الرفرفة! ما هو أفضل ليب لهذا؟

فقط لإضافة +1 إلى طلب الميزة هذا. بالنسبة لبعض التطبيقات ، يعد هذا أداة عرض.
سيكون من المدهش الحصول عليه.

سيكون 1+ مفيدًا جدًا للعديد من التطبيقات

هذا مطلوب بشدة في مشروعي ... لقد تأثرت بالمشروع الذي وجدته في الحانة ، ولكن 300 دولار أمريكي؟

كنت أواجه هذه المشكلة أيضًا وقمت بتطوير المكوِّن الإضافي الخاص بي لتحديثات موقع الخلفية ، ها هو ، flutter_background_location ،

+1 أيضا أتطلع إلى هذا.

+1 هذا مطلوب بشدة!

  • هذه الميزة مطلوبة. الرجاء إضافة هذا!
  • 1

تضمين التغريدة _

إذا كانت لديك هذه المشكلة ، فبدلاً من كتابة تعليق +1 ، أعط إبهامًا للمشكلة ، فهذا منطقي أكثر.

@ AlexCampos95 لماذا لا تسألني في الريبو الخاص بي ؟

أي حل حتى الآن؟

اي حل ؟

أي؟

لا أعرف ما إذا كان هذا مفيدًا ، لقد كنت تعمل على هذا قبل بضعة أشهر.
https://github.com/akinsete/Flutter-Background-Location-Service

حاول.

يوم الخميس 12 ديسمبر 2019 الساعة 12:05 مساءً Felix Hamborg [email protected]
كتب:

أي؟

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/Baseflow/flutter-geolocator/issues/53؟email_source=notifications&email_token=AFKOFXJ2RA2FV2Q6LBZBUXTQYKDNZA5CNFSM4FM72VCKYY3PNVWWK3TUL52HS4DFVREXG43
أو إلغاء الاشتراك
https://github.com/notifications/unsubscribe-auth/AFKOFXLSVIXG74CNIBXLPQDQYKDNZANCNFSM4FM72VCA
.

الشيء الوحيد الذي يناسبني حقًا هو عامل + geolocator . إذا تم تعطيل توفير شحن البطارية لتطبيقك ، فسيعمل هذا باستمرار حتى بعد إعادة تشغيل الهاتف.

مرحبا ايجور فيالوف

هذا يبدو وكأنه فكرة جيدة. هل لديك نموذج مشروع يتم تنفيذه
على حد سواء لرصد موقع الخلفية؟ إذا كنت تستطيع أن تفعل يرجى المشاركة.

شكرا

يوم الجمعة 13 ديسمبر 2019 الساعة 1:52 صباحًا Yegor Vialov [email protected]
كتب:

الشيء الوحيد الذي يناسبني حقًا هو المدير
https://pub.dev/packages/workmanager + geolocator
https://pub.dev/packages/geolocator . إذا تم تعطيل توفير البطارية
لتطبيقك ، سيعمل هذا باستمرار حتى بعد إعادة تشغيل الهاتف.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/Baseflow/flutter-geolocator/issues/53؟email_source=notifications&email_token=AFKOFXJ3L4B6SVPCWOUYBLLQYNENLA5CNFSM4FM72VCKYY3PNVWWK3TUL52HS4DFVREXG43
أو إلغاء الاشتراك
https://github.com/notifications/unsubscribe-auth/AFKOFXOP3K36MV6LCE3E7HTQYNENLANCNFSM4FM72VCA
.

akinsete ، عميل HA: https://github.com/estevez-dev/ha_client

Workmanager غير متسق في iOS ولا يمكنك التحكم في وقت تشغيل المهمة ، لذا لن تعمل لأغراض تحديثات الموقع في الوقت الفعلي. الحد الأدنى للتردد على Android هو 15 دقيقة ، لذا لا يعمل هذا أيضًا.

نحتاج حقًا إلى تنفيذ هذا برفرفة خارج الصندوق.

ليس لدي الكثير من الخبرة مع Android ، ولكن يبدو أن هناك مكالمة منفصلة لتحديثات الموقع في الخلفية مقارنةً بالتحديثات الأمامية (وهي المستخدمة حاليًا في هذا المكون الإضافي). لست متأكدًا من كيفية عمله ولكني أتخيل أننا نريد بطريقة ما استخدام الوظيفة المثلى بناءً على الحالة التي يوجد بها التطبيق.

هل هناك أي تحديثات أخرى على هذا؟ هذه ميزة أساسية جدًا لحزمة تتبع الموقع وسيكون من الجيد حقًا الحصول عليها إذا كانت هذه هي حزمة الموقع رقم 1 للرفرفة

البرنامج المساعد christocracy يستحق المال وهو يستجيب بسرعة كبيرة جدًا. إذا كان موقع الخلفية مهمًا لتطبيقك ، فهذه تكلفة رمزية.

jamesdixon أن المكتبة رائعة. لكن لدي تطبيق مدير المهام حيث يكون للمهام إشعار بالموقع. باستخدام geolocator + flutter_local_notifications ، يمكنني تشغيل إشعار الدفع عندما يكون التطبيق في المقدمة ولكنه لا يعمل عندما ينتقل التطبيق إلى الخلفية. flutter_background_geolocation كثير جدًا لمتطلباتي.

ربما يمكن أن يساعدك هذا lib:
https://github.com/rekab-app/background_locator

Maaaaan تجد جوهرة هنا بالضبط ما أحتاجه فقط هو أنه يفتقر إلى الوثائق

ربما يمكن أن يساعدك هذا lib:
https://github.com/rekab-app/background_locator

Maaaaan تجد جوهرة هنا بالضبط ما أحتاجه فقط هو أنه يفتقر إلى الوثائق

تمكنت من تنفيذ مثالهم ... إنه يعمل بشكل جيد ، ويبدو أحيانًا أنه يتوقف عن تسجيل الإحداثيات عندما أغلق التطبيق الرئيسي ويقوم بتنفيذ الخدمة في الخلفية .. ولكن لا بد لي من اختبارها مرة أخرى ...

اسمحوا لي أن أعرف إذا كنت بحاجة إلى مساعدة لتنفيذه :)

إنها تعمل بشكل جيد بالنسبة لي ، المشكلة الوحيدة هي الحفظ على القرص في وظيفة رد الاتصال ، الخدمة لا تسجل الكود الأصلي للمكونات الإضافية ، وبالتالي لا يمكنني إجراء مكالمات أصلية باستخدام path_provider على سبيل المثال ، أيضًا إذا تم إيقاف التطبيق ، فإن Isolate سيرسل إلى ReceivePort من FlutterActivity المقتول لذلك لا شيء يستمع. عند إعادة التشغيل ، أحتاج إلى قتل العزلة ثم إعادة إنشائها باستخدام منفذ جديد ولكن لا أعتقد أنه أفضل حل لول.
لقد وجدت أيضًا هذا المثال مشابهًا تمامًا لما تفعله المكتبة (لديها خدمة تنفذ رمز dart مع إشعار) لكنها تسجل إدخال المكونات الإضافية في ملف Kotlin حتى يتمكنوا من تخزين الأشياء على القرص
إذا كنت تعرف كيف يمكنني استرداد LatLng من وظيفة رد الاتصال ، فسيكون ذلك رائعًا🙏

نقدر لك أن ترسل مفتاح christocracy بهذه الطريقة لأنني جربت جميع الحلول المذكورة أعلاه ولا يبدو أن أيًا منها يعمل باستمرار (إما أنها تنتهي بعد إغلاق التطبيق أو إيقاف التسجيل). أقوم حاليًا ببناء جهاز تعقب للكورونا بناءً على طلب مدير مستشفي المحلي. إذا كنت تستطيع مساعدتي فسيكون ذلك موضع تقدير.

أقوم حاليًا ببناء جهاز تعقب للكورونا بناءً على طلب مدير مستشفي المحلي. إذا كنت تستطيع مساعدتي فسيكون ذلك موضع تقدير.

ربما ترغب في تفرع بعض المشاريع الحالية على Github بدلاً من البدء من نقطة الصفر

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

christocracy هذا هو بالضبط ما كنت أحاول بناءه - قادني البحث عن مكونات إضافية في الخلفية لموقع الرفرفة إلى هنا. لكن الرابط الموجود على هذا الموقع: https://corona-trace.github.io/
لقناة سلاك لا تعمل. هل لديك رابط آخر لتطبيق Slack؟

لقد مررت باستخدام الريبو - وهذا سيوفر لي الكثير من العمل ، عندما أجد 300 دولار زائد. تحاول Apple إنشاء شيء مشابه باستخدام البلوتوث - فهم مهتمون أكثر بالخصوصية - لكنني أعتقد - خصوصية الموقع هي ثمن زهيد يجب دفعه في هذه الأوقات ، وبناءه على هذا النحو ، واستخدام google takeout وما إلى ذلك هو بالضبط ما كنت أفكر فيه.

tatiblockchain يرجى القدوم إلى الريبو الخاص بي للمناقشة ، من فضلك.

لماذا هذه صفقة كبيرة يجب أن تكون خارج الصندوق؟

MazEbeid ماذا تقصد بالضبط؟

أرغب في أن أكون قادرًا على دعمه ، فليس لدي المعرفة اللازمة لإنشائه. أيضًا لم أجد الوقت لتعلم كيفية القيام بذلك. لا تتردد في إنشاء طلب سحب أو ربما يمكنك تقديم بعض الموارد الجيدة حول كيفية القيام بذلك حتى أتمكن من بنائه (بصرف النظر عن البرنامج التعليمي من موقع Flutter ، لقد قرأت هذا عدة مرات ولكني واجهت صعوبة في الحصول على فهم متين)؟

قصدت لماذا لا يضيف فريق Flutter مكونًا إضافيًا لطيفًا وقابل للصيانة لجلب موقع الخلفية.

لقد استخدمت هذا المكون الإضافي background_locator الذي يعمل بشكل جيد ولكنه في الوقت الحالي لا يدعم تحديثات الموقع على iOS عند إنهاء التطبيق

التحق بالنادي بلا أمل = (

أستخدم حاليًا حزمة background_locator . إنه ليس مثاليًا ولكنه يعمل

background_locator جميل ... لكن به مشاكله.

أنا مهتم جدًا بالعثور على شيء أكثر قوة (آمل أن يكون هذا هنا) ولا أمانع في الحصول على بعض أفضل الممارسات لتخزين هذه القيم أثناء وجود التطبيق على سبيل المثال في الخلفية أو الشاشة مغلقة.

لقد وجدت أن الكثير من الخيارات المتاحة ليست معزولة بشكل آمن وتتسبب في مشاكل مثل البيانات التالفة أو حتى مجرد أخطاء في الوصول وهي ليست مثالية إذا كنت تتعامل مع حل في الخلفية.

Flavsditz أخطط حاليًا لتطوير مكون إضافي أصلي لتتبع bg. من المحتمل أن أتتبع الموقع من خلال عرض فقاعة الدردشة (قد أكون مخطئًا ولكني أعتقد أن android يتطلب خدمة في المقدمة للحفاظ على الخدمة حية) على نظام Android. لكن ليس لدي أي فكرة عن التتبع على iOS.

أرغب في استخدام هذا المكون الإضافي ، ولكن نظرًا لعدم توفر تحديثات موقع الخلفية ، فأنا مجبر على اختيار شيء آخر يمكنه توفير هذه الميزة حتى لو كان عليّ دفع 300 دولار +. هذه الميزة مهمة جدًا لأي تطبيق به تحديد الموقع الجغرافي.

أرغب في استخدام هذا المكون الإضافي ، ولكن نظرًا لعدم توفر تحديثات موقع الخلفية ، فأنا مجبر على اختيار شيء آخر يمكنه توفير هذه الميزة حتى لو كان عليّ دفع 300 دولار +. هذه الميزة مهمة جدًا لأي تطبيق به تحديد الموقع الجغرافي.

هل جربت هذا البرنامج المساعد؟ تم تحديثه مؤخرًا ويجب أن يدعم موقع الخلفية.
https://github.com/rekab-app/background_locator

mvanbeusekom هل لديك نوايا لتضمين هذا؟ سيكون رائعا بشكل لا يصدق. كثير من الناس بحاجة إلى ذلك.

ndhbr نعم لدي نية لدعم جلب تحديثات الموقع في الخلفية. ومع ذلك ، فأنا لا أجد الوقت الكافي للقيام بذلك حتى الآن. في كل مرة أبدأ فيها ، يظهر شيء آخر (أكثر أهمية). الآن على سبيل المثال ، تم إصدار iOS 14 والذي يقدم واجهة برمجة تطبيقات جديدة لأذونات الموقع والتي تحتاج إلى دعم للمستخدمين حتى يتمكنوا من استخدام أداة تحديد الموقع الجغرافي على iOS 14.

لذلك إذا كنت تشعر بالراحة ، فسيكون من الرائع أن تبدأ ، ربما الحواف الخشنة. الفكرة التي أمتلكها هي تزويد المطورين بخيار لتسجيل طريقة رد نداء Dart والتي سيتم تنفيذها (فقط) عندما يكون التطبيق في الخلفية في كل مرة يصل فيها تحديث للموقع (كما هو موضح في هذه المقالة ). سيساعدنا كثيرًا إذا تمكنا من وضع خطة. قسّم العمل الذي يجب القيام به إلى أجزاء أصغر.

تضمين التغريدة
آه حسنًا ، شكرًا على التحديث. أستطيع أن أفهم ذلك. شكرا لكم على جهودكم.

أعرف بالفعل المقال عن ظهر قلب ، لكنه لا يزال غير سهل.

لقد كنت أحاول منذ أسبوع تشغيل background_locator بشكل مستقر (غالبًا لا يعمل على Android) ويعملون مع العزلات. تبدأ العزلة وتحصل على الموقع في الخلفية. الإجراء الحالي الخاص بي هو ملء ملف بايت بايت في رد الاتصال وقراءة الملف من آخر بايت في واجهة المستخدم. لسوء الحظ ، يكتب Android الموقع في رد الاتصال كل بضع دقائق فقط ولذا أفقد جميع المواقع تقريبًا. يعمل الإجراء بشكل جيد في نظام iOS.

ربما هذا هو أيضا بعض الإلهام.

هل هناك أي طريقة بديلة مستقرة للتعامل مع موقع الخلفية؟

وهل قررتم يا رفاق إضافة هذه الميزة في المستقبل؟

هل هناك أي طريقة بديلة مستقرة للتعامل مع موقع الخلفية؟

وهل قررتم يا رفاق إضافة هذه الميزة في المستقبل؟

https://github.com/rekab-app/background_locator يعمل بشكل جيد.

TheMisir شكرا لك. هل أنت متأكد من أنه يعمل بشكل جيد وهل مناسب لتطبيق الإنتاج؟ توجد أيضًا تقارير أعطال هنا https://github.com/rekab-app/background_locator/issues

TheMisir شكرا لك. هل أنت متأكد من أنه يعمل بشكل جيد وهل مناسب لتطبيق الإنتاج؟ توجد أيضًا تقارير أعطال هنا https://github.com/rekab-app/background_locator/issues

لم يكن لدي اي خيار. لذلك نحن نستخدمه في الإنتاج. نعم ، إنه لا يعمل بشكل مثالي ولكنه يعمل إذا تم تكوينه بشكل صحيح. (في بعض الأحيان كانت المشكلات في مشاريعنا ناتجة عن تكوين خاطئ).

هل هناك أي طريقة بديلة مستقرة للتعامل مع موقع الخلفية؟

وهل قررتم يا رفاق إضافة هذه الميزة في المستقبل؟

نعم ، لأنني كنت بحاجة ماسة إلى الوظيفة في الإنتاج ، فقد اشتريت ترخيصًا لـ https://www.transistorsoft.com/shop/products/flutter-background-geolocation. لقد كنت أستخدمه لمدة شهر واحد في الإنتاج وهو يعمل بشكل جيد حتى الآن.

بمجرد أن أضيف:
<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"/>
إلى البيان الخاص بي (وجدتها في مثال background_locator) ، يمكنني استخدام:
var userPosition = await Geolocator().getCurrentPosition();
في الخلفية باستخدام background_fetch: ^ 0.6.0.

لذلك كل 15 دقيقة فقط ولكنها تعمل بشكل جيد.
سنحاول background_locator الآن

بمجرد أن أضيف:
<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"/>
إلى البيان الخاص بي (وجدتها في مثال background_locator) ، يمكنني استخدام:
var userPosition = await Geolocator().getCurrentPosition();
في الخلفية باستخدام background_fetch: ^ 0.6.0.

لذلك كل 15 دقيقة فقط ولكنها تعمل بشكل جيد.
سنحاول background_locator الآن

لقد واجهت هذه المشكلة على background_locator https://github.com/rekab-app/background_locator/issues/167

ثم انتقلت إلى هذه الحزمة https://github.com/transistorsoft/flutter_background_geolocation هذه الحزمة رائعة

@ Dereumaux-Adrien أشكركم على التحديث! نقدر ذلك حقا. 15 دقيقة كافية بالنسبة لي. سأحاول ..

@ bhanuka96 في الواقع ، إنه يعمل بشكل لا تشوبه شائبة ولكن بما أنني لا أعرف حتى الآن ما إذا كان مشروعي له أي قيمة تجارية ، فأنا لا أنوي إنفاق الأموال على المكونات الإضافية.
أنا بالفعل أقدر ترانزستورات سوفت لأن background_fetch منها أيضًا.
إذا تمكن المشروع من تحقيق نتيجة جيدة ، أعتقد أنني سأنتقل إلى flutter_background_geolocation لاحقًا.

TLDR للأشخاص الجدد في هذا الموضوع

لا يدعم Geolocator تحديد الموقع الجغرافي في الخلفية بشكل كامل حتى الآن.

الحلول هي التالية

إذا كان بإمكانك الدفع ، فإن https://pub.dev/packages/flutter_background_geolocation يعمل بسهولة ويسر.
إذا كان بإمكانك قضاء بعض الوقت في ذلك ، فيجب أن تدير https://pub.dev/packages/background_locator (لم أستطع القيام بذلك بعد).
إذا كنت تريد أن تبدأ بسرعة ، فلا يمكنك إنفاق الأموال حتى الآن ولا بأس من إجراء فحص للخلفية كل 15 دقيقة تقريبًا: https://pub.dev/packages/background_fetch with https://pub.dev/packages/geolocator with التغييرات الواضحة المكتوبة هنا

يمكنك أيضًا استخدام WorkManager كما هو مفصل هنا: https://medium.com/@pierre.sabot/how -to-fetch-user-location-in-background-with-flutter-e3494021bdf5

لا يزال الأمر يقتصر على 15 دقيقة لنظام Android ، ولكنه نهج آخر ، واجهة برمجة تطبيقات بسيطة.

لقد استخدمت https://pub.dev/packages/background_location لتتبع موقع المستخدم في الخلفية وحفظه في firestore

كما أنني أتساءل عما إذا كنت لا ترغب حقًا في الاتصال بمعاودة الاتصال عند وصول موقع ما في الخلفية (حتى تتمكن من معالجة الموقع أو تأمينه في مكان ما بحيث يمكن معالجته عند عودة التطبيق إلى المقدمة) .

لست متأكدًا من كيفية التعامل مع هذا في الوقت الحالي في المكون الإضافي location . ولكن هذه هي الطريقة التي كنت أفكر بها في القيام بذلك مقابل geolocator .

بالمناسبة ، ليس من المحترم حقًا الإشارة إلى المكونات الإضافية الأخرى.

يمكنك أيضًا استخدام WorkManager كما هو مفصل هنا: https://medium.com/@pierre.sabot/how -to-fetch-user-location-in-background-with-flutter-e3494021bdf5

لا يزال الأمر يقتصر على 15 دقيقة لنظام Android ، ولكنه نهج آخر ، واجهة برمجة تطبيقات بسيطة.

حاولت الحصول على الوظيفة بشكل دوري كل 15 دقيقة وكل شيء يعمل بشكل جيد.
ولكن من خلال تحديد حدث دوري كل ساعة لا يمكنني الحصول على المنصب. يعمل مدير العمل (يظهر الإخطار) لكن لا يمكنني الحصول على الموقع.
هل حاولت تحديد حدث دوري؟ إذا كان الأمر كذلك ، فإلى متى؟

mvanbeusekom هل يجب أن أفتح مشكلة منفصلة لدعم تحديثات الموقع عندما يكون التطبيق في المقدمة؟
في المقدمة ، أعني أن التطبيق قيد التشغيل ولكن المستخدم نقر على زر الصفحة الرئيسية ، أو تحول إلى تطبيق مختلف ، أو تم إيقاف تشغيل الشاشة. بالنسبة لنظام التشغيل Android ، نحتاج إلى إضافة خدمة مقدمة تعرض إشعارًا مستمرًا ينبه المستخدم إلى أن التطبيق يستخدم موقعه. بالنسبة لنظام iOS ، يتم عرض رمز أخضر في شريط الحالة (يُسمح بذلك بموجب إذن NSLocationWhenInUsage).
أعتقد أن دعم هذا سيكون أسهل بكثير وسيحل العديد من حالات الاستخدام التي لا تتطلب تحديثات موقع الخلفية الفعلية. (يعني الوصول إلى الموقع في الخلفية تشغيل التطبيق إذا تم إنهاؤه عند جلب تحديثات الموقع ويمكن تشغيل خدمة الخلفية بشكل مستقل عن التطبيق).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات