2017-06-17 1 views
-1

Je souhaite prendre des captures d'écran de toute application en cours d'exécution, pendant que mon application est en arrière-plan.Prendre une capture d'écran lorsque l'application est fermée

J'ai défini un temporisateur dans la méthode applicationDidEnterBackground.

func applicationDidEnterBackground(_ application: UIApplication) { 
    var timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(self.takeSS), userInfo: nil, repeats: true) 
} 

Et j'ai créé une méthode appelée takeSS

func takeSS(){ 

    UIGraphicsBeginImageContextWithOptions((window?.bounds.size)!, false, UIScreen.main.scale) 

    self.window?.drawHierarchy(in: (window?.bounds)!, afterScreenUpdates: true) 
    var image:UIImage = UIGraphicsGetImageFromCurrentImageContext()! 


    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 

} 

Il faut tirer de l'écran toutes les 10 secondes et enregistrez-le sur le rouleau de la caméra. Mais les captures d'écran sont des photos blanches et vierges. Y at-il un moyen de prendre une capture d'écran lorsque l'application est fermée.

Merci.

+0

Seuls quelques types de traitement en arrière-plan sont autorisés - https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/ TP40007072-CH4-SW4 - et ce n'est pas l'un d'entre eux. Vous demandez essentiellement comment une application en sandbox peut espionner d'autres applications en bac à sable. – Ssswift

Répondre

3

Vous ne pouvez pas faire cela. Apple a bloqué l'API dont vous avez besoin pour prendre une capture d'écran de tout autre contenu que celui de votre application dans iOS 9, pour des raisons de sécurité. J'ai beaucoup étudié cela pour une entreprise pour laquelle j'ai travaillé, et j'ai trouvé que c'était impossible à moins que l'appareil ne soit jeté.