Table of Contents

مقدمة إلى أجهزة التنبيه القائمة على أساس الموقع في نظام iOS

(ب) أن تُحوّل التذكارات القائمة على الموقع تطبيقاً متنقلاً موحداً إلى مساعد مدرك للسياق يقدم إخطارات في الوقت المناسب عندما يدخل المستخدم أو يغادر منطقة جغرافية محددة، ومن تذكير المستخدم بأن يلتقط وصفة طبية عندما يكون مقرها صيدلية لإخطاره بأن يضع إنذاراً محلياً عند مغادرة المنزل، فإن هذه السمة تعزز الإنتاجية اليومية والمشاركة في نظام المعلومات الجغرافية، وهو مزيج من [FLT:] إطار عمل متين:

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

أما الإطاران الرئيسيان المتعلقان بالنظم الإيكولوجية فهما تحديد موقع الشركة ] و]، والإخطارات الإضافية ].

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

تحديد التصاريح

طلب الإذن بالأماكن

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

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()

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

الإذن بالتبليغ

وفي الوقت نفسه، يجب أن تطلب الإذن بعرض الإخطارات، ويتم ذلك عن طريق :

let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
 // Handle response
}

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

مراقبة الجيولوجيا والمناطق

تحديد منطقة التعميم

يتم تنفيذ نظام الجيوفنس باستخدام [(FLT:9]) وتزود مركزاً للتنسيق (الطول والطول) وجهازاً للأشعة في المترات، والمستوى الأدنى من الدعم الموثوق به هو 100 متر، على الرغم من أن اختبار الأجهزة ذات النظام العالمي لتحديد المواقع يمكن أن يولد نصف قطري أصغر.

let center = CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)
let region = CLCircularRegion(center: center, radius: 150, identifier: "OfficeRegion")
region.notifyOnEntry = true
region.notifyOnExit = true
locationManager.startMonitoring(for: region)

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

رصد المناطق المتعددة

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

// Remove regions when no longer needed
locationManager.stopMonitoring(for: region)

رصد طريقة للمندوبين للقبض على الحالات التي لا يدعم فيها رصد المنطقة (مثل الأجهزة القديمة) أو التي تقيدها الأطر النظامية.

تنظيم مناسبات إقليمية

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

func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
 guard region.identifier == "OfficeRegion" else { return }
 scheduleNotification(title: "Welcome to Office", body: "Don't forget to scan your badge.")
}

ملاحظة أن أساليب المندوبين هذه تسمى حتى إذا تم تعليق تطبيقك؛ وسيوقظ النظام تطبيقك في الخلفية بإيجاز، لديكم حوالي 30 ثانية لتنفيذ الرمز قبل أن يوقفكم النظام مرة أخرى، ويستخدمون الوقت لتحديد موعد الإخطار (أو التعامل مع المنطق الآخر) في أسرع وقت ممكن.

إعادة الدولة بعد إعادة النظر في تطبيق

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

إرسال الإخطارات المحلية

إنشاء وحدة الإخطار

Use to define the title, body, sound, and custom data:

let content = UNMutableNotificationContent()
content.title = "Reminder"
content.body = "You're near the store! Don't forget to buy groceries."
content.sound = .default
content.userInfo = ["regionID": "StoreRegion"]

ويمكن أن تشمل أيضاً ] لتمكين الإجراءات العرفية (مثل " سنوز " أو " مارك كوان " ).

المصاريف والطلب

لأننا نريد أن يطلق الإخطار فوراً بعد حدث المنطقة، نستخدم الزناد الزماني مع تأخير قصير جداً (ثانية واحدة).

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
 if let error = error {
 // Log error (e.g., notification not added)
 }
}

وباستخدام محدد هوية فريد في كل مرة يمنع الإخطارات السابقة من الإفراط في كتابة الإخطارات، وإذا أردت استبدال إخطار معلق (مثل تحديث الرسالة)، استخدم نفس المُحدِّد.

العتاد على الصوت والبادج

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

النظر في معالجة الأخطاء والبطارية

الأخطاء المشتركة

ويمكن أن يفشل الرصد الإقليمي لعدة أسباب:

  • Not supported on tool] — some older iPads or iPod touches lack a cellular/GPSرقاقة. check ].
  • خدمات الشغل معوقة ] - قد تعود زائفة.
  • Authorization denied] — is or .
  • Exceed region limit] – if you try to monitor more than 20 regions, will fail.

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

Battery Optimisation

رصد الموقع كثيف الطاقة، وقد اختار النظام بالفعل رصد المنطقة باستخدام برج الخلايا ووضع الواي فاي في مواقعها، عندما يكون ذلك ممكنا، ولكن يمكنك أن تزيد من الحد من التأثير:

  • رصد عدد المناطق فقط حسب الحاجة (تحتل أقل من 20 منطقة).
  • Use larger radii when precision is not critical (e.g., 500m vs 50m).
  • Disable region monitoring when the app enters the background for unrelated tasks (use in appropriate life cycle callbacks).
  • For non — non — criticalical reminds, consider using significantchange location service] () which provides updates only when the tool moves significantly (500m or more) and consumes less power.

