ios – 确定您的应用是否可以访问日历而不启动请求?

我正在实现从我的应用程序中添加删除iOS日历中用户创建的事件的功能.我已经为用户创建活动时编写了访问日历的权限请求,并且它运行良好.我将事件保存在服务器上,我允许他们稍后删除该事件,当发生这种情况时,我也会从日历中删除该事件.有人可以在此应用程序之外创建事件,打开应用程序,然后删除从服务器获取的约会.在这种情况下,日历中没有事件存储,但它仍然需要查看是否存在尝试删除它的事件,并且它失败了,因为在这种情况下我没有要求用户允许访问日历.

但是我不想在删除时要求用户获得权限,因为用户不知道应用程序为什么要访问日历,因为他们从未知道它可以将约会保存到日历 – 他们在网站上创建了它,并且他们没有理由在那个时候批准它,因为它无论如何都不会做任何事情.

因此,我的问题是,是否可以确定您的应用程序当前是否可以访问日历而不提出请求,这将导致在未授予权限的情况下向用户显示自动警报 – 请参阅下面的请求代码?我只是想搜索事件,试图删除它只有我已经有权访问日历,如果我没有,我不会尝试删除任何东西.

[eventStore requestAccesstoEntityType:EKEntityTypeEvent completion:^(BOOL granted,NSError *error) {
    if (granted) {
        //already have access or user tapped on Allow in popup
    }
    ...

解决方法

您可以使用[EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]

您需要检查此方法是否返回EKAuthorizationStatusAuthorized以断定您的应用当前可以访问给定实体类型的日历.

更多可以在课程refence here中找到

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...