首页 > 解决方案 > EKEventStore 请求 macOS 上的联系人访问权限

问题描述

在 MacOS 10.15.4、Xcode 11.4、macOS 应用程序上:

初始化一个EKEventStore生成系统联系人访问请求对话框:““应用程序”想访问您的联系人。我不希望发生这种情况,因为 EKEventStore 应该只关注提醒/日历。

该项目仅包含从默认值修改的这些文件。

// App.entitlements

com.apple.security.app-sandbox: YES
com.apple.security.personal-information.addressbook: YES
// info.plist

NSContactsUsageDescription: "some desc"
// AppDelegate.swift

import Cocoa
import EventKit

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ aNotification: Notification) {
        EKEventStore()
    }
}

没有日志打印到 Xcode 控制台。

起初我怀疑这可能是由共享日历/提醒列表引起的,但它似乎发生在根本没有日历/提醒列表的帐户上。

有人知道为什么会这样吗?

标签: swiftmacoseventkitekeventkit

解决方案


我也遇到了同样的问题,我在一个最小的示例应用程序中重现了它。当您实例化 EKEventStore 并且您的项目具有“地址簿”权利以及“日历”权利时,就会出现问题。

我已经向 Apple (FB7757440) 提交了反馈,他们表示该问题仍然存在,但类似的报告不到 10 个。我只能建议您提交自己的问题以帮助加快问题的速度。


推荐阅读