无法在Mac OS的Swift应用程序中请求日历事件访问(通过EKEventStore)

问题描述 投票:0回答:1

((我以前从未使用过Swift或Xcode,所以这可能是一个愚蠢的问题)

为了找出问题,我在Xcode 11中创建了一个完全空的“ App”,并将其放入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

我在做什么错?如何获得允许我批准访问日历事件的权限?

请注意,我注意到the docs说:

[要访问用户的日历数据,所有沙盒化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>
swift xcode macos eventkit
1个回答
0
投票

已修复。我错了2件事:

    权限文件中的[[com.apple.security.personal-information]不正确。只需输入“日历”即可自动填写正确的内容。
  1. Info.plist文件中,我需要“隐私-日历用法说明”以具有一个值。我在这里发现:https://forums.developer.apple.com/thread/110825
© www.soinside.com 2019 - 2024. All rights reserved.