Flutter-geolocator: لا يطلب iOS أذونات الموقع

تم إنشاؤها على ٢٥ يناير ٢٠١٩  ·  15تعليقات  ·  مصدر: Baseflow/flutter-geolocator

🐛 تقرير الشوائب


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

سلوك متوقع

يجب أن يطلب محاكي iOS أذونات المستخدم لخدمة الموقع.

خطوات الاستنساخ

إعدادات

الإصدار: 2.1.1.1

برنامج:

  • [12.1]: iphone: iOS

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

dstuffkikaJStuveStephanCassel،
أصلحتها! كنت أستخدم في Info.plist هذا الإذن NSLocationAlwaysUsageDescription مع NSLocationWhenInUseUsageDescription. ولكن تم تعيين التطبيق لاستهداف iOS 8 ، Flutter افتراضيًا. لكن يجب استخدام NSLocationAlwaysUsageDescription فقط مع نظام iOS 10+. كان هذا يعبث بمطالبة الإذن على تطبيق iOS. أزلت ونجحت ، وطلبت الإذن ويمكنني الحصول على الموقع. آمل أن يساعدك هذا يا رفاق أيضًا.

ال 15 كومينتر

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

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

نفس المشكلة لساعات. يعمل Android بشكل جيد. أعطى iOS قيمة فارغة.
أزلت تطبيق iOS من جهاز المحاكاة وأعدت تشغيله. بعد ذلك يعمل بشكل مثالي. بوه.
واجهت بعض المشاكل في البداية بسبب فقدان المعلومات في ملف podfile. قد يكون سبب المشكلة.

نفس الشيء هنا. تمت إزالة التطبيق من الجهاز والمحاكي ، وإعادة تثبيته ، ونفس الشيء.
عند محاولة الحصول على الموقع ، ظهر الاستثناء التالي: ERROR_ALREADY_REQUESTING_PERMISSIONS

dstuffkikaJStuveStephanCassel،
أصلحتها! كنت أستخدم في Info.plist هذا الإذن NSLocationAlwaysUsageDescription مع NSLocationWhenInUseUsageDescription. ولكن تم تعيين التطبيق لاستهداف iOS 8 ، Flutter افتراضيًا. لكن يجب استخدام NSLocationAlwaysUsageDescription فقط مع نظام iOS 10+. كان هذا يعبث بمطالبة الإذن على تطبيق iOS. أزلت ونجحت ، وطلبت الإذن ويمكنني الحصول على الموقع. آمل أن يساعدك هذا يا رفاق أيضًا.

cetorres أخيرا حصلت عليه! لقد أجريت التغيير الموصى به ، علاوة على أنني كنت أتصل أيضًا بـ checkGeolocationPermissionStatus قبل getCurrentPosition لذلك لم يتم تشغيل مطالبة الأذونات الخاصة بي!

شكرا! :بيرة:

الإصدار: 3.0.0 ios أيضًا لا يطالب بالوصول إلى الأذونات.

من تصحيح الأخطاء في Xcode ، يبدو أنه مطلوب أيضًا NSLocationAlwaysAndWhenInUseUsageDescription . (وجود NSLocationAlwaysUsageDescription و NSLocationWhenInUseUsageDescription يفشل بصمت في Flutter)

نفس المشكلة ، كل شيء قال أنه أثبت ، ولا شيء يعمل. لست متأكدًا حقًا من كيفية حلها.

شكرا جزيلا cetorres! أستهدف نظام التشغيل iOS 10+ ولكن لا يزال يتعين علي إزالة NSLocationAlwaysUsageDescription لتشغيله. لا يحتاج تطبيقي إلى معلومات الموقع عندما لا يكون قيد الاستخدام ، لذلك هذا جيد بما فيه الكفاية.

مجنون! وافقت Apple على تطبيقي لـ TestFlight مع المعتاد ...

