permission nscamerausagedescription swift ios10 xcode8 uiactivityviewcontroller save-image

swift - nscamerausagedescription - phphotolibrary



La aplicaciĆ³n iOS 10 se bloquea al intentar guardar una imagen en la biblioteca de fotos (4)

Agregue nuevos registros en su nuevo archivo InfoPlist.strings.

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

UPD: tecla iOS 11

Estoy intentando guardar una imagen en la biblioteca de fotos en Swift 3 (estoy trabajando con Xcode 8).

Código ViewController:

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) }

Cuando ejecuto la aplicación, y hago clic en el botón para tomar la captura de pantalla (convirtiéndola en imagen, ..., todo funciona perfectamente), la aplicación solicita permiso para acceder a la biblioteca de fotos, presiono el botón "Aceptar", y luego la aplicación se bloquea. La imagen no se guarda en la biblioteca de fotos.

La única pista que obtengo de Xcode es la siguiente:

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>)

¿Alguien tiene alguna idea de cómo solucionar este problema?

¡Gracias por adelantado!

ACTUALIZAR

Compartir la imagen en las redes sociales funciona bien, por lo que el problema se especifica para guardar la imagen en la biblioteca de fotos.



Encontré al culpable en mi caso particular. Estamos utilizando Leanplum para análisis y notificaciones push. El método Leanplum.syncResourcesAsync estaba causando el Leanplum.syncResourcesAsync la apertura de la biblioteca de fotos. Me tomó un par de días encontrarlo, ya que no sabía que Leanplum estaba haciendo algo para conectar a la biblioteca de fotos de un usuario ... lo que en sí mismo es preocupante.

No estábamos usando la funcionalidad que trae este método en particular, así que solo pudimos eliminar la llamada al método y la biblioteca de fotos dejó de fallar.


Intenta forzar permisos de solicitud como este:

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

No olvides import Photos . Espero que esto ayude.