Обнаружение скриншота расширения IOS iMessage - программирование
Подтвердить что ты не робот

Обнаружение скриншота расширения IOS iMessage

Пожалуйста, используйте Swift 4+

ПРИМЕЧАНИЕ. Я обнаруживаю снимок экрана, пока я нахожусь в расширении iMessage, а не в стандартном представлении iMessage.

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

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

ViewWillAppear()

UIScreen.main.addObserver(self, forKeyPath: "captured", options: .new, context: nil)

наблюдатель

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
    if (keyPath == "captured") {
        let isCaptured = UIScreen.main.isCaptured
        print(isCaptured)
        screenshot()
        //screenshot() sends a message alerting the message was screens hotted. However, the print statement didn't even run.
    }
}

ViewWillDisappear()

UIScreen.main.removeObserver(self, forKeyPath: "captured", context: nil)

Я также попробовал стандартный центр уведомлений по умолчанию

let mainQueue = OperationQueue.main
    NotificationCenter.default.addObserver(forName: UIApplication.userDidTakeScreenshotNotification, object: nil, queue: mainQueue) { notification in
        // executes after screenshot
        print("Screenshotted")
        self.screenshot()
    }

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

4b9b3361

Ответ 1

Возможно, это немного излишне, но вы можете преобразовать свое изображение в видео, защищенное DRM, и система предотвратит любые скриншоты/совместное использование экрана/запись экрана видео, защищенного DRM.