it-swarm.com.de

die iOS 10-App stürzt ab, wenn Sie versuchen, ein Bild in der Fotobibliothek zu speichern

Ich versuche, ein Bild in der Fotobibliothek in Swift 3 zu speichern (ich arbeite mit Xcode 8).

ViewController Code:

func shareImage(image: UIImage) {
    let items = [image]

    var activityVC: UIActivityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
    let excludeActivities: [UIActivityType] = [UIActivityType.airDrop,
                                               UIActivityType.assignToContact,
                                               UIActivityType.addToReadingList,
                                               UIActivityType.copyToPasteboard]

    activityVC.excludedActivityTypes = excludeActivities

    self.present(activityVC, animated: true, completion: nil)
}

Wenn ich die Anwendung starte und auf die Schaltfläche klicke, um den Screenshot zu erstellen (in ein Bild umzuwandeln, ... das funktioniert alles einwandfrei), fragt die App nach der Erlaubnis, auf die Fotobibliothek zuzugreifen. und dann stürzt die app ab. Das Bild wird nicht in der Fotobibliothek gespeichert.

Der einzige Hinweis, den ich von Xcode bekomme, ist folgender:

2016-09-28 11:24:27.216043 Ajax Kids[4143:1545362] [error] error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///var/mobile/Media/PhotoData/Photos.sqlite?readonly_shm=1 options:{
NSPersistentStoreFileProtectionKey = NSFileProtectionCompleteUntilFirstUserAuthentication;
NSReadOnlyPersistentStoreOption = 1;
NSSQLitePersistWALOption = 1;
NSSQLitePragmasOption =     {
    "journal_mode" = WAL;
};
} ... returned error Error Domain=NSCocoaErrorDomain Code=256 "The file couldn’t be opened." UserInfo={reason=Failed to access file: 1} with userInfo dictionary {
reason = "Failed to access file: 1";
}
2016-09-28 11:24:27.216433 Ajax Kids[4143:1545362] [Migration] Unexpected error opening persistent store <private>, cannot attempt migration <private>)
2016-09-28 11:24:27.216568 Ajax Kids[4143:1545362] [Migration] Failed to open store <private>.  Requires update via assetsd (256: <private>)

Hat jemand eine Idee, wie man das beheben kann?

Danke im Voraus! 

UPDATE

Das Freigeben des Bildes auf Social Media funktioniert problemlos. Daher wird das Problem beim Speichern des Bildes in der Fotobibliothek angegeben.

16
Charlotte1993

Fügen Sie Ihrer neuen InfoPlist.strings-Datei neue Datensätze hinzu.

<key>NSPhotoLibraryAddUsageDescription</key>
<string>$(PRODUCT_NAME)</string>

UPD: iOS 11-Taste

38
Andrey Oshev

Unter iOS 11 gibt es eine neue Eigenschaft namens NSPhotoLibraryAddUsageDescription, ähnlich wie NSPhotoLibraryUsageDescription. Siehe https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

12
Tiois

Versuchen Sie, Anforderungsberechtigungen wie folgt zu erzwingen:

PHPhotoLibrary.requestAuthorization { status in
  if status == .authorized {
    //do things
  }
}

import Photos nicht vergessen Hoffe das hilft.

1
Andrey M.

Ich habe den Täter in meinem speziellen Fall gefunden. Wir verwenden Leanplum für Analysen und Push-Benachrichtigungen. Die Leanplum.syncResourcesAsync-Methode führte zum Absturz der Öffnung der Fotobibliothek. Es dauerte ein paar Tage, bis ich herausfand, da ich nicht wusste, dass Leanplum alles unternahm, um sich in die Fotobibliothek eines Benutzers einzuhaken.

Wir haben nicht die Funktionalität dieser speziellen Methode verwendet. Daher konnten Sie einfach den Methodenaufruf entfernen und die Fotobibliothek stürzte ab.

0
SeanR