2013-01-11 33 views
5
EKEventStore *eventStore = [[UpdateManager sharedUpdateManager] eventStore]; 

if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) 
{ 
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
    { 
     if (granted)... 

Tôi muốn yêu cầu người dùng cho phép thêm sự kiện vào lịch của anh ấy. Sau khi được cấp, tôi có cần xin phép lại không khi tôi muốn xóa một sự kiện (trong một phiên khác sau khi ứng dụng đã được đóng và mở lại) hoặc nó chỉ là một điều thời gian muốn?requestAccessToEntityType - một lần hoặc mỗi lần?

Nếu đó là một điều một lần, tôi có thể chỉ cần đặt nó trong ViewDidLoad lúc ăn trưa đầu tiên chỉ để "thoát khỏi nó"?

+1

Điều này có ** hoàn toàn không có gì ** để làm với Xcode. –

Trả lời

16

Bạn chỉ cần gọi nó một lần:

BOOL needsToRequestAccessToEventStore = NO; // iOS 5 behavior 
EKAuthorizationStatus authorizationStatus = EKAuthorizationStatusAuthorized; // iOS 5 behavior 
if ([[EKEventStore class] respondsToSelector:@selector(authorizationStatusForEntityType:)]) { 
    authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]; 
    needsToRequestAccessToEventStore = (authorizationStatus == EKAuthorizationStatusNotDetermined); 
} 

if (needsToRequestAccessToEventStore) { 
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {    
     if (granted) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       // You can use the event store now 
      }); 
     } 
    }]; 
} else if (authorizationStatus == EKAuthorizationStatusAuthorized) { 
    // You can use the event store now 
} else { 
    // Access denied 
} 

Bạn không nên làm điều đó trên sự ra mắt đầu tiên, mặc dù. Chỉ yêu cầu quyền truy cập khi bạn cần và điều đó không đúng cho đến khi người dùng quyết định thêm sự kiện.

+0

Tôi có cần xem lời nhắc trên trình mô phỏng iOS 6 sau này không? Bởi vì ngay bây giờ tôi không và quyền riêng tư của tôi theo lịch là trống rỗng – Segev

+0

@Sha Nó bình thường. Thông báo bảo mật không được hiển thị trong trình mô phỏng iPhone. Thử nghiệm trên một thiết bị thực tế. –

+0

Tôi không có thiết bị ios 6 tiện dụng. Tại sao họ đặt một phần bảo mật trong trình mô phỏng đọc "Ứng dụng đã yêu cầu quyền truy cập vào lịch của bạn sẽ xuất hiện ở đây"? cảm thấy sai – Segev

Các vấn đề liên quan