EventKit في Swift: دليل كامل للتعامل مع التقويم والتذكيرات
EventKit هو إطار عمل قوي من Apple يوفر لمطوري Swift واجهة موحدة للتفاعل مع قواعد بيانات التقويم والتذكيرات على أجهزة iOS وiPadOS وmacOS وwatchOS. لا يسمح لك فقط بقراءة الأحداث والمهام، بل أيضاً بإنشائها وتعديلها وحذفها، بالإضافة إلى الاشتراك في الإشعارات عند حدوث تغييرات. هذه المكتبة هي الأداة الأساسية لإنشاء تطبيقات المخططين، ومتتبعي المهام، والتقاويم المؤسسية، وأي برامج أخرى تتطلب إدارة وقت المستخدم.
لماذا تحتاج EventKit؟ في عالم اليوم، إدارة الوقت مهمة بالغة الأهمية. يمنحك EventKit القدرة على دمج تطبيقك مع التقاويم والتذكيرات الأصلية في iOS/macOS، مما يريح المستخدم من التبديل بين البرامج المختلفة. يمكنك إضافة المواعيد تلقائياً من خدمتك إلى تقويم المستخدم، ومزامنة مواعيد المهام النهائية مع التذكيرات، أو تحليل فترات الانشغال. بدون EventKit، سيكون كل تطبيق "جزيرة" بيانات معزولة، ولكن معه يصبح جزءاً من النظام البيئي الموحد لـ Apple.
من المهم أن تعرف أن EventKit ليس مكتبة خارجية، بل هو إطار عمل نظامي. إنه مدمج في SDK من Apple ولا يتطلب تثبيتاً عبر مديري الحزم للاستخدام الأساسي. ومع ذلك، لتسهيل العمل وإضافة وظائف إضافية (مثل التحديثات التفاعلية)، غالباً ما يستخدم المطورون أغلفة مثل RxEventKit أو EventKitUI. في هذه المقالة، سنركز على EventKit الخالص، لأنه الأساس.
التثبيت (ربطه بالمشروع)
نظراً لأن EventKit جزء من إطار العمل النظامي لـ Apple، فإن "تثبيته" يقتصر على استيراد الوحدة في الكود الخاص بك. أوامر pip أو npm غير قابلة للتطبيق هنا. للربط، اتبع الخطوات التالية:
- الاستيراد في ملف Swift: في بداية ملفك، أضف
import EventKit. - إضافة الإطار إلى المشروع (إذا لزم الأمر): عادةً، يقوم Xcode بربط أطر العمل النظامية تلقائياً. إذا لم يحدث ذلك، انتقل إلى Target > General > Frameworks, Libraries, and Embedded Content، اضغط على "+" وأضف
EventKit.framework. - إعداد ملف Info.plist: للوصول إلى التقويم والتذكيرات، يجب إضافة نصوص الخصوصية:
NSCalendarsUsageDescription— نص يشرح لماذا يحتاج التطبيق إلى الوصول إلى التقويم (مثال: "لإضافة المواعيد").NSRemindersUsageDescription— نص للوصول إلى التذكيرات.
// لا حاجة للتثبيت، فقط قم باستيراد الإطار
import EventKit
import UIKit
class ViewController: UIViewController {
// الكود الخاص بك
}
بداية سريعة: مثال عملي بسيط
لنقم بإنشاء تطبيق بسيط يطلب الوصول إلى التقويم وينشئ حدثاً واحداً بعنوان "اجتماع اختباري" في اليوم التالي.
import EventKit
import UIKit
class QuickStartViewController: UIViewController {
let eventStore = EKEventStore()
override func viewDidLoad() {
super.viewDidLoad()
requestAccessAndCreateEvent()
}
func requestAccessAndCreateEvent() {
// 1. طلب الوصول إلى التقويم
eventStore.requestAccess(to: .event) { [weak self] (granted, error) in
guard let self = self else { return }
if granted && error == nil {
// 2. إنشاء الحدث
let event = EKEvent(eventStore: self.eventStore)
event.title = "اجتماع اختباري"
event.startDa