2010-01-23 15 views
18

Gibt es eine Benachrichtigung oder einen anderen Mechanismus, um darüber informiert zu werden, dass der Benutzer mit den Home/Power-Tasten einen Screenshot erstellt?Benachrichtigung oder Erkennung eines Screenshots?

Ich habe Threads über das Deaktivieren von Screenshots gesehen, aber das ist nicht das, was ich suche.

Ich habe einen Fotografen Kunden, dass seine Werke durch Benutzer Screenshots kopiert werden betroffen ist unter und ich dachte, dass, wenn es eine Gelegenheit, ein Wasserzeichen über das Bild zu legen, bevor der Screenshot gemacht, dass seine Befürchtungen zerstreuen würde .

+0

Sie könnten alle Bilder die ganze Zeit mit Wasserzeichen versehen. Wasserzeichen müssen nicht menschlich sein. –

+0

Ja, ich weiß, wir könnten diesen Weg gehen, aber die Idee wäre, das Bild visuell zu stören. –

+0

Wozu dient diese Benachrichtigung? Ich meine, wen würdest du informieren, und was könnten sie mit dieser Information machen? Ist dies im Web oder in einem geschlossenen Netzwerk auf mobilen Safari? Oder in einer bestimmten Anwendung? – conorgriffin

Antwort

2

Ich bezweifle, dass dies jemals ein Ding und aus gutem Grund sein wird. Sie sollten nicht in der Lage sein, Screenshotfunktionen von Ihren Benutzern zu entfernen.

+0

UIApplication User hat Take Screenshot Benachrichtigung kann iOS 7+ verwendet werden. –

5

Die PictureWasTakenNotification Darwin-Benachrichtigung wird gesendet, wenn der Benutzer einen Screenshot erstellt. Dies wird jedoch gesendet nach der Screenshot erstellt wird.

(keine Benachrichtigungen genommen wurde der Screenshot vor gesendet werden.)

+0

Docs für Darwin-Benachrichtigungen: http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Conceptual/MacOSXNotifcationOv/DarwinNotificationConcepts/DarwinNotificationConcepts.html – Dimitris

+0

Weder diese Benachrichtigung noch CameraImageFullSizeImageReadyNotification scheint im iPhone SDK zu sein. Egal, wie Sie darauf hinweisen, ist es nicht ideal für mich, dass es abgefeuert wird, nachdem der Screenshot aufgenommen wurde (wie beide Benachrichtigungen sind) –

+11

Nur als Referenz ist diese Funktionalität seit iOS 4.0 verloren. –

6

Hier ist eine Art und Weise, die, obwohl es ich bin sicher, dass gegen Benutzeroberfläche Richtlinien gehen vollständig funktionieren könnte. Wenn Sie den Benutzer zwingen, seinen Finger auf dem Bildschirm zu haben, damit das Bild angezeigt wird, dann glaube ich nicht, dass er Screenshots erstellen kann. Denn sobald Sie die Home + Sperrtaste drücken, um den Screenshot tatsächlich zu erstellen, scheint sich der Bildschirm so zu verhalten, als ob keine Finger ihn berühren würden. Versuchen Sie, einen Screenshot zu erstellen, während Sie zwischen den Startbildschirmen wechseln, um zu sehen, was ich meine.

Keine perfekte Lösung, aber Sie können es vielleicht in Ihr App-Design einbauen, wenn Sie wirklich clever sind, ohne dass es zu sehr von der Benutzererfahrung ablenkt (eine harte Herausforderung!). Nichtsdestotrotz glaube ich, dass Sie damit Kunstwerke/Fotos anzeigen können, ohne dass Benutzer Screenshots machen können.

+0

Ich dachte daran und versuchte es mit iphone.appleinsider.com, dessen bizarre Benutzeroberfläche UI-Chrom zeigt, wenn Sie den Bildschirm NICHT berühren. Während ich einen Finger auf den Bildschirm halte (so dass das Webview die Berührung verfolgt), habe ich einen Screenshot gemacht, und du hast recht, der Screenshot hat den Screenshot aufgenommen, als ob die App keine Berührung verfolgt hätte. Dennoch glaube ich fest daran, dass die Beeinträchtigung des Betriebssystem-Features gleichbedeutend damit ist, es zu deaktivieren. Aber ich denke, ich sollte meinem Klienten darüber berichten. –

+0

Danke, übrigens. –

+0

Sie haben diesen Effekt in iOS 7 deaktiviert, wobei er weiterhin so wirkt, als wäre Ihr Finger auf dem Bildschirm, wenn Sie den Screenshot machen. Dies ist eine la SnapChat-Funktionalität. –

4

Seit iOS 7 existiert die UIApplicationUserDidTakeScreenshotNotification. So etwas zu tun, wie diese sollten die Screenshots erkennen:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDidTakeScreenshot) name:UIApplicationUserDidTakeScreenshotNotification object:nil]; 
} 

- (void)userDidTakeScreenshot { 
    // Screenshot taken, act accordingly. 
} 

Schließlich vergessen Sie nicht, den Beobachter zu entfernen:

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationUserDidTakeScreenshotNotification object:nil]; 
} 
+5

Was tatsächlich benötigt wird, ist etwas, das die Benachrichtigung auslösen würde, BEVOR die Aufnahme gemacht wird. Mit anderen Worten, die "... UserWillTake ..." Version dieser Benachrichtigung –

+0

Ja, es gibt keine Möglichkeit, den Screenshot zu verhindern ... – txulu

+0

Wie das Bild zu entfernen, nachdem Benutzer den Bildschirm schießen? – lee

1

, was wirklich benötigt wird, ist eine Meldung, die vor dem eigentlichen Screen-Capture gesendet wird, geschieht . Eine Delegate-Methode oder ein anderes Mittel, um der App eine Möglichkeit zum Screenshot-in-Flight zu geben, um den Inhalt neu zu zeichnen, bevor der Zugriff erfolgt.

Und es gibt keinen.