Mobil ishlanmada kalendarga kirish ruxsati — bu nima, qanday ishlaydi va kirish so'rovi

Muallif: IT Sectr Nashr etilgan: 2026-05-22 O'qish vaqti: 8 daq

Kalendarga kirish ruxsati mobil OT mexanizmi bo'lib, foydalanuvchining kalendar ma'lumotlarini ruxsatsiz o'qish va o'zgartirishdan himoya qiladi. iOS-da kalendarga kirish EventKit freymvorki orqali EKEventStore va EKCalendar sinflari bilan, Android-da esa READ_CALENDAR va WRITE_CALENDAR ruxsatlari CalendarContract API bilan birgalikda amalga oshiriladi. Apple Developer Documentation, 2025 ga ko'ra, iOS 18+ da kalendarga kirish uchun tizim dialogi orqali aniq so'rov talab qilinadi. EventKit barcha ulangan kalendarlarda hodisalarni o'qish va yaratish uchun yagona interfeysni ta'minlaydi.

Asosiy fikrlar

  • Calendar Permission — iOS va Android-da foydalanuvchi kalendariga kirish uchun himoyalangan ruxsat.
  • EventKit — EKEventStore orqali kalendarlar va eslatmalar bilan ishlash uchun Apple freymvorki.
  • READ_CALENDAR — foydalanuvchi kalendaridagi hodisalarni o'qish uchun Android ning xavfli ruxsati.
  • EKEventStore — kirish so'rovi va hodisalar bilan operatsiyalarni bajarish uchun iOS ning markaziy sinfi.
  • CalendarContract — kalendar ma'lumotlariga tuzilgan kirishni ta'minlaydigan Android ContentProvider.

Kalendarga kirish ruxsati nima?

Kalendarga kirish ruxsati — qurilmadagi kalendar ilovalarida hodisalarni o'qish va yozishni boshqaradigan shaxsiy ma'lumotlarni himoya qilish mexanizmi. Kalendar maxfiy ma'lumotlarni o'z ichiga oladi: uchrashuvlar, muddatlar, eslatmalar va foydalanuvchining shaxsiy rejalari, shuning uchun mobil OTlar unga kirishni muhim deb tasniflaydi.

iOS da kalendarga kirish EventKit freymvorki bilan tartibga solinadi. Ilova hodisalarni o'qish va yozish uchun kirish so'rashi mumkin, foydalanuvchi esa tizim dialogi orqali so'rovni qabul qilishi yoki rad etishi mumkin. Android da himoya ikkita ruxsatga asoslanadi: READ_CALENDAR va WRITE_CALENDAR.

Pew Research Center (2024) tadqiqotiga ko'ra, mobil qurilma foydalanuvchilarining taxminan 45% muntazam ravishda kalendardan foydalanadi va ularning 62% kalendar ma'lumotlari so'rovining sababini tushuntirmaydigan ilovalarga kirishni rad etadi.

Asosiy tamoyil — ilova faqat to'g'ridan-to'g'ri kalendar bilan bog'liq funksiyalar uchun kirish so'rashi kerak: eslatmalar yaratish, hodisalarni sinxronlashtirish, jadvalni import qilish.

iOS-da kalendarga kirish so'rovi qanday ishlaydi

iOS-da kalendar va eslatmalarga kirish yagona EventKit freymvorki bilan ta'minlanadi. Markaziy sinf EKEventStore barcha operatsiyalarni boshqaradi: ruxsat so'rovi, hodisalarni o'qish, kalendar yozuvlarini yaratish va tahrirlash. requestAccess(to:entityType:) birinchi chaqirilganda tizim tushuntirish bilan mahalliy dialogni ko'rsatadi.

EventKit va EKEventStore

EKEventStore sinfi iOS kalendar quyi tizimiga kirish nuqtasidir. Kirish so'rash uchun requestAccess(to: .event) metodini mavjudlik turini (hodisa yoki eslatma) uzatib chaqirish kerak. Ruxsat olingandan so'ng, EKEventStore iCloud, Google, Exchange va boshqa provayderlar hisoblariga ulangan barcha kalendarlarga kirishni ta'minlaydi.

Muhim xususiyat: EKEventStore og'ir obyektdir, uni yaratish vaqt oladi va resurslarni sarflaydi. Uni bir marta yaratib, ilovaning hayot aylanishi davomida qayta ishlatish tavsiya etiladi. WWDC Session 10117 (2024) ga ko'ra, Apple ishlashni optimallashtirish uchun EventStore nusxasini keshlashni tavsiya qiladi.

Kirish turlari: o'qish va yozish

iOS kalendarni o'qish va yozish uchun ruxsatlarni ajratmaydi — foydalanuvchi yoki to'liq kirish beradi yoki rad etadi. Biroq, ilova operatsiyalarni kod darajasida boshqarishi mumkin: hodisalarni EKEventStore.event bilan o'qish, EKEventStore.save bilan yaratish va EKEventStore.remove bilan o'chirish. iOS 18 dan boshlab faqat ma'lum bir mavjudlik turiga — .event yoki .reminder — kirish so'rash imkoniyati paydo bo'ldi.

