Уведомление или обнаружение снимка экрана?

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

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

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

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

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

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

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

    Начиная с 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]; } 

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

    И нет никого.

    ПО ИСПОЛЬЗОВАНИЮ ДАННОГО ОТВЕТА ВЫ ПОЛУЧИТЕ УВЕДОМЛЕНИЕ ПОСЛЕ ПРИНЯТИЯ СКРИНШОТА.

    iOS 11 и Swift 4

    Три простых шага: –

    1. Добавьте в свой ViewController или любое другое место, которое вы хотите,

     NotificationCenter.default.addObserver(self, selector: #selector(screenShotTaken(notification:)), name: NSNotification.Name.UIApplicationUserDidTakeScreenshot, object: nil) 

    2. Будет вызван метод метода метода (ниже). Когда снимок будет сделан

     @objc func screenShotTaken(notification: Notification) { print(notification) print("Screenshot has taken, do something you want ") } 

    3. Удалите своего наблюдателя (хороший способ удалить наблюдателя в deinit)

     deinit { NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIApplicationUserDidTakeScreenshot, object: nil) } 
    Interesting Posts

    Включить виртуализацию в BIOS, если мой компьютер не дает мне возможность

    Ошибка Java: не удается сделать статическую ссылку на нестатический метод

    Notepad ++ Удаляет все, кроме 40 переменных, помещая их в свою линию, комбинируя регулярное выражение

    Как сравнить число с номером в другом столбце и получить соответствующее значение

    Отключить сетевые расположения медиа-плеера Windows Media Player

    Узнайте историю SQL-запросов

    Как исправить ошибку COMException 80040154?

    Почему эта программа Java заканчивается, несмотря на то, что, по-видимому, она не должна (а не)?

    Мой Mac медленный, но не знаю, что замедляет его

    GCM SERVICE_NOT_AVAILABLE на Android 2.2

    Проверка встроенной формы в Django

    Второй монитор с Intel iMac?

    Как я могу использовать файл в команде и перенаправить вывод в тот же файл без его усечения?

    Невозможно корректно обрабатывать ошибку в ajax из rxjs

    Почему 2TB Drive говорит, что половина этого пространства используется, когда это не так.

    Давайте будем гением компьютера.