أجهزة الاستطلاع

محاكاة الموقع في Xcode

ويسمح لك جهاز محاكاة السيكود بتخيط التغييرات في الموقع، واستخدام سمة " محاكاة الموقع " (Debug > Simulate Location) واختيار ملف GPX أو دفعة للطريق السريع، كما يمكنك وضع إحداثيات يدوياً عن طريق زر " Location " في حانة ديباغ، غير أن رصد منطقة المعلومات الأساسية لا يعمل في جهاز التحفيز لجميع السيناريوهات.

اختبارات وحدة الكتابة للمنطقة

(ب) عزل أساليب المندوبين والإخطار التي تحدد مواعيدها في مكونات قابلة للاختبار، ودفع و] باستخدام البروتوكولات.

protocol RegionHandler {
 func didEnterRegion(with identifier: String)
}
class MockNotificationCenter: UNUserNotificationCenter {
 var addedRequest: UNNotificationRequest?
 override func add(_ request: UNNotificationRequest, withCompletionHandler: (Error?) -> Void) {
 addedRequest = request
 }
}

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

قائمة مرجعية للاختبارات في العالم الحقيقي

  • اختبار الدخول والخروج بينما التطبيق في المعالم الخلفية، وانهاء.
  • التحقق من وجود مناطق متداخلة متعددة تبعث على إخطارات مستقلة.
  • تفقدوا مجرى مجرى العاده على مدى عدة ساعات من الرصد
  • اختبار مع خدمات الموقع معاقة، وواي فاي قبالة، و البيانات الخلوية قبالة.
  • ضمان عدم تكرار عجلات الإخطار إذا ما قام المستخدم بإعادة الاتصال في نفس المنطقة في غضون فترة قصيرة - بتنفيذ فترة " مقسمة " باستخدام مسامير مستعملي البرمجيات.

أفضل الممارسات في مجال الخصوصية وخبرة المستعملين

الشفافية والموافقة

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

السماح للمستعملين بإدارة شؤون الرعايا

(أ) عرض مذكرة تفاهم يمكن للمستعملين فيها مشاهدة جميع رسائل التذكير النشطة، ورؤية المنطقة التي يُطلَق عليها الجيوفنسد على خريطة، وحذف رسائل تذكيرية منفردة، والسماح لهم أيضاً بالتوقف مؤقتاً عن جميع رسائل التذكير (مثلاً أثناء العطلة).

الدول المتخلفة والدول المنعدمة

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

لا تزعجوا و تحذروا

وينبغي ألا تكون الإخطارات القائمة على الموقع مضرة، مع احترام أسلوب التركيز الحالي للمستعمل )لا تزعج( - يوقف النظام تلقائيا الإخطارات عندما يُمكن، ولا تطلب إذنا " إنذارا بالغ الأهمية " ما لم يكن التذكير ملحا حقا )مثل الدواء( ويوافق عليه آبل.

التحسينات المتقدمة

المقاتلات المقاتلات المجهزة بـ " إيبيكون "

وبالنسبة للدقة الداخلية، النظر في استخدام الإيبيكون (]) بدلاً من الجيوفنس، يقدم البيكون الدقة إلى عدد قليل من المترات، كما أن إنشاء منطقة مارة بواسطة UID، والقيم الرئيسية والصغيرة، ثم يرصد الدخول/الخارج، وكذلك مدى القرب، ولا يتطلب رصد البيكون دائماً إمكانية المقارنة بين الارتطام (ولكن في الاستخدام).

الجمع بين الموقع ذي الأهمية العالية

وتنشأ تحديثات مواقع التغيير الهامة عن طريق تغيير برج الخلايا على كل ٥٠٠ متر، ويمكن استخدام هذه المعلومات لتجديد قائمة الجيوفنس القريبة حتى عندما تتحرك الأداة بسرعة )مثلا في سيارة( ومع ذلك، فإن أحداث الدخول/المغادرة تُحسب بمنطقك وليس من خلال رصد المنطقة المخصصة للنظام، وهذا أمر مفيد إذا ما أردتم رصد مئات المناطق - يمكنكم الاحتفاظ بذاكرة مستعملة في المنطقة الحالية.

استخدام مهام أساسية للمرافقة

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

معالجة الإخطارات المتعددة من المنطقة نفسها

وإذا كان المستعملون يلجؤون على حدود المنطقة، فإنهم قد يتلقون أحداثا متكررة للدخول/الخارج، وينفذون جهازا زمنيا للتبريد )مثلا " لا تطلقوا إخطارا آخر لهذه المنطقة لمدة ٥ دقائق على الأقل " ( ويخزنون آخر مؤخرات بدء التشغيل في مستعملي الدفاعات في كل موقع لتحديد الهوية في المنطقة.

خاتمة

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

وللحصول على مزيد من القراءة، يرجى الرجوع إلى الوثائق الرسمية لأبل: