Greedykit-это набор готовых к использованию компонентов, написанных в Swift для предотвращения предотвращения конфиденциальных средств массовой информации инструментами захвата экрана в iOS.
Однажды у меня была задача предотвратить захват локально записанного видео, однако DRM не работал для меня для этой цели, потому что Fairplay работает только с потоковым удаленным контентом. К счастью для меня, я нашел подходящий инструмент в AvFoundation, который мне пришлось адаптироваться к своим потребностям и, наконец, вставить в этот маленький пакет.
Вы можете использовать Swift Package Manager для установки Greedykit с помощью Xcode:
Вы можете использовать кокопод для установки GreedyKit , добавив следующие линии в свой Podfile :
target 'ApplicationName' do
pod 'GreedyKit'
endЗатем просто напишите команду в терминале для установки:
pod installПосле того, как вы установили пакет, импортируйте его в проект обычным способом:
import GreedyKitПакет включает в себя два отдельных, но аналогичных компонента для отображения изображений и видео , которые могут изменить режим предотвращения захвата по требованию.
Чтобы добавить изображение в uikit, которое может быть скрыто, вы можете использовать обертку GreedyImageView вокруг вашего изображения:
// Create image view similar to the regular UIView.
let imageView = GreedyImageView ( )
parentView . addSubbiew ( imageView )
// Add content to the created view.
// You can use either UIImage, CGImage or CIImage.
let image = UIImage ( named : " SecretImage " )
imageView . setImage ( image )
// When necessary, turn on the flag to prevent the content from being captured.
imageView . preventsCapture = true Чтобы добавить видео в uikit, которое может быть скрыто, вы можете использовать обертку GreedyPlayerView вокруг своего AVPlayer :
// Create a wrapper around AVPlayer
let player = AVPlayer ( )
let playerView = GreedyPlayerView ( )
playerView . player = player
// Add some content to the player and manipulate it as you wish:
let playerItem = AVPlayerItem ( asset : localVideo )
player . replaceCurrentItem ( with : playerItem )
player . play ( )
// When necessary, turn on the flag to prevent the content from being captured.
playerView . preventsCapture = trueВы можете найти пример того, как использовать его в примерах/проекте iosgreedykit.
Greedykit также содержит несколько оберток вокруг классов uikit, которые вы можете использовать в Swiftui.
Изображение очень простое. Вам просто нужно создать элемент GreedyImage с любым видом изображения (Uiimage, Ciimage или Cgimage) в иерархии вашего взгляда:
VStack {
GreedyImage ( uiImage , preventsCapture : true )
} Создать видеоплеер также легко. Вам просто нужно создать элемент GreedyPlayer в вашей иерархии вашего представления и передать ему AVPlayer , чей контент он будет рисовать:
VStack {
GreedyPlayer ( player : avPlayer , preventsCapture : true )
}Вы можете найти пример того, как использовать его в примерах/проекте SwiftuigreedyKit.
Чтобы внести свой вклад, используйте следующий рабочий процесс «Fork-and-Pull»:
Примечание. Обязательно объедините последние из «Upstream», прежде чем сделать запрос на вытяжение!
Greedykit доступен по лицензии MIT. Смотрите файл лицензии для получения дополнительной информации.