iOS 17+ da Apple vaqtinchalik kirish mexanizmini taqdim etdi: ba'zi ilovalar foydalanuvchining bir martalik tasdig'idan so'ng 24 soat davomida kirish olishi mumkin. Bu funksiya, ayniqsa, kalendarga bir martalik ehtiyoji bo'lgan ilovalar uchun foydalidir — masalan, konferensiya jadvalini import qilish uchun.

Android-da kalendarga kirish so'rovi qanday ishlaydi

Android-da kalendarga kirish ikki alohida ruxsat bilan himoyalangan: READ_CALENDAR va WRITE_CALENDAR. Ikkalasi ham xavfli toifaga kiradi va ish vaqtida so'rovni talab qiladi. O'qish va yozishga bo'linish foydalanuvchiga ilovaning kirish darajasini nozik sozlash imkonini beradi.

READ_CALENDAR va WRITE_CALENDAR

READ_CALENDAR ruxsati ilovaga foydalanuvchining barcha kalendarlaridan nomlar, vaqt, ishtirokchilar va tavsifni o'z ichiga olgan holda hodisalarni o'qish imkonini beradi. WRITE_CALENDAR ruxsati hodisalarni yaratish, o'zgartirish va o'chirish imkonini beradi. Ikkalasi manifestda uses-permission tegi orqali ko'rsatiladi va ActivityResultLauncher orqali ish vaqtida so'raladi.

Android 14 (API 34) dan boshlab, agar ilova ikkala ruxsatni bir vaqtda so'rasa, tizim foydalanuvchini ogohlantiradi. Ularni alohida so'rash tavsiya etiladi: avval o'qish uchun READ_CALENDAR, keyin hodisa yaratishga birinchi urinishda WRITE_CALENDAR. Google I/O 2024 ga ko'ra, bu yondashuv rad etish foizini 23% ga kamaytiradi.

CalendarContract ContentProvider

CalendarContract — kalendar ma'lumotlarini relyatsion jadvallarga strukturalashtiradigan Android ContentProvider. Asosiy jadvallar: Calendars (kalendarlar ro'yxati), Events (hodisalar), Attendees (ishtirokchilar), Reminders (eslatmalar). Ma'lumotlarga kirish URI va proyeksiyani ko'rsatgan holda ContentResolver.query() orqali amalga oshiriladi.

Yangi hodisa kiritish uchun kalendar, boshlanish va tugash vaqti, sarlavha va tavsifni ko'rsatgan holda ContentValues dan foydalanish kerak. CalendarContract vaqt mintaqalarini, takrorlanuvchi hodisalarni va sozlanishi mumkin bo'lgan ogohlantirish oralig'i bilan eslatmalarni qo'llab-quvvatlaydi.

Kalendar bilan ishlash uchun kod namunalari

Kalendarga kirish so'rovini amalga oshirish platforma xususiyatlarini hisobga olishni talab qiladi. Quyida EventKit va CalendarContract bilan to'g'ri ishlashni ko'rsatadigan Swift va Kotlin namunalari keltirilgan.

Swift da kalendarga kirish

iOS kalendarga kirish so'rovi EKEventStore sinfining requestAccess metodi orqali amalga oshiriladi. Quyidagi misol ruxsat olingandan so'ng hodisa yaratishni ko'rsatadi.

swift
import EventKit

let eventStore = EKEventStore()

eventStore.requestAccess(to: .event) { granted, error in
    guard granted else {
        print("Kalendarga kirish rad etildi")
        return
    }

    let event = EKEvent(eventStore: eventStore)
    event.title = "Jamoa uchrashuvi"
    event.startDate = Date()
    event.endDate = Date(timeIntervalSinceNow: 3600)
    event.calendar = eventStore.defaultCalendarForNewEvents

    do {
        try eventStore.save(event, span: .thisEvent)
        print("Hodisa yaratildi: \(event.eventIdentifier)")
    } catch {
        print("Saqlash xatosi: \(error.localizedDescription)")
    }
}

Kotlin da kalendarga kirish

Android-da READ_CALENDAR va WRITE_CALENDAR ruxsatlarini so'rash ActivityResultLauncher orqali amalga oshiriladi. Misol kirish olingandan so'ng foydalanuvchi kalendaridan hodisalarni o'qishni ko'rsatadi.

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("Calendar", "Hodisa: ${it.getString(titleIndex)}")
                }
            }
        } else {
            // Tushuntirishni ko'rsat va sozlamalarga o'tishni taklif qil
            requestPermissionSettingsRedirect()
        }
    }

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

Kalendar so'rovining eng yaxshi amaliyotlari

Kalendar ruxsatlari bilan ishlash ikkala platformaning talablari va foydalanuvchilarning kutishlarini hisobga oladigan o'ylangan strategiyani talab qiladi. Quyidagi tavsiyalarga amal qilish moderatsiyadan o'tishga va kirish foizini oshirishga yordam beradi.

So'rovni minimallashtirish va kontekst

