¿Puedo detectar si se tomó una foto ALAsset importada a través de la captura de pantalla?

Tengo un imagePickerController que se utiliza para importar fotos de la biblioteca en mi aplicación.

Cuando ALAssetsLibraryAssetForURLResultBlock en ALAssetsLibraryAssetForURLResultBlock , estoy tratando de averiguar si el ALAsset que tengo en el bloque es una foto tomada como una captura de pantalla o es una foto "genuina" tomada por la camera.

Intenté revisar los dictionarys de metadatos de ALAsset pero no pude encontrar ningún indicador / indicación que pudiera encajar.

¿Alguien tiene alguna idea?

Para la captura de pantalla, su UTI siempre es un "public.png" y el mismo tamaño que la pantalla (asegúrese de que ha multiplicado [UIScreen scale] en los límites de pantalla de ancho y alto), solo necesita verificar estos 2 metadatos, puede identificar fácilmente la captura de pantalla.

Agregue MetaData a UIImage mientras guarda en Photo Library . Los mismos metadatos de UIImage se pueden usar para saber si su captura de pantalla o no.

Refiera Save_Photo_to_Album_with_Metadata

Bueno, estaba investigando y experimentando … y la solución más cercana que encontré se basa en el hecho de que las capturas de pantalla de iPhone no producen loggings EXIF ​​(mientras que todas las demás fotos generadas sí las generan).

Por lo tanto, una vez que se selecciona una foto en el selector, estoy comprobando si los metadatos de la foto consisten en un logging EXIF ​​y, si no es así, concluyo que la foto fue una captura de pantalla.

Encontré que es la solución "tan buena como sea" por ahora, aunque no es una solución oficial.

Aclamaciones.