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