如何在 macOS 应用中使用 EventKit 在 Swift 中获取日历权限
How to Get Calendar Permissions with EventKit in Swift in macOS App
我正在尝试从我在 Xcode 11.2.1 中使用 Swift 5 开发的 Mac 应用程序向 macOS 日历添加日历事件。
首先,我在 App Sandbox.
中检查了 Calendar 权利
我正在尝试像这样提示权限:
import EventKit
@IBAction func clickAddToCalendar(_ sender: NSButton){
let eventStore = EKEventStore()
eventStore.requestAccess(to: .event){ granted, error in
print(granted) // returns false
print("----")
print(error) // returns nil
}
}
...但是 granted
每次都是 false
,我从来没有看到弹出窗口来授予权限。在 macOS 上是否需要像这样提示访问?看起来是这样,因为当我尝试像这样直接添加日历事件时:
let event = EKEvent(eventStore: eventStore)
event.title = "My Event"
event.startDate = Date()
event.endDate = Date()
event.calendar = eventStore.defaultCalendarForNewEvents
do {
try eventStore.save(event, span: .thisEvent)
} catch let error as NSError {
print(error)
}
...我得到一个错误:
serviceName = "com.apple.CalendarAgent.database"; ... returned error NSCocoaErrorDomain(134070) with userInfo dictionary { Problem = "request failed, insufficient permission" }
有没有人做过这件事可以给我一些指导?谢谢!
您有 info.plist 隐私项 - 日历使用说明吗?
EventKit 需要查看 https://developer.apple.com/documentation/eventkit/accessing_the_event_store
我正在尝试从我在 Xcode 11.2.1 中使用 Swift 5 开发的 Mac 应用程序向 macOS 日历添加日历事件。
首先,我在 App Sandbox.
中检查了 Calendar 权利我正在尝试像这样提示权限:
import EventKit
@IBAction func clickAddToCalendar(_ sender: NSButton){
let eventStore = EKEventStore()
eventStore.requestAccess(to: .event){ granted, error in
print(granted) // returns false
print("----")
print(error) // returns nil
}
}
...但是 granted
每次都是 false
,我从来没有看到弹出窗口来授予权限。在 macOS 上是否需要像这样提示访问?看起来是这样,因为当我尝试像这样直接添加日历事件时:
let event = EKEvent(eventStore: eventStore)
event.title = "My Event"
event.startDate = Date()
event.endDate = Date()
event.calendar = eventStore.defaultCalendarForNewEvents
do {
try eventStore.save(event, span: .thisEvent)
} catch let error as NSError {
print(error)
}
...我得到一个错误:
serviceName = "com.apple.CalendarAgent.database"; ... returned error NSCocoaErrorDomain(134070) with userInfo dictionary { Problem = "request failed, insufficient permission" }
有没有人做过这件事可以给我一些指导?谢谢!
您有 info.plist 隐私项 - 日历使用说明吗?
EventKit 需要查看 https://developer.apple.com/documentation/eventkit/accessing_the_event_store