موبائل ڈویلپمنٹ میں کیلنڈر تک رسائی کی اجازت — یہ کیا ہے، کیسے کام کرتی ہے اور رسائی کی درخواست

مصنف: IT Sectr اشاعت: 2026-05-22 مطالعے کا وقت: 8 منٹ

کیلنڈر تک رسائی کی اجازت ایک موبائل OS میکانزم ہے جو صارف کے کیلنڈر ڈیٹا کو غیر مجاز پڑھنے اور تبدیلی سے بچاتا ہے۔ iOS پر، EventKit فریم ورک کے ذریعے EKEventStore اور EKCalendar کلاسز کے ساتھ کیلنڈر تک رسائی لاگو کی جاتی ہے، جبکہ Android پر — READ_CALENDAR اور WRITE_CALENDAR اجازتوں کے ذریعے CalendarContract API کے ساتھ۔ Apple Developer Documentation, 2025 کے مطابق، iOS 18+ پر کیلنڈر تک رسائی کے لیے سسٹم ڈائیلاگ کے ذریعے واضح درخواست ضروری ہے۔ EventKit تمام منسلک کیلنڈرز پر واقعات پڑھنے اور بنانے کے لیے یکساں انٹرفیس فراہم کرتا ہے۔

اہم نکات

  • Calendar Permission — iOS اور Android پر صارف کے کیلنڈر تک رسائی کے لیے ایک محفوظ اجازت۔
  • EventKit — EKEventStore کے ذریعے کیلنڈرز اور یاد دہانیوں کے ساتھ کام کرنے کے لیے Apple کا فریم ورک۔
  • READ_CALENDAR — صارف کے کیلنڈر کے واقعات پڑھنے کے لیے Android کی خطرناک اجازت۔
  • EKEventStore — رسائی کی درخواست کرنے اور واقعات پر کارروائیاں انجام دینے کے لیے مرکزی iOS کلاس۔
  • CalendarContract — ایک Android ContentProvider جو کیلنڈر ڈیٹا تک ساختی رسائی فراہم کرتا ہے۔

کیلنڈر تک رسائی کی اجازت کیا ہے؟

کیلنڈر تک رسائی کی اجازت ایک ذاتی ڈیٹا تحفظ میکانزم ہے جو ڈیوائس کی کیلنڈر ایپلیکیشنز میں واقعات کے پڑھنے اور لکھنے کو کنٹرول کرتا ہے۔ کیلنڈر میں حساس معلومات ہوتی ہیں: میٹنگیں، ڈیڈلائنز، یاد دہانیاں اور ذاتی منصوبے — اس لیے موبائل OS اس تک رسائی کو اہم درجہ دیتے ہیں۔

iOS پر، کیلنڈر تک رسائی EventKit فریم ورک کے ذریعے منظم کی جاتی ہے۔ ایک ایپ واقعات تک پڑھنے اور لکھنے کی رسائی کی درخواست کر سکتی ہے، اور صارف سسٹم ڈائیلاگ کے ذریعے درخواست منظور یا مسترد کر سکتا ہے۔ Android پر، تحفظ دو رن ٹائم اجازتوں پر مبنی ہے: READ_CALENDAR اور WRITE_CALENDAR۔

Pew Research Center (2024) کے ایک مطالعہ کے مطابق، تقریباً 45% موبائل ڈیوائس صارفین باقاعدگی سے کیلنڈر استعمال کرتے ہیں، اور ان میں سے 62% ان ایپس تک رسائی سے انکار کرتے ہیں جو کیلنڈر ڈیٹا کی درخواست کی وجہ نہیں بتاتیں۔

بنیادی اصول — ایک ایپ کو صرف ان خصوصیات کے لیے رسائی کی درخواست کرنی چاہیے جو براہ راست کیلنڈر سے متعلق ہوں: یاد دہانیاں بنانا، واقعات کو ہم آہنگ کرنا، نظام الاوقات درآمد کرنا۔

