Mobil inkişafda təqvimə giriş icazəsi — bu nədir, necə işləyir və giriş sorğusu

Müəllif: IT Sectr Dərc olunub: 2026-05-22 Oxuma vaxtı: 8 dəq

Təqvimə giriş icazəsi mobil ƏS-lərin istifadəçinin təqvim məlumatlarını icazəsiz oxunma və dəyişdirilmədən qoruyan mexanizmidir. iOS-da təqvimə giriş EventKit çərçivəsi vasitəsilə EKEventStore və EKCalendar sinifləri ilə, Android-də isə READ_CALENDAR və WRITE_CALENDAR icazələri CalendarContract API ilə birlikdə həyata keçirilir. Apple Developer Documentation, 2025-yə görə, iOS 18+ təqvimə giriş üçün sistem dialoqu vasitəsilə açıq sorğu tələb edir. EventKit bütün qoşulmuş təqvimlərdə hadisələri oxumaq və yaratmaq üçün vahid interfeys təmin edir.

Əsas məqamlar

  • Calendar Permission — iOS və Android-də istifadəçinin təqviminə giriş üçün qorunan icazə.
  • EventKit — EKEventStore vasitəsilə təqvimlər və xatırlatmalarla iş üçün Apple çərçivəsi.
  • READ_CALENDAR — istifadəçinin təqvim hadisələrini oxumaq üçün Android-in təhlükəli icazəsi.
  • EKEventStore — giriş sorğusu və hadisələrlə əməliyyatlar üçün iOS-un mərkəzi sinfi.
  • CalendarContract — təqvim məlumatlarına strukturlu giriş təmin edən Android ContentProvider.

Təqvimə giriş icazəsi nədir?

Təqvimə giriş icazəsi — cihazın təqvim tətbiqlərində hadisələrin oxunmasını və yazılmasını idarə edən şəxsi məlumatların qorunması mexanizmidir. Təqvim məxfi məlumatları ehtiva edir: görüşlər, son tarixlər, xatırlatmalar və istifadəçinin şəxsi planları, buna görə mobil ƏS-lər ona girişi kritik olaraq təsnif edir.

iOS-da təqvimə giriş EventKit çərçivəsi ilə tənzimlənir. Tətbiq hadisələri oxumaq və yazmaq üçün giriş istəyə bilər, istifadəçi isə sistem dialoqu vasitəsilə sorğunu qəbul edə və ya rədd edə bilər. Android-də qoruma iki icazəyə əsaslanır: READ_CALENDAR və WRITE_CALENDAR.

Pew Research Center (2024) tədqiqatına görə, mobil cihaz istifadəçilərinin təxminən 45%-i mütəmadi olaraq təqvimdən istifadə edir və onların 62%-i təqvim məlumatlarının sorğunun səbəbini izah etməyən tətbiqlərə girişi rədd edir.

Əsas prinsip — tətbiq yalnız birbaşa təqvimlə əlaqəli funksiyalar üçün giriş istəməlidir: xatırlatmaların yaradılması, hadisələrin sinxronlaşdırılması, cədvəlin idxalı.

iOS-da təqvimə giriş sorğusu necə işləyir

iOS-da təqvimə və xatırlatmalara giriş vahid EventKit çərçivəsi ilə təmin edilir. Mərkəzi sinif EKEventStore bütün əməliyyatları idarə edir: icazə sorğusu, hadisələrin oxunması, təqvim qeydlərinin yaradılması və redaktəsi. requestAccess(to:entityType:) ilk çağırıldıqda sistem izahatla birlikdə yerli dialoqu göstərir.

EventKit və EKEventStore

EKEventStore sinfi iOS təqvim alt sisteminə giriş nöqtəsidir. Giriş istəmək üçün requestAccess(to: .event) metodunu varlıq növünü (hadisə və ya xatırlatma) ötürək çağırmaq lazımdır. İcazə alındıqdan sonra EKEventStore iCloud, Google, Exchange və digər provayderlərin hesablarına qoşulmuş bütün təqvimlərə giriş təmin edir.

Əhəmiyyətli xüsusiyyət: EKEventStore ağır obyektdir, onun yaradılması vaxt aparır və resurslar sərf edir. Bir dəfə yaradılması və tətbiqin həyat dövrü ərzində təkrar istifadə edilməsi tövsiyə olunur. WWDC Session 10117 (2024)-yə görə, Apple performansı optimallaşdırmaq üçün EventStore nüsxəsinin keşlənməsini tövsiyə edir.

Giriş növləri: oxuma və yazma

iOS təqvimin oxunması və yazılması üçün icazələri ayırmır — istifadəçi ya tam giriş verir, ya da rədd edir. Bununla belə, tətbiq əməliyyatları kod səviyyəsində idarə edə bilər: hadisələri EKEventStore.event ilə oxumaq, EKEventStore.save ilə yaratmaq və EKEventStore.remove ilə silmək. iOS 18-dən etibarən yalnız müəyyən varlıq növünə — .event və ya .reminder — giriş istəmək imkanı yaranmışdır.

