141 votes

Détection iOS de capture d'écran?

L'application Snapchat , sur l'App Store, est une application qui vous permet de partager des photos avec une autodestruction. Vous ne pouvez voir les images que pendant X secondes. Si vous essayez de prendre une capture d'écran alors que la photo est affichée à l'aide du combo touche alimentation-maison, cela indiquera à l'expéditeur que vous avez essayé de prendre une capture d'écran.

Quelle partie du SDK vous permet de détecter que l'utilisateur est en train de prendre une capture d'écran? Je ne savais pas que c'était possible.

361voto

0x7fffffff Points 40133

Comme d'iOS 7 autres réponses sont n'est plus vrai. Apple a fait en sorte touchesCancelled:withEvent: n'est plus appelé lorsque l'utilisateur prend une capture d'écran.

Ce serait un moyen efficace de briser Snapchat entièrement, de sorte qu'un couple bêtas dans une nouvelle solution a été ajouté. Maintenant, la solution est aussi simple que d'utiliser NSNotificationCenter pour ajouter un observateur à UIApplicationUserDidTakeScreenshotnotification.

Voici un exemple:

Objective-C

NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification
                                                  object:nil
                                                   queue:mainQueue
                                              usingBlock:^(NSNotification *note) {
                                                 // executes after screenshot
                                              }];

Swift

let mainQueue = NSOperationQueue.mainQueue()
NSNotificationCenter.defaultCenter().addObserverForName(UIApplicationUserDidTakeScreenshotNotification,
    object: nil,
    queue: mainQueue) { notification in
        // executes after screenshot
}

25voto

portforwardpodcast Points 2044

J'ai trouvé la réponse !! Faire une capture d'écran interrompt les contacts qui se trouvent sur l'écran. C'est pourquoi Snapchat exige une tenue pour voir la photo. Référence: http://tumblr.jeremyjohnstone.com/post/38503925370/how-to-detect-screenshots-on-ios-like-like-sn

1voto

iDev Points 16260

Regarde comme il n'existe pas de moyen direct pour ce faire, afin de détecter si l'utilisateur a tapé sur home + power button. Conformément à cela, il a été possible plus tôt par à l'aide de darwin de notification, mais il ne marche plus. Depuis snapchat est déjà de le faire, je pense qu'ils sont la vérification de l'iPhone album photo pour détecter si il y a une nouvelle photo ont été ajoutés entre 10 secondes, et d'une certaine manière, ils sont en comparant avec l'image actuellement affichée. Peut-être certains de traitement de l'image est fait pour cette comparaison. Juste une pensée, probablement, vous pouvez essayer de développer cette pour le faire fonctionner. Vérifiez ce pour plus de détails.

Edit:

Dirait qu'ils pourraient être la détection de la UITouch annuler l'événement(capture d'Écran annule touche) et en montrant ce message d'erreur à l'utilisateur que par ce blog: Comment détecter des captures d'écran sur iOS (comme SnapChat)

Dans ce cas, vous pouvez utiliser – touchesCancelled:withEvent: méthode pour détecter la UITouch annulation de détecter cette. Vous pouvez supprimer l'image de cette méthode du délégué et d'afficher une alerte approprié à l'utilisateur.

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesCancelled:touches withEvent:event];

    NSLog(@"Touches cancelled");

    [self.imageView removeFromSuperView]; //and show an alert to the user
}

0voto

Chiquis Points 5891

Il n'est plus possible, il a été possible dans l'iOS 4.0, car il y avait un darwin notification comme indiqué ici:

Comment détecter si l'utilisateur fait une capture d'écran avec home+power en iOS?

et ici

La Notification ou de la détection de capture d'écran?

Edit:

Que cette réponse vous suggère de vérifier régulièrement l'utilisateur des photos pour voir si une nouvelle image (qui correspond normalement pris en capture d'écran) est apparu)

iPhone: capture d'écran

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X