iOS پر کیلنڈر تک رسائی کی درخواست کیسے کام کرتی ہے

iOS پر، کیلنڈر اور یاد دہانیوں تک رسائی ایک ہی فریم ورک — EventKit کے ذریعے فراہم کی جاتی ہے۔ مرکزی EKEventStore کلاس تمام کارروائیوں کا انتظام کرتی ہے: اجازت کی درخواست، واقعات پڑھنا، کیلنڈر اندراجات بنانا اور ترمیم کرنا۔ requestAccess(to:entityType:) کی پہلی کال پر، سسٹم وضاحت کے ساتھ ایک مقامی ڈائیلاگ دکھاتا ہے۔

EventKit اور EKEventStore

EKEventStore کلاس iOS کیلنڈر ذیلی نظام کا داخلہ نقطہ ہے۔ رسائی کی درخواست کرنے کے لیے، آپ کو requestAccess(to: .event) طریقہ کار کو کال کرنا ہوگا، ہستی کی قسم (واقعہ یا یاد دہانی) پاس کرتے ہوئے۔ اجازت ملنے کے بعد، EKEventStore iCloud، Google، Exchange اور دیگر فراہم کنندگان سے منسلک تمام کیلنڈرز تک رسائی فراہم کرتا ہے۔

ایک اہم خصوصیت: EKEventStore ایک بھاری آبجیکٹ ہے — اس کی تخلیق میں وقت لگتا ہے اور وسائل استعمال ہوتے ہیں۔ اسے ایک بار شروع کرنے اور ایپلیکیشن کی زندگی کے دوران دوبارہ استعمال کرنے کی سفارش کی جاتی ہے۔ WWDC Session 10117 (2024) کے مطابق، Apple کارکردگی کی اصلاح کے لیے EventStore مثال کو کیش کرنے کی سفارش کرتا ہے۔

رسائی کی اقسام: پڑھنا اور لکھنا

iOS کیلنڈر پڑھنے اور لکھنے کی اجازتوں کو الگ نہیں کرتا — صارف یا تو مکمل رسائی دیتا ہے یا انکار کرتا ہے۔ تاہم، ایپ کوڈ کی سطح پر کارروائیوں کو کنٹرول کر سکتی ہے: EKEventStore.event کے ذریعے واقعات پڑھنا، EKEventStore.save کے ذریعے بنانا اور EKEventStore.remove کے ذریعے حذف کرنا۔ iOS 18 سے، صرف ایک مخصوص ہستی کی قسم — .event یا .reminder — تک رسائی کی درخواست کرنا ممکن ہے۔

iOS 17+ میں، Apple نے عارضی رسائی کا میکانزم متعارف کرایا: کچھ ایپس صارف کی ایک بار کی تصدیق کے بعد 24 گھنٹے کے لیے رسائی حاصل کر سکتی ہیں۔ یہ خصوصیت خاص طور پر ان ایپس کے لیے مفید ہے جنہیں ایک بار کی بنیاد پر کیلنڈر رسائی کی ضرورت ہوتی ہے — مثال کے طور پر، کانفرنس کا نظام الاوقات درآمد کرنے کے لیے۔

Android پر کیلنڈر تک رسائی کی درخواست کیسے کام کرتی ہے

Android پر، کیلنڈر تک رسائی دو علیحدہ اجازتوں سے محفوظ ہے: READ_CALENDAR اور WRITE_CALENDAR۔ دونوں خطرناک زمرے سے تعلق رکھتی ہیں اور رن ٹائم درخواست کی ضرورت ہوتی ہیں۔ پڑھنے اور لکھنے کی علیحدگی صارف کو ایپ کی رسائی کی سطح کو باریک بینی سے ایڈجسٹ کرنے کی اجازت دیتی ہے۔

READ_CALENDAR اور WRITE_CALENDAR

