Screenshot erstellen, während sich die App im Hintergrund befindet? (Private APIs erlaubt)
Ich entwickle eine Überwachungsanwendung für das iPad. Es werden bereits private Frameworks verwendet, um künstliche Ereignisse zu senden und Benutzereingaben zu simulieren, während sich meine App im Hintergrund und eine andere App im Vordergrund befindet.
Jetzt ist mein Problem, ich muss programmgesteuert einen Screenshot vom iPad als Bild bekommen. Ich kenne die UIGetScreenImage-Methode und rendere auch jede Ansicht auf dem Bildschirm, um das Bild zu erhalten. UIGetScreenImage kann jedoch nicht vom Hintergrund aus aufgerufen werden. (Ich erhalte die Fehlermeldung, wenn ich es im Hintergrund versuche.) Und ich kann die Ansichten einer anderen App nicht rendern, da ich nur die Ansichten meiner App kenne.
OPTION 1 Ich kann einen Klick auf die Home- und Lock-Taste simulieren, damit das iPad einen Screenshot erstellt. Anschließend benutze ich private APIs, um mit der [PLPhotoLibrary] (https://github.com/nst/iOS-Runtime-Headers/blob/3686717e107fa36a990fac20c30da2da9a25b698/PrivateFrameworks/PhotoLibrary.framework/PLPLhoto) auf dieses Bild zuzugreifen. ,PLPhotoAlbum undPLPhoto.
<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>
Das einzige Problem bei diesem Ansatz ist, dass sich die Screenshots auf dem Album stapeln und den Speicher des iPads füllen. Entweder brauche ich einen anderen Weg, oder ich brauche einen Weg, um diese Bilder zu löschen. Wenn ich jedoch die Löschmethoden im Fotoalbum und in der Fotobibliothek aufrufe, wird der Fehler "SQLITE 8 [Versuch, in die schreibgeschützte Datenbank zu schreiben]" angezeigt.
Für Vorschläge, wie Sie diesen Screenshot besser gestalten können, sind wir dankbar.
Ich werde diese App nicht in den App Store hochladen. Es ist für den privaten Gebrauch.