Obter uma captura de tela enquanto o aplicativo está em segundo plano? (APIs privadas permitidas)
Estou desenvolvendo um aplicativo de monitoramento para o iPad. Ele já usa estruturas privadas para enviar eventos artificiais e simular a entrada do usuário, enquanto meu aplicativo está em segundo plano e outro aplicativo em primeiro plano.
Agora meu problema é que eu preciso obter uma imagem do iPad como uma imagem programaticamente. Eu conheço o método UIGetScreenImage e também renderizando todas as visualizações na tela para obter a imagem. No entanto, UIGetScreenImage não pode ser chamado do plano de fundo. (Eu recebo um erro me dizendo que quando eu tento do fundo) E eu não posso processar os pontos de vista de outro aplicativo, desde que eu só conheço as visualizações do meu aplicativo.
OPÇÃO 1 Eu sou capaz de simular um clique na casa e bloquear as teclas, para o iPad gerar uma captura de tela. Depois, uso APIs privadas para acessar essa imagem do álbum de fotos, usando a [PLPhotoLibrary] (https://github.com/nst/iOS-Runtime-Headers/blob/3686717e107fa36a990fac20c30da2da9a25b698/PrivateFrameworks/PhotoLibrary.framework/PLPhotoLibrary.h) ,PLPhotoAlbum ePLPhoto.
<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>
O único problema com essa abordagem é que as imagens vão se acumular no álbum, enchendo a memória do iPad. Então, ou eu preciso de outro jeito, ou eu preciso de uma maneira de apagar essas fotos. Mas, quando eu chamo os métodos de exclusão no álbum de fotos e na biblioteca de fotos, recebo um "erro SQLITE 8 [tentativa de gravar no banco de dados readonly]
Qualquer sugestão sobre como conseguir essa captura de tela de uma maneira melhor seria apreciada.
Eu não vou enviar este aplicativo para a App Store. É para uso privado.