[英]Permissions Add Calendar event iOS
How can I show an error when there is no permission? 没有权限时如何显示错误? (Eg "You don't give us the persmission to write in your calendar."). (例如,“您没有允许我们在日历中写信的权限。”)。
This is my code : 这是我的代码:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
EKEventStore *es = [[EKEventStore alloc] init];
[es requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
/* This code will run when uses has made his/her choice */
}];
}
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"ddMMyy"];
NSString *fechainicio = datum;
NSString *fechafin = datum;
titel = [NSString stringWithFormat:@"%@ (%@)", titel, plaatslabel.text];
NSDate * date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:fechainicio];
NSDate * date2 = [[NSDate alloc] init];
date2 = [dateFormatter dateFromString:fechafin];
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = @"Optreden Ronald Goedemondt";
event.location = titel;
event.allDay = YES;
event.startDate = date;
event.endDate = date2;
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
WBSuccessNoticeView *notice = [WBSuccessNoticeView successNoticeInView:self.view title:@"Show geplaatst in uw agenda."];
[notice show];
granted
will be either YES
if access has been granted or NO
otherwise. granted
会要么YES
如果授予访问权限或NO
,否则。
Also, you should make sure that you only call -requestAccessToEntityType:completion:
when it's necessary to do so: 另外,应确保仅在必要时才调用-requestAccessToEntityType:completion:
::
EKEventStore *es = [[EKEventStore alloc] init];
EKAuthorizationStatus authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
BOOL needsToRequestAccessToEventStore = (authorizationStatus == EKAuthorizationStatusNotDetermined);
if (needsToRequestAccessToEventStore) {
[es requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted) {
// Access granted
} else {
// Denied
}
}];
} else {
BOOL granted = (authorizationStatus == EKAuthorizationStatusAuthorized);
if (granted) {
// Access granted
} else {
// Denied
}
}
Here's the code I use. 这是我使用的代码。 Works like a charm: 奇迹般有效:
-(void)askPermissionForCalendarAccess {
EKEventStore *eventStore = [[EKEventStore alloc] init];
/* iOS 6 requires the user grant your application access to the Event Stores */
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
/* iOS Settings > Privacy > Calendars > MY APP > ENABLE | DISABLE */
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted) {
NSLog(@"granted");
//This method checks to make sure the calendar I want exists, then move on from there...
[self checkForCalendar];
} else {
//put error popup code here.
NSLog(@"denied");
[self performSelectorOnMainThread:@selector(showDeniedAccessAlert) withObject:nil waitUntilDone:NO];
}
}];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.