2016-10-15 1 views
1

Ich habe eine bestehende App seit 2010, und mit iOS 10 es erforderlich ist jetzt, dass die App-Strings im Info.plist aufweist, ist die Verwendung der Beschreibung, wie hier erklärt: http://useyourloaf.com/blog/privacy-settings-in-ios-10/EventKitUI/EKCalendarChooser benötigt Zugriff auf Kontakte - warum?

Allerdings habe ich bereits die entsprechende Taste hinzugefügt meine Info.plist. Dennoch melden Nutzer App-Abstürze, wenn die App versucht, auf Kalender zuzugreifen. Einer der Benutzer nun gelungen, mir einen Crash-Bericht zu senden, die wie folgt aussieht:

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 

Nun ist die Frage, warum meine app brauche den Zugang zu Kontakte, aber meine app will nur lesen/schreiben Kalender?

Im Krachen Code, den ich ein EKCalendarChooser Uhr Eröffnung und vorher fragte ich den Benutzer um Erlaubnis eventStore requestAccessToEntityType:EKEntityTypeEvent completion:(...)

In meinem Info.plist mit ich habe:
<key>NSCalendarsUsageDescription</key>
<string>Storing of leave data</string>

So wie ich repariere das? Muss ich NSContactsUsageDescription hinzufügen, wie im Absturzbericht angegeben? Warum? Und wird es zu einer Popup-Eingabeaufforderung für den Zugriff auf Kontakte führen, was die meisten Benutzer wahrscheinlich für eine schlechte Sache halten würden?

Hinweis: das seltsamste ist, dass auf keinem meiner Geräte dieser Absturz reproduziert werden kann, ich habe nur ein paar Benutzer, die diese Art von Absturz melden.

+0

Für die Sicherheit fügen Sie NSContactsUsageDescription .i fügen auch Datenschutz - Foto-Bibliothek Verwendung Beschreibung in meiner App, aber in meiner App bin nicht mit Foto-Bibliothek. –

+0

Okay, aber warum? Vielleicht könnte ich meinen Code ändern, so dass Kontakte Berechtigungen nicht benötigt werden, wenn ich den Grund kenne. – user826955

Antwort

5

Ich hatte gerade das gleiche Problem und glaube, dass es ist, weil der EKCalendarChooser zeigen kann, welcher Ihrer Kontakte einen Kalender teilt. Ich habe gerade alle Freigabeoptionen deaktiviert, einschließlich der Entfernung von Familienmitgliedern aus der iCloud-Familie, und es ist kein Zugriff mehr auf Kontakte erforderlich. Ich habe dann versucht, einen Kalender mit einem Kontakt zu teilen, indem ich den EKCalendarChooser benutzte, und es wurde um Erlaubnis gebeten, nachdem ich den Kontakt ausgewählt hatte.

Es ist ein wenig mühsam, aber die Lösung besteht wahrscheinlich darin, eine Verwendungsbeschreibung hinzuzufügen, die dem Benutzer mitteilt, dass er Berechtigungen zum Anzeigen/Ändern von Details zur Kalenderfreigabe benötigt. Eine andere (und schmerzhaftere) Alternative wäre, eine eigene Ansicht für die Auswahl von Kalendern zu erstellen.

Ich bin mir nicht sicher, ob dies von Apple oder einem Fehler beabsichtigt ist, da ich nicht weiß, ob Entwickler irgendwie Zugriff auf die Kontaktinformationen aus der EKCalendarChooser-Ansicht haben können.

+0

Das ist, was ich am Ende, ich fügte die Beschreibung und Benutzer berichten, dass die App jetzt funktioniert.Ich denke, wo wird keine Eingabeaufforderung für Kontakte jedoch, es sei denn, dass ich tatsächlich eine im Code auslösen, die ich nicht (ich fire nur die Kalenderzugriffsaufforderung). – user826955

+0

Es gibt eine Diskussion darüber im Apple Entwicklerforum. https://forums.developer.apple.com/thread/7473 –

0

Sie sagten "nur ein paar Benutzer melden diese Art von Absturz". App stürzt ab, wenn der Benutzer Kalender/Kontakte/Kamera usw. in den Einstellungen deaktiviert hat. App und Code versuchen direkt auf die deaktivierte Option zuzugreifen. also vor der Präsentation immer die Berechtigung prüfen. hoffe das hilft dir.

+0

Die Benutzer berichten eindeutig, dass sie den Zugriff auf Kalender in den Telefoneinstellungen erlaubt haben, da dies das erste ist, was ich ihnen sage. Wenn Sie "EKCalendarChooser" ohne Erlaubnis starten, erhalten Sie eine Seite mit einem Sperrsymbol von "EventKitUI". Die Frage ist, warum * einige * Benutzer eine Beschreibung der Privatsphäre für ** Kontakte ** benötigen, wenn ich nur auf Kalender zugreife, sonst stürzt die App ab. – user826955

Verwandte Themen