يمكنك الآن استخدام هذا الإصدار لاختبار TestFlight أو إرساله إلى متجر التطبيقات.

ولكن أرسل لي هذا أيضًا:

حددنا مشكلة واحدة أو أكثر في عملية تسليم حديثة لتطبيقك ، [منقح] 1.0.0 (12). تم التسليم بنجاح ، ولكن قد ترغب في تصحيح المشكلات التالية في التسليم التالي:

ITMS-90683: سلسلة الغرض مفقودة في Info.plist - يشير رمز التطبيق الخاص بك إلى واحد أو أكثر من واجهات برمجة التطبيقات التي تصل إلى بيانات المستخدم الحساسة. يجب أن يحتوي ملف Info.plist الخاص بالتطبيق على مفتاح NSLocationAlwaysUsageDescription مع سلسلة غرض موجهة للمستخدم تشرح بوضوح وبشكل كامل سبب احتياج تطبيقك للبيانات. اعتبارًا من ربيع 2019 ، يُطلب من جميع التطبيقات المقدمة إلى App Store والتي تصل إلى بيانات المستخدم تضمين سلسلة الغرض. إذا كنت تستخدم مكتبات خارجية أو SDK ، فقد تشير إلى واجهات برمجة التطبيقات التي تتطلب سلسلة الغرض. على الرغم من أن تطبيقك قد لا يستخدم واجهات برمجة التطبيقات هذه ، إلا أن سلسلة الغرض لا تزال مطلوبة. يمكنك الاتصال بمطور المكتبة أو SDK واطلب منهم إصدار نسخة من التعليمات البرمجية الخاصة بهم لا تحتوي على واجهات برمجة التطبيقات. تعرف على المزيد (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

لذا يبدو أنني ما زلت أسير على حبل مشدود هنا. لا يمكنني ترقية البرنامج المساعد لأنني لا أريد تجاوز عقبة AndroidX الآن ...

ماذا تقترح يا رفاق؟ ما عليك سوى تجاهل رسالة "حددنا المشكلات"؟

تحديث: إضافة كل الثلاثة أدناه في info.plist عملت بالنسبة لي. أبل سعيدة أيضا.

NSLocationWhenInUseUsageDescription

NSLocationAlwaysAndWhenInUseUsageDescription

شكرا على النصيحة ، vejmartin

kbrmimbyl أنت

ممتع لأي شخص قام بتعديل info.plist في AndroidStudio وليس في XCode: بالنسبة لي ، لقد نجح ذلك عندما أزلت "NSLocationAlwaysAndWhenInUseUsageDescription" وبدلاً من ذلك حددت "الخصوصية - الموقع دائمًا وعندما تكون قيد الاستخدام" في Xcode. لسبب ما ، تم تنسيق الآخرين بالفعل بهذا الشكل ، لكن هذا لم يكن كذلك. كنت أواجه نفس المشاكل المذكورة أعلاه ، ولكن على خطأ لم يعطني شيئًا. كان عدم التزامن ينتظر فقط ولم يستمر أبدًا. وبعد ذلك ، إذا قمت بإعادة التحميل السريع ، فستحصل على ERROR_ALREADY_REQUESTING_PERMISSIONS ، لأنه لا يزال في انتظار الإدخال في طلب الإذن هذا.
استهداف IOS11 ، على Android يعمل بشكل جيد. الآن يعمل على IOS أيضًا.

أواجه نفس المشكلة مع flutter web على جهاز IOS.
لا يطالب التطبيق بأي مربع حوار إذن على IOS ، ولكنه يعمل على أجهزة windows و android

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

القضايا ذات الصلة

Sammius picture Sammius  ·  4تعليقات

estevez-dev picture estevez-dev  ·  6تعليقات

lqmminh picture lqmminh  ·  6تعليقات

prasant10050 picture prasant10050  ·  6تعليقات

shrishti08 picture shrishti08  ·  3تعليقات