xcode5 - porque - organizar fotos iphone 6
ios 8, cómo obtener todas las fotos usando ALAssetLibrary para reemplazar el álbum de cámara faltante. (2)
Tengo una aplicación que tiene un selector de imágenes personalizado que usa ALAssetLibrary para crear un selector de álbumes y un selector de imágenes. Hemos implementado un selector personalizado para que nuestros clientes seleccionen varias imágenes. Este selector de imágenes funciona muy bien en iOS 7 y muestra el álbum "Camera Roll" con TODAS las fotos del usuario. Sin embargo, cuando se ejecuta la misma aplicación en iOS 8, parece que Apple ha eliminado el álbum "Camera Roll" de la vista Álbumes y solo muestra "Fotos recientes". Por lo que puedo ver, la única forma de acceder a todas las fotos en iOS 8 es a través de la vista Colección (en la aplicación Fotos o en el nuevo selector incorporado). Desafortunadamente, no puedo usar Photokit en este momento porque todavía necesito dar soporte a mis usuarios de iOS 6 y 7. ¿Alguien sabe de una manera de obtener todos los activos y crear un álbum de rollo de cámara personalizado utilizando ALAssetLibrary cuando se ejecuta una aplicación iOS 7 en iOS 8 (compilada en Xcode 5)?
ACTUALIZAR
Bueno, como indiqué en mi publicación original anterior, inicialmente no pude usar el nuevo Marco de Fotos (PhotoKit). Sin embargo, recientemente cambiamos nuestras compilaciones a Xcode 6 y ahora puedo usar el marco de fotos para crear un grupo de todas las fotos (mire el ejemplo de código de ejemplo de WWDC ExampleappusingPhotoshamework para saber cómo hacerlo).
Sin embargo, por más poderoso que todos digan que PhotoKit es, le faltan algunas capacidades de filtrado cruciales. De hecho, no hay una manera fácil de filtrar fotos en el "PhotoStream" original usando un predicado con PHFetchResult. Solo puedes usar los derechos públicos. Afortunadamente, descubrí cómo filtrarlos usando la descripción de PHAsset. La clave de assetSource enumerada en la descripción es igual a 2 si la foto está en la galería de fotos del usuario. Entonces, utilicé una enumeración rápida de los resultados y moví todos los activos a una matriz que no estaba en PhotoStream usando un filtro simple stringInRange en la propiedad asset.description (buscando "assetSource = 2"). Puede que no sea la mejor solución, pero funciona por ahora, de modo que un usuario no ve duplicados de sus fotos tanto de la biblioteca local como de su galería de fotos. Al menos puedo presentar todas las fotos del cliente y permitir que mi selector de medios múltiples funcione tan cerca como la clase original que usó ALAssetLibrary.
Por supuesto, si alguien tiene una mejor solución usando un predicado, por favor lmk.
Muy bien, parece que fue solo un error, y iOS 8.0.2 lo solucionó (al menos para mí, ya que ahora puedo ver todas las fotos en el selector de imágenes).
Esta versión contiene mejoras y correcciones de errores, que incluyen:
[...] Soluciona un problema que impedía que algunas aplicaciones accedieran a fotos de la Biblioteca de fotos. [...]
Estoy teniendo el mismo problema. No se pudo encontrar la documentación adecuada que indique que la Biblioteca de recursos ya no tiene acceso a esas fotos, pero las Notas de la versión para iOS 8 dicen que puede usar PhotosFramework para eso. Aún no hemos probado.
El marco de Fotos (Photos.framework) proporciona nuevas API para trabajar con activos de fotos y videos, incluidos los activos de iCloud Photos, que son administrados por la aplicación Fotos. Este marco es una alternativa más capaz al marco de la Biblioteca de Activos.
¿Tal vez eso significa que tenemos que usarlo en iOS 8+?
ACTUALIZACIÓN: no poder acceder a todas las fotos es un error en iOS 8.0 y se corrigió en 8.0.2. Ver mi otra respuesta a continuación.