Obtener una captura de pantalla mientras la aplicación está en segundo plano? (APIs privadas permitidas)
Estoy desarrollando una aplicación de monitoreo para el iPad. Ya usa marcos privados para enviar eventos artificiales y simular la entrada del usuario, mientras que mi aplicación está en segundo plano y otra aplicación en primer plano.
Ahora mi problema es que necesito obtener una captura de pantalla del iPad como una imagen programática. Conozco el método UIGetScreenImage y también renderizo cada vista en la pantalla para obtener la imagen. Sin embargo, no se puede llamar a UIGetScreenImage desde el fondo. (Recibo un error que me dice que cuando lo intento desde el fondo) Y no puedo representar las vistas desde otra aplicación, ya que solo conozco las vistas de mi aplicación.
OPCIÓN 1 Puedo simular un clic en las teclas de inicio y de bloqueo para que el iPad genere una captura de pantalla. Luego, utilizo las API privadas para acceder a esta imagen desde el álbum de fotos, utilizando la [PLPhotoLibrary] (https://github.com/nst/iOS-Runtime-Headers/blob/3686717e107fa36a990faccel ,PLPhotoAlbum yPLPhoto.
<code>id lib = [PLPhotoLibrary sharedPhotoLibrary]; id allPhotosAlbum = [lib allPhotosAlbum]; id contents = [lib albumContents]; id lastPhoto = [contents objectAtIndex:[contents count] -1]; UIImage *screenshot = [lastPhoto newFullSizeImage]; </code>
El único problema con este enfoque es que las capturas de pantalla se acumularán en el álbum, llenando la memoria del iPad. Entonces, o necesito otra forma, o necesito una manera de borrar estas imágenes. Pero, cuando llamo a los métodos de eliminación en el álbum de fotos y la biblioteca de fotos, obtengo un "error SQLITE 8 [intento de escribir en la base de datos de solo lectura]
Cualquier sugerencia sobre cómo lograr esta captura de pantalla de una manera mejor sería apreciada.
No voy a subir esta aplicación a la tienda de aplicaciones. Es para uso privado.