READ_CALENDAR اجازت ایپ کو صارف کے تمام کیلنڈرز سے ناموں، اوقات، شرکاء اور وضاحتوں سمیت واقعات پڑھنے کی اجازت دیتی ہے۔ WRITE_CALENDAR اجازت واقعات بنانے، تبدیل کرنے اور حذف کرنے کی اجازت دیتی ہے۔ دونوں مینی فیسٹ میں uses-permission ٹیگ کے ذریعے متعین کی جاتی ہیں اور ActivityResultLauncher کے ذریعے رن ٹائم پر درخواست کی جاتی ہیں۔

Android 14 (API 34) سے شروع ہو کر، سسٹم صارف کو خبردار کرتا ہے اگر کوئی ایپ ایک ساتھ دونوں اجازتوں کی درخواست کرتی ہے۔ انہیں علیحدہ علیحدہ درخواست کرنے کی سفارش کی جاتی ہے: پہلے پڑھنے کے لیے READ_CALENDAR، پھر واقعہ بنانے کی پہلی کوشش پر WRITE_CALENDAR۔ Google I/O 2024 کے مطابق، یہ طریقہ مسترد کرنے کی شرح کو 23% کم کرتا ہے۔

CalendarContract ContentProvider

CalendarContract ایک Android ContentProvider ہے جو کیلنڈر ڈیٹا کو متعلقہ جدولوں میں تشکیل دیتا ہے۔ اہم جدولوں میں شامل ہیں: Calendars (کیلنڈرز کی فہرست)، Events (واقعات)، Attendees (شرکاء)، Reminders (اطلاعات)۔ ڈیٹا تک رسائی مخصوص URI اور پروجیکشن کے ساتھ ContentResolver.query() کے ذریعے کی جاتی ہے۔

نیا واقعہ داخل کرنے کے لیے، آپ کو ContentValues استعمال کرنا ہوگا جس میں کیلنڈر، شروع اور ختم ہونے کا وقت، عنوان اور وضاحت متعین ہو۔ CalendarContract ٹائم زونز، بار بار آنے والے واقعات اور حسب ضرورت اطلاع کے وقفوں والی یاد دہانیوں کو سپورٹ کرتا ہے۔

کیلنڈر کے ساتھ کام کرنے کے لیے کوڈ کی مثالیں

کیلنڈر تک رسائی کی درخواستوں کے نفاذ کے لیے پلیٹ فارم کی مخصوص خصوصیات پر غور کرنا ضروری ہے۔ ذیل میں Swift اور Kotlin میں مثالیں دی گئی ہیں جو EventKit اور CalendarContract کے ساتھ درست کام کو ظاہر کرتی ہیں۔

Swift میں کیلنڈر تک رسائی

iOS کیلنڈر تک رسائی کی درخواست EKEventStore کلاس کے requestAccess طریقہ کار کے ذریعے کی جاتی ہے۔ نیچے دی گئی مثال اجازت ملنے کے بعد ایک واقعہ بنانا دکھاتی ہے۔

swift
import EventKit

let eventStore = EKEventStore()

eventStore.requestAccess(to: .event) { granted, error in
    guard granted else {
        print("کیلنڈر تک رسائی مسترد")
        return
    }

    let event = EKEvent(eventStore: eventStore)
    event.title = "ٹیم میٹنگ"
    event.startDate = Date()
    event.endDate = Date(timeIntervalSinceNow: 3600)
    event.calendar = eventStore.defaultCalendarForNewEvents

    do {
        try eventStore.save(event, span: .thisEvent)
        print("واقعہ تخلیق ہوا: \(event.eventIdentifier)")
    } catch {
        print("محفوظ کرنے میں خرابی: \(error.localizedDescription)")
    }
}

Kotlin میں کیلنڈر تک رسائی

Android پر، READ_CALENDAR اور WRITE_CALENDAR اجازتوں کی درخواست ActivityResultLauncher کے ذریعے کی جاتی ہے۔ مثال رسائی ملنے کے بعد صارف کے کیلنڈر سے واقعات پڑھنا دکھاتی ہے۔

