(я никогда раньше не использовал Swift или Xcode, так что это, вероятно, глупый вопрос)
Чтобы изолировать проблему, я создал полностью пустое «Приложение» в Xcode 11 и поместил его в AppDelegate.swift
:
import Cocoa
import EventKit
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
private let eventStore = EKEventStore()
func applicationDidFinishLaunching(_ aNotification: Notification) {
eventStore.requestAccess(to: .event) { granted, error in
if granted {
print("GOOD: Access granted")
} else {
print("BAD: Access denied")
}
}
}
}
Когда я запускаю приложение (через cmd + R), я сразу же вижу, что оно отказало в доступе, не дав мне возможности утвердить доступ:
Metal API Validation Enabled
BAD: Access denied
Что я делаю неправильно? Как я могу получить его, чтобы разрешить мне доступ к событиям календаря?
Обратите внимание, что я заметил, что документы говорят:
Для доступа к календарю пользователяданные, все изолированные приложения MacOS должны содержать ключ com.apple.security.personal-information.
Поэтому я сделал это изменение так же, как и в App_Name.entitlements
, но это не помогло:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.personal-information</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
</dict>
</plist>