Kalendarga kirishni faqat foydalanuvchi kalendar ma'lumotlarini talab qiladigan harakatni bajarayotganda so'rang: „Kalendarga qo'shish”, „Jadvalni sinxronlashtirish”, „Hodisalarni import qilish”. Ruxsatdan oldingi dialog (tizim dialogidan oldin o'z dialogingiz) bilan oldindan tushuntirish, Localytics (2024) ma'lumotlariga ko'ra, rozilik foizini 35% ga oshiradi.

iOS da privacy manifestda NSCalendarsUsageDescription kalitini aniq matn bilan ishlating. „Hodisalar yaratish uchun” o'rniga „Mashg'ulotlaringizni kalendaringizga qo'shish uchun” deb yozing. Aniq ifoda so'rov konversiyasini 20–30% ga oshiradi.

Rad etishni boshqarish va sozlamalarga yo'naltirish

Agar foydalanuvchi so'rovni rad etgan bo'lsa, tizim dialogini qayta ko'rsatmang — bu Android-da neverAskAgain ishga tushishiga yoki iOS-da dialog mavjud bo'lmasligiga olib keladi. Buning o'rniga Android-da Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) yoki iOS-da UIApplication.openSettingsURLString orqali sozlamalarga o'tishni taklif qiling.

Ekranqa qayta kirganda ruxsat holatini tekshiring. iOS da EKEventStore.authorizationStatus(for: .event) ni chaqiring va UI ni joriy holatga mos ravishda yangilang. Android da joriy holatni tekshirish va sozlamalarga o'tish tugmasini ko'rsatish to'g'risida qaror qabul qilish uchun ContextCompat.checkSelfPermission() dan foydalaning.

Tez-tez beriladigan savollar

Nima uchun ilovaga kalendarga kirish kerak?

Ilovalar hodisalar yaratish, jadvalni sinxronlashtirish, muddatlarni import qilish va eslatmalar bilan integratsiya qilish uchun kalendarga kirishni so'raydi. Misollar: fitness trekerlari mashg'ulotlarni qo'shadi, rejalashtiruvchilar vazifalarni yaratadi, sayohat ilovalari esa foydalanuvchi kalendariga parvozlarni import qiladi.

Android da READ_CALENDAR va WRITE_CALENDAR o'rtasidagi farq nima?

READ_CALENDAR foydalanuvchining barcha hodisalari va kalendarlarini o'qish imkonini beradi. WRITE_CALENDAR hodisalarni yaratish, o'zgartirish va o'chirish imkonini beradi. Foydalanuvchi bir ruxsatni boshqarisiz berishi mumkin, bu esa ilovaning kalendar ma'lumotlariga kirish darajasi ustidan moslashuvchan nazoratni ta'minlaydi.

iOS da kalendarga kirishni qanday bekor qilish mumkin?

Sozlamalar — Maxfiylik va xavfsizlik — Kalendarlar bo'limini oching. Ilovani tanlang va kirish kalitini o'chiring. Ilova keyingi aniq so'rov va foydalanuvchi tasdig'igacha hodisalarni o'qish va yaratish qobiliyatini yo'qotadi.

Kalendarga kirish rad etilsa nima bo'ladi?

Ilova hodisalarni o'qiy olmaydi yoki yarata olmaydi. requestAccess metodi iOS da granted = false qaytaradi yoki checkSelfPermission Android da PERMISSION_DENIED qaytaradi. Dasturchi graceful degradation — ilovaning kalendar funksiyalarisiz ishlashda davom etishi, qulamasligi va xatolarni ko'rsatmasligini ta'minlashi kerak.

To'liq ruxsatsiz bitta hodisaga kirish mumkinmi?

iOS da bunday imkoniyat yo'q — EventKit hodisalar bilan har qanday operatsiyalar uchun to'liq kirishni talab qiladi. Android da tizim kalendar ilovasi orqali hodisa yaratish uchun Intent.ACTION_INSERT dan foydalanishingiz mumkin, bu ish vaqti ruxsatlarini talab qilmaydi, lekin mavjud hodisalarni o'qish imkonini ham bermaydi.

Xulosa

  • Calendar Permission — mobil platformalarda kalendar ma'lumotlariga kirish uchun himoyalangan ruxsat.
  • EventKit — EKEventStore orqali kalendarlar va eslatmalar bilan ishlash uchun asosiy iOS freymvorki.
  • READ_CALENDAR — foydalanuvchi kalendaridan hodisalarni o'qish uchun Android ning xavfli ruxsati.
  • WRITE_CALENDAR — hodisalarni yaratish va tahrirlash uchun alohida Android ruxsati.
  • CalendarContract — tuzilgan jadvallar bilan Android ContentProvider: Calendars, Events, Attendees, Reminders.
  • Ruxsatdan oldingi dialog — tizim so'rovidan oldin tushuntirish bilan o'z dialogi, konversiyani 35% ga oshiradi.
  • Graceful degradation — ilova kalendarga kirishsiz to'g'ri ishlashi, rad etishni qulamasdan boshqarishi kerak.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing