请求许可
未经许可,你的应用无法访问你的提醒和日历。相反,它必须向用户显示警报,请求他/她授予对应用程序事件的访问权限。
要开始,请导入 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
    }
}