请求许可

未经许可,你的应用无法访问你的提醒和日历。相反,它必须向用户显示警报,请求他/她授予对应用程序事件的访问权限。

要开始,请导入 EventKit 框架:

迅速

import EventKit

Objective-C

#import <EventKit/EventKit.h>

制作一个 EKEventStore

然后,我们制作一个 EKEventStore 对象。这是我们可以访问日历和提醒数据的对象:

迅速

let eventStore = EKEventStore()

Objective-C

EKEventStore *eventStore = [[EKEventStore alloc] init];

注意

每次我们需要访问日历时制作 EKEventStore 对象效率不高。尝试制作一次并在代码中的任何地方使用它。

检查可用性

可用性有三种不同的状态:授权,拒绝和未确定。Not Determined 表示应用需要授予访问权限。

为了检查可用性,我们使用 EKEventStore 对象的 authorizationStatusForEntityType() 方法:

迅速

switch EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent){
    case .Authorized: //...
    case .Denied: //...
    case .NotDetermined: //...
    default: break
}

Objective-C

switch ([EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]){
    case EKAuthorizationStatus.Authorized:
        //...
        break;
    case EKAuthorizationStatus.Denied:
        //...
        break;
    case EKAuthorizationStatus.NotDetermined:
        //...
        break;
    default:
        break;
}

请求许可

将以下代码放在 NotDetermined 案例中:

迅速

eventStore.requestAccessToEntityType(EKEntityTypeEvent, completion: { [weak self] (userGrantedAccess, _) -> Void in
    if userGrantedAccess{
        //access calendar
    }
}