kotlin
val calendarPermissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
        if (permissions[Manifest.permission.READ_CALENDAR] == true) {
            val uri = CalendarContract.Events.CONTENT_URI
            val projection = arrayOf(
                CalendarContract.Events.TITLE,
                CalendarContract.Events.DTSTART,
                CalendarContract.Events.DTEND
            )
            val cursor = contentResolver.query(uri, projection, null, null, null)
            cursor?.use {
                val titleIndex = it.getColumnIndex(CalendarContract.Events.TITLE)
                while (it.moveToNext()) {
                    Log.d("کیلنڈر", "واقعہ: ${it.getString(titleIndex)}")
                }
            }
        } else {
            // وضاحت دکھائیں اور ترتیبات پر جانے کا مشورہ دیں
            requestPermissionSettingsRedirect()
        }
    }

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    calendarPermissionLauncher.launch(
        arrayOf(Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR)
    )
}

کیلنڈر تک رسائی کی درخواست کے لیے بہترین طریقے

کیلنڈر کی اجازتوں کے ساتھ کام کرنے کے لیے ایک اچھی طرح سے سوچی گئی حکمت عملی کی ضرورت ہوتی ہے جو دونوں پلیٹ فارمز کی ضروریات اور صارف کی توقعات پر غور کرے۔ نیچے دی گئی سفارشات پر عمل کرنے سے اعتدال کو پاس کرنے اور اجازت دینے کی شرح بڑھانے میں مدد ملتی ہے۔

درخواست کو کم سے کم کرنا اور سیاق و سباق

کیلنڈر تک رسائی صرف اس وقت درخواست کریں جب صارف کوئی ایسا عمل انجام دے جس کے لیے کیلنڈر ڈیٹا کی ضرورت ہو: «کیلنڈر میں شامل کریں»، «نظام الاوقات کو ہم آہنگ کریں»، «واقعات درآمد کریں»۔ پری اجازت ڈائیلاگ (سسٹم ڈائیلاگ سے پہلے ایک حسب ضرورت ڈائیلاگ) Localytics (2024) کے مطابق رضامندی کی شرح کو 35% بڑھاتا ہے۔

iOS پر، پرائیویسی مینی فیسٹ میں مخصوص متن کے ساتھ NSCalendarsUsageDescription کلید استعمال کریں۔ «واقعات بنانے کے لیے» کے بجائے «آپ کے کیلنڈر میں ورزشیں شامل کرنے کے لیے» لکھیں۔ مخصوص الفاظ درخواست کی تبدیلی کی شرح کو 20–30% بڑھاتے ہیں۔

مستردی کو سنبھالنا اور ترتیبات پر ری ڈائریکٹ کرنا

اگر صارف درخواست مسترد کرتا ہے تو سسٹم ڈائیلاگ دوبارہ نہ دکھائیں — یہ Android پر neverAskAgain کو متحرک کرے گا یا iOS پر ڈائیلاگ کو ناقابل رسائی بنا دے گا۔ اس کے بجائے، Android پر Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) یا iOS پر UIApplication.openSettingsURLString کے ذریعے ترتیبات پر جانے کی پیشکش کریں۔

اسکرین پر دوبارہ داخل ہوتے وقت، اجازت کی حیثیت چیک کریں۔ iOS پر، EKEventStore.authorizationStatus(for: .event) کال کریں اور موجودہ حیثیت کے مطابق یوزر انٹرفیس کو اپ ڈیٹ کریں۔ Android پر، موجودہ حالت چیک کرنے اور ترتیبات ری ڈائریکٹ بٹن دکھانے کا فیصلہ کرنے کے لیے ContextCompat.checkSelfPermission() استعمال کریں۔

اکثر پوچھے گئے سوالات

ایپ کو کیلنڈر تک رسائی کی ضرورت کیوں ہے؟

