在我目前正在開發的應用程序中,用戶和用戶日曆之間存在交互,就像許多應用程序中發生的事情一樣,非常標準的東西。直到我升級到ios 6時,它工作正常。我現在遇到了「這個應用程序無法訪問您的日曆。當我嘗試執行相同的日曆功能,但我的應用程序可以在隱私設置中啓用訪問」對話框時不會出現在設備日曆隱私設置中。我需要使用一些新的API來請求用戶授予訪問權限嗎?應用程序日曆功能不再在ios 6中工作
非常感謝您幫助我解決這個問題。
在我目前正在開發的應用程序中,用戶和用戶日曆之間存在交互,就像許多應用程序中發生的事情一樣,非常標準的東西。直到我升級到ios 6時,它工作正常。我現在遇到了「這個應用程序無法訪問您的日曆。當我嘗試執行相同的日曆功能,但我的應用程序可以在隱私設置中啓用訪問」對話框時不會出現在設備日曆隱私設置中。我需要使用一些新的API來請求用戶授予訪問權限嗎?應用程序日曆功能不再在ios 6中工作
非常感謝您幫助我解決這個問題。
我相信我有完全相同的問題。我正在部署一個正常的開發人員構建我正在使用iOS 6的iPhone 4的應用程序。
編輯︰我終於解決了這樣,我沒有找到網絡上的信息,而是我發現它在API中。
運行以下命令來請求權限。這顯然是一個異步調用,並且在用戶授權應用程序之前不會授予訪問權限。
EKEventStore *es = [[EKEventStore alloc] init];
[es requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
/* This code will run when uses has made his/her choice */
}];
此外,您可以指定應用程序試圖處理Info.plist中的信息。有一個叫做隱私 - 日曆使用情況描述(NSCalendarsUsageDescription)的關鍵字,可以包含一個字符串描述,將在用戶提示中顯示。
下面是我碰到的問題(由上述固定)的全部細節:
當我嘗試ATT事件日曆我看到以下畫面:
當我打開日曆隱私設置設置,沒有應用程序可見:
這一切都讓我認爲有一些設置我必須放在Info.plist中t o啓用日曆訪問並詢問用戶啓動權限。我搜索了網頁,但沒有發現任何東西。
@jloewy,我想這是你遇到的同樣的問題?
如果您計劃在iOS 6之前支持設備,我會添加以下內容,否則您會收到錯誤消息。
EKEventStore *store = [[EKEventStore alloc] init];
if([store respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
/* This code will run when uses has made his/her choice */
}];
}
如果你想等待用戶響應請求,一個可能的添加一些代碼行,以接受的答案:
__block BOOL accessGranted = NO;
if([store respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);
}];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
} else { // we're on iOS 5 or older
accessGranted = YES;
}
if (accessGranted) {
// go on
}
感謝您的解決方案 –
它會詢問許可只有一次,對於下次它會記住這個選擇。如果您不允許訪問日曆,則下次不會再提問,並且不允許向日歷添加活動。
如果您想重置這些設置,您必須刪除「隱私設置」,然後只有當您的應用嘗試使用RequestAccessToEntityType API訪問日曆時,它纔會請求權限。
請考慮添加一個鏈接到文檔。 –
@Jeff - 感謝您的建議。這裏是相關蘋果文檔的鏈接:http://developer.apple.com/library/ios/#documentation/EventKit/Reference/EKEventStoreClassRef/Reference/Reference.html – AnkitJain
完美工作,謝謝! – JLoewy