it-swarm.com.de

__CRASHING_DUE_TO_PRIVACY_VIOLATION__

In Crashlytics sehe ich, dass Benutzer von iOS 10 diesen Absturz häufig erhalten. Wenn ich jedoch in Simulator mit iPhone 7/10.2 teste, kann ich den Absturz nicht reproduzieren. In meiner Liste habe ich bereits Zeichenketten für 

NSCalendarsUsageDescription, NSMicrophoneUsageDescription und NSPhotoLibraryUsageDescription.

Hier ist der Stacktrace von Crashlytics:

Crashed: com.Apple.root.default-qos
0  libsystem_kernel.dylib         0x183765d74 __abort_with_payload + 8
1  libsystem_kernel.dylib         0x18376249c <redacted> + 100
2  libsystem_kernel.dylib         0x1837624c8 abort_with_payload + 10
3  TCC                            0x1869d6328 __TCCAccessRequest_block_invoke_2.80 + 258
4  TCC                            0x1869d6224 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 702
5  TCC                            0x1869d9330 __tccd_send_block_invoke + 348
6  libxpc.dylib                   0x18386afcc _xpc_connection_reply_callout + 80
7  libxpc.dylib                   0x18386af3c _xpc_connection_call_reply + 40
8  libdispatch.dylib              0x1836221bc _dispatch_client_callout + 16
9  libdispatch.dylib              0x183630a4c _dispatch_queue_override_invoke + 732
10 libdispatch.dylib              0x18363234c _dispatch_root_queue_drain + 572
11 libdispatch.dylib              0x1836320ac _dispatch_worker_thread3 + 124
12 libsystem_pthread.dylib        0x18382b2a0 _pthread_wqthread + 1288
13 libsystem_pthread.dylib        0x18382ad8c start_wqthread + 4

Irgendein Hinweis, wie man das reproduzieren oder reparieren kann? Ich erlaube Benutzern den Zugriff auf Kontakte, aber ich werde nicht um Erlaubnis gefragt, wenn ich diese Funktion im Simulator teste. Wenn der Benutzer jedoch von meiner App aus auf die Kamera zugreift, fordert der Simulator die Aufforderung zur Erlaubnis an. Das lässt mich denken, dass für den Zugriff auf Kontakte keine Zeichenfolge erforderlich ist.

10
amit

Ich musste einen String für NSCameraUsageDescription in der Plist hinzufügen, da der Benutzer Fotos aufnehmen darf.

12
amit

Wenn Sie diese Abstürze auf dem iPhone X sehen und Touch ID/Face ID verwenden, kann dies an einem Mangel an NSFaceIDUsageDescription in Ihrer Info.plist liegen. Der Schlüssel wurde in iOS 11 hinzugefügt und scheint nach iOS 11.3 obligatorisch geworden zu sein, da ich nach der Veröffentlichung von iOS 11.3 einen Absturz des iPhone X sehe. Es ist vage von Apple dokumentiert hier :

NSFaceIDUsageDescription (String - iOS). Mit diesem Schlüssel können Sie beschreiben, warum Ihre App die Gesichts-ID verwendet.

Wichtig: Um die Privatsphäre der Benutzer zu schützen, muss eine iOS-App, die auf oder nach iOS 11 eine Verknüpfung herstellt und auf die Gesichts-ID zugreifen würde, wenn die Hardware dies unterstützt, die Absicht statisch erklären. Fügen Sie den NSFaceIDUsageDescription-Schlüssel in die Info.plist-Datei Ihrer App ein und geben Sie eine Verwendungszeichenfolge für diesen Schlüssel an. Wenn Ihre App versucht, ohne eine entsprechende Zweckzeichenfolge auf die Gesichts-ID zuzugreifen, wird die App möglicherweise beendet.

Dieser Schlüssel wird in iOS 11 und höher unterstützt.

Interessanterweise konnte ich den Absturz unter iOS 11.3 auf meinem Entwicklungs-iPhone X nicht reproduzieren. In Debug- oder TestFlight-Builds verhält es sich möglicherweise anders. Es lohnt sich immer noch, den Schlüssel hinzuzufügen, wenn Sie Face ID in Ihrer App verwenden, wenn wir der Dokumentation von Apple glauben.

21
Max Desiatov

Sie müssen Erlaubnis erteilen vom Benutzer für den Zugriff auf das Adressbuch eingeben.

  #import <AddressBookUI/AddressBookUI.h>

  // Request authorization to Address Book
  ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);

  if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
      if (granted) {
          // First time access has been granted, add the contact
          [self _addContactToAddressBook];
      } else {
          // User denied access
          // Display an alert telling user the contact could not be added
      }
    });
  }
  else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
    // The user has previously given access, add the contact
    [self _addContactToAddressBook];
  }
  else {
    // The user has previously denied access
    // Send an alert telling user to change privacy setting in settings app
  }

Es gibt ein Update für iOS 9.0 und höher:

Von der Apple-Website:

Wichtig Das Framework der Adressbuch-Benutzeroberfläche ist in iOS 9 veraltet. Verwenden Sie stattdessen die in ContactsUI framework definierten APIs. Weitere Informationen finden Sie unter ContactsUI.

1
Nirmalsinh

Lass uns zwei Dinge verstehen. 

In der plist-Datei befinden sich so viele Datenschutzschlüssel, wie z. B. die Verwendung der Kamera, die Verwendung des Verwendungsorts, die Verwendung der Gesichts-ID usw. Wenn Sie einen der Schlüssel vermissen und versuchen, diese Funktionen zu verwenden, werden Sie abstürzen. Verwenden Sie daher die Tasten und Beschreibung zum Absturz von Avodierungen.

Die zweite Sache ist, besonders für NSPhotoLibraryUsageDescription, wenn Sie diesen Schlüssel von über iOS 6 und unter iOS 11.3 verwenden, werden Sie keinen Absturz erhalten, sondern nach iOS 11.3 und höher Sie müssen einen weiteren Schlüssel hinzufügen, nämlich NSPhotoLibraryAddUsageDescription.

Gleichzeitig können Sie beide Tasten verwenden, wenn Ihre App auf iOS 8 oder 9 oder höher oder höher mit iOS 11.3 oder höher installiert ist.

Referenz für alle Schlüssel

In meinem Fall habe ich den gleichen Absturzbericht erhalten, als ich versucht habe, Dateien mit einem UIDocumentPickerViewController zu lesen, ohne zuvor startAccessingSecurityScopedResource() für das zurückgegebene URL aufzurufen.

0
m_katsifarakis

Ich hatte das gleiche Problem mit einem iPhone X, auf dem iOS 14 ausgeführt wurde. Das Problem wurde durch das Hinzufügen von NSPhotoLibraryAddUsageDescription zu meiner Datei info.plist behoben. 

laut diesem forum: https://forums.developer.Apple.com/thread/100732

0