2013-09-08 14 views
13

È necessario impedire la cattura dello schermo da parte degli utenti della mia app, per motivi di sicurezza. I contenuti che visualizzo sono confidenziali e non devono essere copiati sul dispositivo. Ho visto one answer on Stack Overflow, but for Android.Prevenzione della cattura dello schermo in un'app per iOS

E 'possibile in qualche modo in iOS impedire l'acquisizione dello schermo?

Mentre catturare lo screenshot nella galleria con il semplice clic di alcuni pulsanti è una funzionalità molto utile per l'utente, c'è anche un obbligo limitato di impedirlo. Qualche indicazione?

+3

È un'azione a livello di sistema operativo, quindi non penso che sarebbe possibile, a meno che non si stia eseguendo su un dispositivo jailbroken. Potrei sbagliarmi però. – mash

+2

Non penso che tu possa impedirlo su un dispositivo non jailbroken, ma puoi rilevarlo - http: // stackoverflow.it/questions/13484516/ios-detection-of-screenshot –

risposta

10

C'è il no modo per evitare di prendere screenshot interamente. Puoi fare ciò che fa Snapchat, richiedendo all'utente di toccare lo schermo per visualizzare qualsiasi informazione tu stia visualizzando. Ciò è dovuto al fatto che lo screenshot di sistema interrompe l'evento. Non è un metodo perfetto e non puoi impedire agli utenti di prendere screenshot il 100% delle volte.

Maggiori dettagli: iOS Detection of Screenshot?

+0

Non uso Snapchat quindi non posso testarlo adesso, ma cosa succede se colleghi l'iPhone a un Mac e fai uno screenshot tramite Xcode? (dito sullo schermo per tutto il tempo). Sono abbastanza sicuro che non ci sia un modo programmatico per catturare tale cattura dello schermo ... (per non parlare di _prevent_) ... –

9

L'altro problema è la cattura dello schermo in wetware - come in una persona cattura dello schermo con un altro dispositivo, ad esempio una fotocamera o un altro telefono. Anche se lo prevedi nell'app, è impossibile impedire a qualcuno di scattare una foto dello schermo

+0

Questo è un punto molto interessante. Speriamo che l'intrinseco degrado dei dati sia abbastanza dissuasivo nella maggior parte delle applicazioni (ad esempio, audio e video DRM), ma di nuovo avete persone con schermi video cinematografici a nastro ... –

+0

buona risposta ... anche questo è un problema –

+0

punto +1. – Suryakant

6

Una soluzione possibile è Yovo. Ho appena visto questa demo che mi ha fatto impazzire!

http://vimeo.com/108244650

è un modo estremamente intelligente per oscurare schermata, e persino gestisce parzialmente caso "wetware" allevato da JimBobBennet.

Si imposta una maschera di sfocatura sopra l'immagine (il modello di recinzione viene utilizzato nell'app, ma qualsiasi modello lo farà) e lo si sposta come una velocità elevata. Se l'utente prende uno screenshot, ottiene l'immagine fissa di un singolo fotogramma, che di per sé è oscurato.

Utilizza il fatto che il nostro cervello può assemblare un'immagine dietro una maschera in movimento - simile a come è possibile "vedere" le pale di una ventola in movimento.

Per acquisire l'immagine, è necessario registrarne un video, il che è piuttosto complicato.

L'unico problema qui potrebbe essere IP - Yovo sostiene di avere 300+ patents ...

+1

Le persone in quella schermata mi sembravano abbastanza identificabili. Questa è solo un'illusione minore della privacy. – jeffjv

+0

Sì, l'efficacia dipende dal caso d'uso. In una situazione in cui si desidera proteggere da un utente che ruba contenuti, questo renderà il compito noioso e noioso, il che potrebbe essere un deterrente sufficientemente appropriato. –

2

Ho sentito che si può ascoltare per un evento screenshot utilizzando UIApplicationUserDidTakeScreenshotNotification

NSOperationQueue *mainQueue = [NSOperationQueue mainQueue]; 
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification 
                object:nil 
                queue:mainQueue 
               usingBlock:^(NSNotification *note) { 
                // executes after screenshot 
                NSLog(@"Screenshot Detection : %@", note); 
                UIAlertView *screenshotAlert = [[UIAlertView alloc] initWithTitle:@"Screenshot Detected" message:@"Oh Oh no screenshot bruhh" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
                [screenshotAlert show]; 
               }]; 

E se fosse possibile subito cancella il file screenshot quando è stato creato?

+1

Come cancelleresti il ​​file? Non è possibile AFAIK. – BadmintonCat

+0

Non ho molta familiarità con lo sviluppo di ios, ma su Android se l'utente dà accesso alla galleria è possibile creare e anche eliminare i file da lì. Quindi ho pensato che potevi cancellare immediatamente lo screenshot preso. – lxknvlk

2

È passato un po 'di tempo, ma mi sono imbattuto in ScreenShieldKit, una tecnologia in attesa di brevetto utilizzata dall'app di messaggistica Confide. Quello che fa è che permette all'utente di prendere screenshot, ma il contenuto è vuoto nell'immagine finale. Di recente hanno rilasciato la versione iOS.

Problemi correlati