iOS 17+ Apple müvəqqəti giriş mexanizmini təqdim etdi: bəzi tətbiqlər istifadəçinin bir dəfəlik təsdiqindən sonra 24 saat müddətinə giriş əldə edə bilər. Bu funksiya xüsusilə təqvimə bir dəfəlik ehtiyacı olan tətbiqlər üçün faydalıdır — məsələn, konfrans cədvəlini idxal etmək üçün.

Android-də təqvimə giriş sorğusu necə işləyir

Android-də təqvimə giriş iki ayrı icazə ilə qorunur: READ_CALENDARWRITE_CALENDAR. Hər ikisi təhlükəli kateqoriyaya aiddir və icra zamanı sorğu tələb edir. Oxuma və yazmaya bölünmə istifadəçiyə tətbiqin giriş səviyyəsini incə tənzimləməyə imkan verir.

READ_CALENDAR və WRITE_CALENDAR

READ_CALENDAR icazəsi tətbiqə istifadəçinin bütün təqvimlərindən adlar, vaxt, iştirakçılar və təsvir daxil olmaqla hadisələri oxumaq imkanı verir. WRITE_CALENDAR icazəsi hadisələri yaratmağa, dəyişdirməyə və silməyə imkan verir. Hər ikisi manifestdə uses-permission etiketi ilə göstərilir və ActivityResultLauncher vasitəsilə icra zamanı sorğulur.

Android 14-dən (API 34) başlayaraq, sistem tətbiq hər iki icazəni eyni anda sorğduqda istifadəçini xəbərdar edir. Onları ayrılıqda sorğmaq tövsiyə olunur: əvvəlcə oxuma üçün READ_CALENDAR, sonra hadisə yaratmağa ilk cəhddə WRITE_CALENDAR. Google I/O 2024-yə görə, bu yanaşma imtina faizini 23% azaldır.

CalendarContract ContentProvider

CalendarContract — təqvim məlumatlarını relasiya cədvəllərinə strukturlaşdıran Android ContentProvider-dır. Əsas cədvəllər: Calendars (təqvimlər siyahısı), Events (hadisələr), Attendees (iştirakçılar), Reminders (xatırlatmalar). Məlumatlara giriş URI və proyeksiya ilə ContentResolver.query() vasitəsilə həyata keçirilir.

Yeni hadisə daxil etmək üçün təqvim, başlanğıc və bitiş vaxtı, başlıq və təsvir göstərilməklə ContentValues istifadə edilməlidir. CalendarContract saat qurşaqlarını, təkrarlanan hadisələri və konfiqurasiya edilə bilən xəbərdarlıq intervalı ilə xatırlatmaları dəstəkləyir.

Təqvimlə iş üçün kod nümunələri

Təqvimə giriş sorğusunun tətbiqi platforma xüsusiyyətlərinin nəzərə alınmasını tələb edir. Aşağıda EventKit və CalendarContract ilə düzgün işi nümayiş etdirən SwiftKotlin nümunələri verilmişdir.

Swift-də təqvimə giriş

iOS təqvimə giriş sorğusu EKEventStore sinfinin requestAccess metodu vasitəsilə həyata keçirilir. Aşağıdakı nümunə icazə alındıqdan sonra hadisə yaratmağı göstərir.

swift
import EventKit

let eventStore = EKEventStore()

eventStore.requestAccess(to: .event) { granted, error in
    guard granted else {
        print("Təqvimə giriş rədd edildi")
        return
    }

    let event = EKEvent(eventStore: eventStore)
    event.title = "Komanda görüşü"
    event.startDate = Date()
    event.endDate = Date(timeIntervalSinceNow: 3600)
    event.calendar = eventStore.defaultCalendarForNewEvents

    do {
        try eventStore.save(event, span: .thisEvent)
        print("Hadisə yaradıldı: \(event.eventIdentifier)")
    } catch {
        print("Yaddaş xətası: \(error.localizedDescription)")
    }
}

Kotlin-də təqvimə giriş

Android-də READ_CALENDAR və WRITE_CALENDAR icazələrinin sorğusu ActivityResultLauncher vasitəsilə həyata keçirilir. Nümunə giriş əldə edildikdən sonra istifadəçinin təqvimindən hadisələrin oxunmasını göstərir.

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", "Hadisə: ${it.getString(titleIndex)}")
                }
            }
        } else {
            // İzahı göstər və tənzimləmələrə keçməyi təklif et
            requestPermissionSettingsRedirect()
        }
    }

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

Təqvim sorğusunun ən yaxşı təcrübələri

Təqvim icazələri ilə iş hər iki platformanın tələblərini və istifadəçilərin gözləntilərini nəzərə alan düşünülmüş strategiya tələb edir. Aşağıdakı tövsiyələrə əməl etmək moderasiyadan keçməyə və giriş faizini artırmağa kömək edir.

Sorğun minimallaşdırılması və konteksti

