Pobierz zrzut ekranu, gdy aplikacja jest w tle? (Dozwolone prywatne interfejsy API)

Opracowuję aplikację monitorującą na iPada. Używa już prywatnych ram do wysyłania sztucznych zdarzeń i symulowania danych wprowadzanych przez użytkownika, podczas gdy moja aplikacja jest w tle, a inna aplikacja na pierwszym planie.

Teraz mam problem, muszę programowo pobrać zrzut ekranu iPada. Znam metodę UIGetScreenImage, a także renderuję każdy widok na ekranie, aby uzyskać obraz. Nie można jednak wywołać UIGetScreenImage z tła. (Dostaję błąd informujący mnie, że kiedy próbuję z tła) I nie mogę renderować widoków z innej aplikacji, ponieważ znam tylko widoki mojej aplikacji.

OPCJA 1 Jestem w stanie zasymulować kliknięcie klawiszy domu i blokady, aby iPad wygenerował zrzut ekranu. Następnie używam prywatnych interfejsów API, aby uzyskać dostęp do tego obrazu z albumu fotograficznego, używając [PLPhotoLibrary] (https://github.com/nst/iOS-Runtime-Headers/blob/3686717e107fa36a990fac20c30da2da9a25b698/PrivateFrameworks/PhotoLibrary.framework/PLPhotoLibrary.h) ,PLPhotoAlbum iPLPhoto.

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

Jedynym problemem związanym z tym podejściem jest to, że zrzuty ekranu będą się układać na jednym albumie, wypełniając pamięć iPada. Więc albo potrzebuję innego sposobu, albo potrzebuję sposobu usunięcia tych zdjęć. Ale kiedy nazywam metody usuwania w albumie fotograficznym i bibliotece zdjęć, otrzymuję „błąd SQLITE 8 [próba zapisu do bazy danych tylko do odczytu]

Wszelkie sugestie dotyczące lepszego sposobu wykonania tego zrzutu ekranu będą mile widziane.

Nie będę przesyłać tej aplikacji do sklepu App Store. Jest do użytku prywatnego.

questionAnswers(4)

yourAnswerToTheQuestion