2010-01-23 13 views
18

¿Hay alguna notificación u otro mecanismo de notificación de que el usuario está tomando una captura de pantalla con los botones de inicio/encendido?¿Se está realizando una notificación o detección de una captura de pantalla?

He visto hilos sobre querer deshabilitar la toma de capturas de pantalla, pero eso no es lo que estoy buscando hacer.

Tengo un cliente fotógrafo preocupado de que sus trabajos sean copiados por los usuarios que toman capturas de pantalla y pensé que si había una oportunidad de poner una marca de agua en la imagen antes de que se tomara la captura de pantalla, eso aliviaría sus miedos .

+0

Puedes filtrar todas las imágenes con marca de agua todo el tiempo. Las marcas de agua no tienen que ser perceptibles por los humanos. –

+0

Sí, sé que podríamos ir por esa ruta, pero la idea sería * interferir * visualmente con la imagen. –

+0

¿Cuál es el propósito de esta notificación que está buscando? Quiero decir, ¿a quién informarías y qué podrían hacer con esa información? ¿Esto está en la web o dentro de una red cerrada en el safari móvil? ¿O dentro de una aplicación específica? – conorgriffin

Respuesta

2

Dudo que esto sea nunca una cosa y por una buena razón. No debería ser capaz de eliminar la funcionalidad de captura de pantalla de sus usuarios.

+0

UIApplication User Did Take Screenshot Notification se puede usar iOS 7+. –

5

El PictureWasTakenNotification notificación de Darwin se enviará cuando el usuario tome una captura de pantalla. Sin embargo, esto se envía después de se toma la captura de pantalla.

(No hay notificaciones se enviarán antes fue tomada la imagen.)

+0

Docs for Darwin Notifications: http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Conceptual/MacOSXNotifcationOv/DarwinNotificationConcepts/DarwinNotificationConcepts.html – Dimitris

+0

Ni esa notificación ni CameraImageFullSizeImageReadyNotification parecen estar en el iPhone SDK. Sin embargo, como usted señala, no es ideal para mí que se dispare después de que se toma la captura de pantalla (ya que ambas notificaciones son) –

+11

Solo como referencia, esta funcionalidad se ha perdido desde iOS 4.0. –

6

Aquí está una manera que podría funcionar, aunque será totalmente ir en contra de las directrices de interfaz de usuario, estoy seguro. Si fuerza al usuario a colocar el dedo en la pantalla para que se muestre la imagen, entonces no creo que puedan crear capturas de pantalla. Porque tan pronto como presiona las teclas de inicio + bloqueo para tomar la captura de pantalla, la pantalla parece comportarse como si no hubiera dedos tocándola. Intente tomar una captura de pantalla mientras se mueve entre las pantallas de inicio para ver a qué me refiero.

No es una solución perfecta de ninguna manera pero es posible que pueda trabajar en el diseño de su aplicación si es realmente inteligente sin restarle demasiado a la experiencia del usuario (¡un desafío difícil!). Sin embargo, creo que esto puede permitirle mostrar obras de arte/fotos sin permitir que los usuarios tomen capturas de pantalla.

+0

Pensé en esto y lo probé con iphone.appleinsider.com, cuya extraña interfaz muestra UI cromo cuando NO estás tocando la pantalla. Mientras mantuve presionado un dedo en la pantalla (para que Webview estuviera rastreando el toque), tomé una captura de pantalla, y tiene razón, la captura de pantalla tomó la fotografía como si la aplicación no estuviera rastreando un toque. Aún así, creo firmemente que interferir con la característica del sistema operativo equivale a deshabilitarla. Pero supongo que debería informar a mi cliente al respecto. –

+0

Gracias, por cierto. –

+0

Deshabilitaron ese efecto en iOS 7 por lo que continúa actuando como si tu dedo estuviera en la pantalla al tomar la captura de pantalla. Esta es una funcionalidad la SnapChat. –

4

Desde iOS 7 existe el UIApplicationUserDidTakeScreenshotNotification. Así que hacer algo como esto debe detectar las capturas de pantalla:

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

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

Por último, no se olvide de quitar el observador:

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

Lo que realmente se necesita es algo que desate la notificación ANTES de que se tome la foto. En otras palabras, la versión "... UserWillTake ..." de esa notificación –

+0

Sí, no hay forma de evitar la captura de pantalla ... – txulu

+0

¿Cómo eliminar la imagen después de que los usuarios toman la captura de pantalla? – lee

1

Lo que realmente se necesita es una notificación que se envía antes de la captura de pantalla real ocurre . Un método de delegado u otro medio para darle a la aplicación una oportunidad de captura de pantalla en vuelo para volver a dibujar su contenido antes de que suceda.

Y no hay una.

Cuestiones relacionadas