macos - 将 EKAuthorizationStatus 重置为 EKAuthorizationStatusNotDetermined 以进行测试

标签 macos cocoa ekeventkit

所以,问题是: 当使用 Event Kit 框架并请求访问 OSX 上的用户日历数据库时,仅在第一次调用 -requestAccessToEntityType:Completion: 时才会显示请求用户许可的面板。这使得当用户拒绝权限时,甚至当用户最初授予权限时(换句话说,重新创建首次运行条件)时,很难测试应用程序的响应。如果有办法将 EKAuthorizationStatus 重置为 EKAuthorizationStatusNotDetermined,则可以复制此用户场景,但据我所知,一旦做出初始权限决定,就无法返回到 NotDetermined 状态。

我已阅读此处发布的 iOS 解决方案:Is it possible to reset the privacy settings in iOS? 但我找不到 OSX 的类似解决方案。

问题: 有没有办法模拟请求访问用户日历数据库的应用程序的首次运行,以便出于测试目的重复显示权限对话框?

最佳答案

权限标志存储在 SQLite 数据库中:

~/Library/Application Support/com.apple.TCC/TCC.db

access 表中,您应该看到列 servicekTCCServiceAddressBook 等以及 client任何拥有权限或在某个时候请求过的相应应用程序。

如果您想测试再次请求权限的功能,请删除包含应用程序名称的行 - 下次启动它时,您应该再次收到请求。

您可以通过以下方式验证权限:

System Preferences > Security & Privacy > Privacy 

关于macos - 将 EKAuthorizationStatus 重置为 EKAuthorizationStatusNotDetermined 以进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34445600/

相关文章:

macos - 将文件传输到 Web 服务器时转换 Unicode 分解

iphone - NSArray compontentsSeperatedByString 返回无法识别的选择器

ios - saveEvent 返回 "No calendar has been set"

c++ - x86_64 的 Cmake 错误 undefined symbol

javascript - 是否有类似于 RealBasic 或 LiveCode 的东西,但使用 Javascript/HTML 作为语言?

cocoa - 删除时如何手动管理核心数据关系

cocoa - 从 Cocoa 应用程序内执行外部应用程序

ios - 如何在 iOS 中更新或编辑 EKEvent 并使用标识符存储在 native 日历中?

macos - 撤销 requestAccessToEntityType : authorization on Mavericks so I can test my app

objective-c - 如何获取 Mac 操作系统的实际名称而不是版本?