SuperAPI AI 工具集

eventkit-calendar

编程与开发

查看项目

更新于 10-14 20:25

技能介绍

用途

EventKit Calendar 是一个面向 Swift 6.2 / iOS 26+ 的开发技能,用于在 iOS 应用中创建、读取和管理日历事件与提醒事项。它基于 Apple 的 EventKit 与 EventKitUI 框架,适合需要在 App 内集成日历或提醒功能的开发者。

主要能力

  • 权限与授权:覆盖 iOS 17+ 的细粒度授权方法,包括 requestFullAccessToEvents()、requestWriteOnlyAccessToEvents()、requestFullAccessToReminders(),以及授权状态检查。
  • 事件管理:创建、获取、保存事件,支持指定日历、结构化位置、按标识符获取单个事件。
  • 提醒事项:创建、获取未完成提醒、完成提醒。
  • 重复规则:使用 EKRecurrenceRule 创建简单与复杂的重复事件或提醒,并支持编辑重复事件时指定 EKSpan。
  • 闹钟:为事件或提醒添加相对时间或绝对时间的 EKAlarm。
  • EventKitUI 控制器:提供 EKEventEditViewController、EKEventViewController、EKCalendarChooser 的使用示例。
  • 变更监听:通过 EKEventStoreChanged 通知保持 UI 同步。

使用方式

  1. 配置 Info.plist:根据所需访问级别添加 NSCalendarsFullAccessUsageDescription、NSCalendarsWriteOnlyAccessUsageDescription、NSRemindersFullAccessUsageDescription;若同时支持 iOS 16 或更早版本,还需包含旧版键。
  2. 创建事件库:创建单个 EKEventStore 实例并复用,不要混用不同事件库的对象。
  3. 请求授权:使用 iOS 17+ 的异步方法请求所需权限,并在获取或保存前检查授权状态。
  4. 操作事件与提醒:使用提供的代码示例创建、获取、保存事件和提醒,注意保存到可写日历、批量保存后显式调用 commit()。
  5. 使用系统界面:通过 EventKitUI 控制器展示系统编辑器、查看器或日历选择器。
  6. 监听变更:注册 EKEventStoreChanged 通知,收到后重新获取事件,避免使用过期对象。

适用场景

  • 在 App 内添加事件到用户日历(如预订、预约)。
  • 创建和管理提醒事项。
  • 需要重复事件、闹钟或系统日历编辑界面的场景。
  • 需要与系统日历数据保持同步的 iOS 应用。

限制

  • 目标平台为 Swift 6.2 / iOS 26+,部分 API 需要 iOS 17+。
  • 需要用户授权才能访问日历或提醒数据。
  • 保存事件前需确认目标日历允许修改(allowsContentModifications)。
  • 提醒事项的获取是异步的,通过完成回调返回。
  • 重复事件保存时需正确指定 EKSpan(.thisEvent 或 .futureEvents)。
  • 批量保存后必须调用 commit(),否则更改不会持久化。
  • 不应跨不同 EKEventStore 实例共享 EKObject。
  • 为特定地点的事件应显式设置时区。

常见错误与审查清单

技能文档列出了常见错误,如使用已弃用的 requestAccess(to:)、保存到只读日历、忽略时区、忘记提交批量保存、混用不同事件库的对象,并提供了审查清单,涵盖 Info.plist 键、授权方法、单一事件库、可写日历、重复事件跨度、批量提交、变更监听、时区设置、对象共享和 EventKitUI 代理回调等检查项。