- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试请求访问 SwiftUI MacOS 应用程序中的日历,但它立即拒绝了它。
下面是一些可测试的代码,突出显示了我想要实现的目标。非常感谢。
在我之前在 MacOS 上请求私有(private)信息的经验中,应该出现通知而不是 iOS 上的弹出窗口。
我仍在尝试为 SwiftUI 找出 EventKit,所以请原谅任何错误。
struct ContentView: View {
let eventStore = EKEventStore()
var body: some View {
Text("Test")
.onAppear{
checkCalendarAuthorizationStatus()
}
}
func checkCalendarAuthorizationStatus() {
switch EKEventStore.authorizationStatus(for: .event) {
case .authorized:
insertEvent(store: eventStore)
case .denied:
print("Access denied")
case .notDetermined:
// 3
eventStore.requestAccess(to: .event, completion:
{(granted: Bool, error: Error?) -> Void in
if granted {
self.insertEvent(store: eventStore)
} else {
print("Access denied")
}
})
default:
print("Case default")
}
}
func insertEvent(store: EKEventStore) {
// 1
let calendars = store.calendars(for: .event)
for calendar in calendars {
// 2
if calendar.title == "Calendar" {
// 3
let startDate = Date()
// 2 hours
let endDate = startDate.addingTimeInterval(2 * 60 * 60)
// 4
let event = EKEvent(eventStore: store)
event.calendar = calendar
event.title = "New Meeting"
event.startDate = startDate
event.endDate = endDate
// 5
do {
try store.save(event, span: .thisEvent)
}
catch {
print("Error saving event in calendar") }
}
}
}
}
最佳答案
您不应该检查状态,而是使用 EKEventStore().requestAccess(... 直接请求访问,如文档所述
/**
@method requestAccessToEntityType:completion:
@discussion Users are able to grant or deny access to event and reminder data on a per-app basis. To request access to
event and/or reminder data, call -requestAccessToEntityType:completion:. This will not block the app while
the user is being asked to grant or deny access.
Until access has been granted for an entity type, the event store will not contain any calendars for that
entity type, and any attempt to save will fail. The user will only be prompted the first time access is
requested; any subsequent instantiations of EKEventStore will use the existing permissions. When the user
taps to grant or deny access, the completion handler will be called on an arbitrary queue.
*/
@available(macOS 10.9, *)
open func requestAccess(to entityType: EKEntityType, completion: @escaping EKEventStoreRequestAccessCompletionHandler)
所以使用以下
func checkCalendarAuthorizationStatus() {
eventStore.requestAccess(to: .event, completion:
{(granted: Bool, error: Error?) -> Void in
if granted {
self.insertEvent(store: eventStore)
} else {
print("Access denied")
}
})
}
并确保
NSCalendarsUsageDescription
Info.plist
中添加了描述.
关于macos - 请求 EventKit 访问 macOS SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63709783/
我正在尝试从我在 Xcode 11.2.1 中使用 Swift 5 开发的 Mac 应用程序向 macOS 日历添加日历事件。 首先,我有 日历 在 中检查了权利应用沙盒 . 我试图提示这样的权限:
在我的应用程序中,我使用 EventKit API 来访问我设备上的日历,并在我的 View 中显示它们。但是,在使用网络日历时,我怀疑 EKEventStore查询时只会返回某种缓存/本地事件列表,
这是我将所有事件添加到日历中的方式,这些事件来自表格 View 。当 TableView 上的行被删除时,我在从日历中删除特定的偶数时遇到问题。我正在尝试的代码似乎在日历中找不到和标识符。你能告诉我我
我在 iOS 中使用 EventKit 与 Calendar.app 进行交互。在一种情况下,我需要从我的应用程序中删除一个日历。所以我使用 EventStore.removeCalendar(_:C
我正在构建一个内置了一些 iOS 日历功能的应用程序。用户可以创建事件并将它们发送到他们的 iCal,但我只希望在我的应用程序中创建的事件显示在应用程序的日历上。 我知道我可以使用如下谓词: NSPr
我正在开发一款应用程序,可以在线获取学生的学校类(class)并将其保存到 iPhone 的日历中。 每次类(class)更新时,我想从本周的日历中删除所有事件,然后将整周的更新类(class)放入。
我想问我需要从我的应用程序添加事件,我从日期选择器中选择日期并在文本框中写入事件,它在日历中命中,iphone 的默认日历我怎么能这样做是使用框架eventkit 我用了这个代码但是没有用 - (vo
我是 swift 的新手,所以我只是希望有人能帮助我 - 我正在尝试使用 UIEventKit 将事件添加到日历(我已经想出了如何做)但是有两件事我不确定: 1 - 我希望能够将事件添加到特定日期的下
我已经阅读了日历和提醒编程指南,以及 EventKit 和相关框架引用资料,但是一直无法找到我的问题的答案——当然除非答案是“这是不可能的”。 我的问题是:如果我允许我的应用用户在应用内创建日历事件,
我正在使用以下代码删除事件 [store requestAccessToEntityType:EKEntityTypeEvent completion: ^(BOOL granted, NSError
我很好奇是否有一种方法可以使用 EventKit 的功能 - 创建事件、重复规则等 - 而无需实际与日历和提醒应用程序交互? 关于要求等的更多细节: 用户启动了我的应用,并在那里创建了一个新的事件式条
我希望我的 EventKit 在尝试将事件添加到日历但访问被拒绝时请求对日历的许可。它只询问第一次使用该应用程序,如果您在设置中拒绝访问,它不会提示用户再次授予访问权限。请帮忙。 额外功劳:我还希望它
我能够访问 EKEventStore 的所有功能,例如保存任何事件或从日历中删除任何事件。 但是如何为该事件创建小睡让我说我需要为所有 saveEvent 小睡 15 分钟? 我没有找到这样的方法 有
我无法使用 Eventkit 访问我设备的日历。我正在使用 EKEventEditViewController 来呈现用于添加日历条目的 View 。 EKEventStore *eventStore
我正在使用 eventkit 为大学制作一个应用程序。我正在尝试创建一个日历并使他像“defaultCalendar,自动”一样,仅在该日历上添加和读取所有事件。 我尝试做到这一点的代码是: //我打
EventKit eventsMatchingPredicate 搜索是否从重复事件中拾取单个实例? 最佳答案 eventsMatchingPredicate:将返回重复事件的所有实例。 关于ipho
我的应用程序使用 EventKit 从 Reminders 应用程序读取和写入新的提醒,效果很好。但是,我只找到了一种将提醒写入用户在“设置”应用程序中选择的默认列表的方法...我的问题是,有没有人知
我已经使用 Eventkit 成功地将我的应用程序事件保存到本地日历,但现在我想删除仅使用我的应用程序保存的事件。但是下面的代码给了我保存在日历上的所有事件的列表,但我只想删除我自己保存的事件。我该怎
大家好,我是 swift 和 Events Kit 的新手,我得到了这行代码,我可以从中打印事件而不是日历名称吗? var eventStore = EKEventStore() ev
我有一个使用 EventKit 的应用程序。我请求获得提醒的许可,然后我有创建提醒的代码。在模拟器中运行应用程序时,我有时会在日志中收到此错误消息: 从守护程序获取自时间戳 450512391.766
我是一名优秀的程序员,十分优秀!