ایپس واقعات بنانے، نظام الاوقات کو ہم آہنگ کرنے، ڈیڈلائن درآمد کرنے اور یاد دہانیوں کے ساتھ انضمام کے لیے کیلنڈر تک رسائی کی درخواست کرتی ہیں۔ مثالیں: فٹنس ٹریکرز ورزشیں شامل کرتے ہیں، منصوبہ ساز کام بناتے ہیں، اور سفری ایپس صارف کے کیلنڈر میں پروازیں درآمد کرتی ہیں۔

Android پر READ_CALENDAR اور WRITE_CALENDAR میں کیا فرق ہے؟

READ_CALENDAR صارف کے تمام واقعات اور کیلنڈرز کو پڑھنے کی رسائی فراہم کرتا ہے۔ WRITE_CALENDAR واقعات بنانے، تبدیل کرنے اور حذف کرنے کی اجازت دیتا ہے۔ صارف ایک اجازت دوسرے کے بغیر دے سکتا ہے، جو ایپ کی کیلنڈر ڈیٹا تک رسائی کی سطح پر لچکدار کنٹرول فراہم کرتا ہے۔

iOS پر کیلنڈر تک رسائی کیسے منسوخ کریں؟

ترتیبات — رازداری اور تحفظ — کیلنڈرز کھولیں۔ ایپ منتخب کریں اور رسائی کا سوئچ بند کریں۔ اگلی واضح درخواست اور صارف کی تصدیق تک ایپ واقعات پڑھنے اور بنانے کی صلاحیت کھو دے گی۔

کیلنڈر تک رسائی مسترد ہونے پر کیا ہوتا ہے؟

ایپ واقعات نہیں پڑھ سکے گی اور نہ ہی بنا سکے گی۔ requestAccess طریقہ iOS پر granted = false لوٹائے گا، یا checkSelfPermission Android پر PERMISSION_DENIED لوٹائے گا۔ ڈویلپرز کو خوبصورت انحطاط لاگو کرنا چاہیے — ایپ کریش یا خرابی دکھائے بغیر کیلنڈر کی خصوصیات کے بغیر کام کرتی رہتی ہے۔

کیا میں مکمل اجازت کے بغیر ایک واقعہ تک رسائی حاصل کر سکتا ہوں؟

iOS پر، یہ ممکن نہیں ہے — EventKit کو واقعات پر کسی بھی کارروائی کے لیے مکمل رسائی درکار ہے۔ Android پر، آپ سسٹم کیلنڈر ایپ کے ذریعے واقعہ بنانے کے لیے Intent.ACTION_INSERT استعمال کر سکتے ہیں، جس کے لیے رن ٹائم اجازتوں کی ضرورت نہیں ہے، لیکن موجودہ واقعات پڑھنے کی بھی اجازت نہیں دیتا۔

خلاصہ

  • Calendar Permission — موبائل پلیٹ فارمز پر کیلنڈر ڈیٹا تک رسائی کے لیے ایک محفوظ اجازت۔
  • EventKit — EKEventStore کے ذریعے کیلنڈرز اور یاد دہانیوں کے ساتھ کام کرنے کے لیے بنیادی iOS فریم ورک۔
  • READ_CALENDAR — صارف کے کیلنڈر سے واقعات پڑھنے کے لیے Android کی خطرناک اجازت۔
  • WRITE_CALENDAR — واقعات بنانے اور ترمیم کرنے کے لیے ایک علیحدہ Android اجازت۔
  • CalendarContract — ساختی جدولوں والا Android ContentProvider: Calendars, Events, Attendees, Reminders۔
  • پری اجازت ڈائیلاگ — سسٹم کی درخواست سے پہلے وضاحت کے ساتھ ایک حسب ضرورت ڈائیلاگ، تبدیلی کو 35% بڑھاتا ہے۔
  • خوبصورت انحطاط — ایپ کو کریش کے بغیر مستردی کو سنبھالتے ہوئے کیلنڈر تک رسائی کے بغیر صحیح طریقے سے کام کرنا چاہیے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں