나는 기존의 응용 프로그램은 2010 년부터, 그리고 아이폰 OS (10)와 지금, 앱이 사용을 설명하는 Info.plist
에서 문자열을 가지는 것이 필요했다 : http://useyourloaf.com/blog/privacy-settings-in-ios-10/EventKitUI/EKCalendarChooser는 연락처에 액세스해야합니다 - 이유가 무엇입니까? 여기에 설명 된대로
그러나, 나는 이미 해당 키를 추가 내 Info.plist. 그래도 사용자가 캘린더에 액세스하려고하면 앱이 다운되는 경우가 있습니다. 사용자의 하나는 지금 나에게 다음과 같습니다 충돌 보고서를 보내도록 관리 :
Termination Reason: TCC, This app has crashed because it attempted to access
privacy-sensitive data without a usage description.
The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.
Triggered by Thread: 2
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x00000001812501a8 0x18124f000 + 4520
1 libdispatch.dylib 0x000000018113b7ec 0x181128000 + 79852
2 Contacts 0x000000018aa2c63c 0x18a9c8000 + 411196
3 Contacts 0x000000018a9f7c40 0x18a9c8000 + 195648
4 Contacts 0x000000018aa08578 0x18a9c8000 + 263544
5 EventKitUI 0x000000018f18b5a4 0x18f169000 + 140708
6 EventKitUI 0x000000018f2a9628 0x18f169000 + 1312296
7 EventKitUI 0x000000018f2aa3a8 0x18f169000 + 1315752
8 UIKit 0x000000018843b1b4 0x1880e8000 + 3486132
이제 질문은, 왜 내 응용 프로그램이 필요하다 액세스 에 연락처을하지만, 내 응용 프로그램은 읽기 전용/쓰기를 원한다 달력? 나는 EKCalendarChooser
을 개방하고있는 충돌의 코드에서
, 이전에 내가 가지고 내의 Info.plist에서 eventStore requestAccessToEntityType:EKEntityTypeEvent completion:(...)
를 사용하여 권한을 사용자에게 질문 :
<key>NSCalendarsUsageDescription</key>
<string>Storing of leave data</string>
어떻게 내가 할 이것을 고쳐라? 오류 보고서에 표시된대로 NSContactsUsageDescription
을 추가해야합니까? 왜? 그리고 그것은 대부분의 사용자가 아마도 나쁜 것으로 생각할 수있는 연락처 액세스에 대한 팝업 프롬프트로 이어질 것입니까?
참고 : 가장 이상한 점은 내 장치에서이 충돌을 재현 할 수 있다는 것입니다.이 유형의 충돌을보고 한 사용자가 두 명 밖에 없습니다.
안전을 위해 NSContactsUsageDescription을 추가하십시오. 또한 내 앱에 개인 정보 - 사진 라이브러리 사용 설명을 추가하지만 내 앱에는 사진 라이브러리를 사용하지 않습니다. –
그래,하지만 왜? 이유를 알고있을 때 연락처 권한이 필요 없도록 코드를 변경할 수 있습니다. – user826955