Ich habe den folgenden Fehler festgestellt (iOS 11):
Diese App ist abgestürzt, weil versucht wurde, auf vertrauliche Daten zuzugreifen Daten ohne Verwendungsbeschreibung. Die Info.plist der App muss .__ enthalten. ein
NSPhotoLibraryAddUsageDescription
-Schlüssel mit einem Zeichenfolgewert Erklären Sie dem Benutzer, wie die App diese Daten verwendet.
Beachten Sie, dass die Anwendung info.plist zwar NSPhotoLibraryUsageDescription
enthält, aber dennoch abstürzt. Warum?
Beachten Sie, dass die info.plist der Anwendung zwar
NSPhotoLibraryUsageDescription
enthält, aber trotzdem abstürzt. Warum?
Ich denke, es gibt ein Missverständnis beim Vergleich von NSPhotoLibraryUsageDescription
und NSPhotoLibraryAddUsageDescription
, wie in Schlüsselreferenz der Informationseigenschaftenliste dokumentiert:
NSPhotoLibraryUsageDescription:
Mit diesem Schlüssel können Sie den Grund beschreiben, warum Ihre App auf die Fotobibliothek des Benutzers zugreift . Wenn das System den Benutzer auffordert, den Zugriff zuzulassen, wird diese Zeichenfolge als Teil der Warnung angezeigt.
Dies hängt damit zusammen, dass die App auf die Gerätefotobibliothek zugreifen (abrufen) kann.
NSPhotoLibraryAddUsageDescription:
Mit diesem Schlüssel können Sie den Grund beschreiben, warum Ihre App schreibgeschützten Zugriff auf die Fotobibliothek des Benutzers sucht . Wenn das System den Benutzer auffordert, den Zugriff zuzulassen, wird diese Zeichenfolge als Teil der Warnung angezeigt.
Dies hängt damit zusammen, dass die App Fotos in die Gerätefotobibliothek schreiben (hinzufügen) kann.
Um diesen Absturz zu beheben, müssen Sie NSPhotoLibraryAddUsageDescription
in die plist-Datei der Anwendung einfügen:
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Our application needs permission to write photos...</string>
Als Eigenschaftslistenansicht:
In der obigen Antwort ist ein Tippfehler enthalten. Der richtige Eintrag in plist sollte wie folgt aussehen
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) needs permission to access photos on your device</string>