Təqvimə girişi yalnız istifadəçi təqvim məlumatları tələb edən hərəkət etdikdə sorışın: “Təqvimə əlavə et”, “Cədvəli sinxronlaşdır”, “Hadisələri idxal et”. İcazə öncəsi dialoq (sistem dialoqundan əvvəl öz dialoqu) ilə əvvəlcədən izah etmə, Localytics (2024) məlumatlarına görə, razılıq faizini 35% artırır.

iOS-da privacy manifest-də NSCalendarsUsageDescription açarını konkret mətnlə istifadə edin. “Hadisələr yaratmaq üçün” əvəzinə “Təlimlərinizi təqviminizə əlavə etmək üçün” yazın. Konkret ifadə sorğunun konversiyasını 20–30% artırır.

İmtinanın idarə edilməsi və tənzimləmələrə yönləndirmə

İstifadəçi sorğunu rədd edɐrsə, sistem dialoqunu təkrar göstərməyin — bu Android-də neverAskAgain işə düşməsinə və ya iOS-da dialoqun əlçatan olmamasına səbəb olar. Bunun əvəzinə Android-də Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) və ya iOS-da UIApplication.openSettingsURLString vasitəsilə tənzimləmələrə keçməyi təklif edin.

Ekrana təkrar daxil olarkən icazə statusunu yoxlayın. iOS-da EKEventStore.authorizationStatus(for: .event) çağırın və UI-ni cari statusa uyğun yeniləyin. Android-də cari vəziyyəti yoxlamaq və tənzimləmələrə keçid düməsini göstərmək qərarı vermək üçün ContextCompat.checkSelfPermission() istifadə edin.

Tez-tez verilən suallar

Tətbiqin təqvimə girişə nə üçün ehtiyacı var?

Tətbiqlər hadisələr yaratmaq, cədvəli sinxronlaşdırmaq, son tarixləri idxal etmək və xatırlatmalarla inteqrasiya etmək üçün təqvimə giriş istəyir. Nümunələr: fitnes trekerləri məşqlər əlavə edir, planlayıcılar tapşırıqlar yaradır, səyahət tətbiqləri isə istifadəçinin təqviminə uçuşları idxal edir.

Android-də READ_CALENDAR və WRITE_CALENDAR arasında fərq nədir?

READ_CALENDAR istifadəçinin bütün hadisə və təqvimlərini oxumağa imkan verir. WRITE_CALENDAR hadisələr yaratmağa, dəyişdirməyə və silməyə imkan verir. İstifadəçi digəri olmadan bir icazə verə bilər ki, bu da tətbiqin təqvim məlumatlarına giriş səviyyəsi üzərində çevik nəzarət təmin edir.

iOS-da təqvimə girişi necə ləğv etmək olar?

Tənzimləmələr — Məxfilik və təhlükəsizlik — Təqvimlər bölməsini açın. Tətbiqi seçin və giriş açarını söndürün. Tətbiq növbəti açıq sorğu və istifadəçinin təsdiqinə qədər hadisələri oxumaq və yaratmaq qabiliyyətini itirəcək.

Təqvimə giriş rədd edilɐrsə nə baş verir?

Tətbiq hadisələri oxuya və ya yarada bilməyɐcək. requestAccess metodu iOS-da granted = false qaytaracaq və ya checkSelfPermission Android-də PERMISSION_DENIED qaytaracaq. Tərtibatçı graceful degradation — tətbiqin təqvim funksiyaları olmadan işləməyə davam etməsi, çökməməsi və xəta göstərməməsi — təmin etməlidir.

Tam icazə olmadan bir hadisəyə giriş əldə etmək olarmı?

iOS-da belə bir imkan yoxdur — EventKit hadisələrlə hər hansı əməliyyat üçün tam giriş tələb edir. Android-də sistem təqvim tətbiqi vasitəsilə hadisə yaratmaq üçün Intent.ACTION_INSERT istifadə edə bilərsiniz, bu icra zamanı icazələri tələb etmir, lakin mövcud hadisələri oxumağa da imkan vermir.

Nəticə

  • Calendar Permission — mobil platformalarda təqvim məlumatlarına giriş üçün qorunan icazə.
  • EventKit — EKEventStore vasitəsilə təqvimlər və xatırlatmalarla iş üçün əsas iOS çərçivəsi.
  • READ_CALENDAR — istifadəçinin təqvimindən hadisələri oxumaq üçün Android-in təhlükəli icazəsi.
  • WRITE_CALENDAR — hadisələr yaratmaq və redaktə etmək üçün ayrıca Android icazəsi.
  • CalendarContract — strukturlaşdırılmış cədvəllərlə Android ContentProvider: Calendars, Events, Attendees, Reminders.
  • İcazə öncəsi dialoq — sistem sorğusundan əvvəl izahatla öz dialoqu, konversiyanı 35% artırır.
  • Graceful degradation — tətbiq təqvimə giriş olmadan düzgün işləməli, imtinanı çökmədən idarə etməlidir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun