2010-01-23 7 views
18

Есть ли уведомление или другой механизм получения информации о том, что пользователь делает снимок экрана с помощью кнопок дома/питания?Уведомление об обнаружении или снятии снимка экрана?

Я видел темы о том, как отключить снятие скриншотов, но это не то, что я ищу.

У меня есть клиент-фотограф, который обеспокоен тем, что его работы будут скопированы с помощью пользователей, снимающих скриншоты, и я подумал, что если бы была возможность поместить водяной знак по изображению до того, как снимок был снят, это устранит его страхи ,

+0

Вы можете постоянно фотографировать все картинки. Водяные знаки не должны быть человеческими. –

+0

Да, я знаю, что мы могли бы пройти этот маршрут, но идея заключалась бы в том, чтобы * визуально * мешать изображению. –

+0

Какова цель этого уведомления, которое вы ищете? Я имею в виду, кто бы вы проинформировали, и что они могли сделать с этой информацией? Это в Интернете или в закрытой сети на мобильном сафари? Или в рамках конкретного приложения? – conorgriffin

ответ

2

Я сомневаюсь, что это когда-нибудь будет и по уважительной причине. Вы не должны убирать возможности скриншотов у своих пользователей.

+0

Пользователь UIApplication Did Снять снимок экрана можно с помощью iOS 7+. –

5

PictureWasTakenNotification Уведомление Darwin будет отправлено, когда пользователь сделает снимок экрана. Однако, это отправляется после снят снимок экрана.

(Никакие уведомления не будут отправляться до того был взят скриншот.)

+0

Документы для Дарвина Уведомления: http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Conceptual/MacOSXNotifcationOv/DarwinNotificationConcepts/DarwinNotificationConcepts.html – Dimitris

+0

Ни это уведомление, ни CameraImageFullSizeImageReadyNotification похоже в iPhone SDK. Независимо от того, как вы указываете, для меня не идеально, что он снимается после того, как снимок сделан (как и для обоих уведомлений) –

+11

Только для справки эта функциональность была потеряна с iOS 4.0. –

6

Вот способ, который мог бы работать, хотя он будет полностью идти против принципов интерфейса пользователя, я уверен. Если вы вынудите пользователя перенести палец на экран для показа изображения, я не думаю, что они могут создавать скриншоты. Поскольку, как только вы нажимаете клавиши «home + lock», чтобы на самом деле сделать снимок экрана, экран, похоже, ведет себя так, как будто пальцы не касаются его. Попробуйте сделать снимок экрана, перемещаясь между главными экранами, чтобы понять, что я имею в виду.

Не идеальное решение любым способом, но вы можете использовать его в своем дизайне приложения, если вы действительно умны, не отвлекая слишком много от пользовательского опыта (сложная задача, хотя!). Тем не менее, я считаю, что это может позволить вам отображать иллюстрации/фотографии, не позволяя пользователям делать скриншоты.

+0

Я подумал об этом и попробовал его с iphone.appleinsider.com, чей причудливый интерфейс показывает UI-хром, когда вы НЕ касаетесь экрана. Удерживая пальцем по экрану (так что Webview отслеживал прикосновение), я сделал снимок экрана, и вы правы, скриншот сделал снимок, как будто приложение не отслеживало прикосновения. Тем не менее, я твердо убежден, что вмешательство в функцию ОС равносильно отключению. Но я полагаю, что должен сообщить об этом моему клиенту. –

+0

Спасибо, кстати. –

+0

Они отключили этот эффект в iOS 7, благодаря чему он продолжает действовать как ваш палец на экране при съемке экрана. Это функциональность la SnapChat. –

4

С iOS 7 UIApplicationUserDidTakeScreenshotNotification существует. Так что делать что-то подобное должен обнаружить скриншоты:

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

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

Наконец, не забудьте удалить наблюдатель:

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

На самом деле нужно что-то, что могло бы скрыть уведомление до того, как будет сделан снимок. Другими словами, версия «... UserWillTake ...» этого уведомления –

+0

Да, нет способа предотвратить скриншот ... – txulu

+0

Как удалить изображение после того, как пользователи закроют экран? – lee

1

Что действительно необходимо, это уведомление, которое посылается до захвата фактического экрана происходит , Метод делегата или некоторые другие способы предоставления приложениям возможности «скриншотов в полете» перерисовать ваш контент до захвата.

И нет ни одного.