تطوير نظام تحديد المواقع العالمي (GPS) لـ iPhone - نصائح + حيل [مغلق]

StackOverflow https://stackoverflow.com/questions/488088

سؤال

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

ويبدو أيضًا أنه، من حيث صنع عداد خطوات معقول، يجب عليك تصفية أي قراءة بدقة أفقية أقل من 20 مترًا.هل هذا يبدو صحيحا؟

هل هناك أي نوع من القائمة المرجعية على شبكة الإنترنت لنظام تحديد المواقع العالمي (GPS) الخاص بأجهزة iPhone؟

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

لا أعرف أي قائمة محددة، ولكن إليك بعض الأشياء التي يجب أن تضعها في الاعتبار:

  • أنت لا تقوم بعمليات بحث GPS.أنت تقوم بعمليات بحث عن الموقع الأساسي.الموقع الأساسي قد يحصل أو لا يحصل على معلوماته من نظام تحديد المواقع العالمي (GPS).لا يزال الكثير من الأشخاص يستخدمون أجهزة iPhone ما قبل الجيل الثالث والتي لا تحتوي على نظام تحديد المواقع العالمي (GPS)، وحتى على هاتف الجيل الثالث قد لا يكون نظام تحديد المواقع العالمي (GPS) متاحًا في كثير من الحالات (إذا كان الشخص في الداخل، على سبيل المثال).في هذه الحالات، سيحاول الهاتف إجراء التثليث استنادًا إلى أبراج الهاتف الخلوي، وسيقوم الموقع الأساسي بإرجاع النتيجة.سيكون أقل دقة بكثير من نظام تحديد المواقع العالمي (GPS).
  • سيقوم الموقع الأساسي بتخزين البيانات مؤقتًا.من المرجح أن تكون القراءة الأولى التي تقدمها لتطبيقك قراءة قديمة، والتي قد تكون دقيقة أو لا، اعتمادًا على ما إذا كان الهاتف قد تحرك أم لا.تأكد من التحقق من الطابع الزمني لأي موقع ومعرفة ما إذا كان قبل بدء تطبيقك.
  • لا أعرف ما الذي تقصده بوضع "توفير الطاقة"، ولكن إذا كنت تفكر في وقت قفل/إيقاف الشاشة، فهذا لا يمنع تشغيل الموقع الأساسي إذا كان تطبيقك لا يزال قيد التشغيل.على العكس من ذلك، من السهل استنزاف بطارية هاتفك بسرعة أكبر بكثير مما تتوقع إذا قمت بقفل الهاتف أثناء تشغيل تطبيق يستخدم Core Location، لأن الهاتف سيستمر في تحديث التطبيق عند توفر بيانات موقع جديدة.يمكنك تجنب ذلك في تطبيقك من خلال الاستماع إلى UIApplicationWillResignActiveNotification لاكتشاف قفل الشاشة، وUIApplicationDidBecomeActiveNotification لاكتشاف إلغاء القفل.
  • سوف يستغرق الحصول على نتائج عالية الدقة وقتًا أطول، لأنه كلما طال انتظارك، كانت النتائج أفضل، إلى حد ما.إذا قررت أنك بحاجة إلى أن تكون ضمن نطاق N من الأمتار، ففكر في المدة التي قد يتعين على المستخدم الوقوف فيها في انتظار وصول الهاتف إلى موقعه.

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

نصائح أخرى

كان لدى توم إجابة رائعة (أردت أن أشير بشكل خاص إلى أن الإرجاع المعتاد للقيمة الأولى قد يكون موقعًا قديمًا مخبأً) ولكن كان لدي بعض الأشياء الإضافية التي يجب إضافتها:

  • يمكنك أن تطلب من مدير الموقع التوقف والبدء مرة أخرى إذا كنت تريد إجباره على إصدار تحديث آخر لموقعك على الأقل.
  • إذا لم تكن على علم، فهناك طرق ملائمة في CLLocation لتمنحك المسافة بين موقعين.
  • كما لاحظت المستندات، يجب عليك تنفيذ locationManager:didFailWithError:على الرغم من أنك لست مضطرًا إلى ذلك (فقط لإيقاف تحديثات مدير الموقع لبعض الوقت).
  • اختبر السيناريوهات بدقة حيث لا يسمح المستخدم بتحديثات الموقع لتطبيقك!
  • في حالات نادرة جدًا، قد تحصل على تحديثات معطلة (على سبيل المثال.تحصل على موقع أكثر دقة متبوعًا بموقع أقل دقة بتاريخ سابق)
  • سيعطيك جهاز المحاكاة تحديثًا للموقع، ولكنه سيبلغك دائمًا باسم Apple HQ.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top