【iOS截屏防護(hù)】擔(dān)心App內(nèi)容被截屏泄露嗎琢融?這個(gè)開源庫就是你要的

前言

想必很多同學(xué)都有遇到過或者想過怎么能防止系統(tǒng)截圖,但通過大量的搜索并沒有找到具體的實(shí)現(xiàn)方案雁竞。

一俩块、 常見方案

1.1 系統(tǒng)通知

UIApplication.userDidTakeScreenshotNotification 這個(gè)系統(tǒng)通知是在完成截屏動(dòng)作后,系統(tǒng)給到 App 的浓领,在收到這個(gè)通知后做處理玉凯,并不能達(dá)到防護(hù)的效果。

微信的付款嗎就是這樣的實(shí)現(xiàn)联贩,在截屏后提供一個(gè)警示內(nèi)容漫仆。

04-01.png

1.2 小紅書

在使用小紅書的截屏的時(shí)候頂部狀態(tài)欄會(huì)添加一個(gè)小紅書的水印如下圖:

04-02.png

它是怎么實(shí)現(xiàn)的呢?我有兩個(gè)猜測:

第一種:水印一直在泪幌,劉海后面

因?yàn)榉莿⒑F翛]有這個(gè)水印盲厌,所以估計(jì)是這樣,但是通過切換到任務(wù)管理器狀態(tài)并沒有看到有那個(gè)水印祸泪。

04-03.jpeg

第二種:通過什么黑科技加上的吗浩?

不是第一種,難道真的是又什么黑科技没隘?

繼續(xù)驗(yàn)證

我覺得肯定是第一種懂扼,覺得任務(wù)切換的狀態(tài)下是不是那個(gè)水印被系統(tǒng)隱藏掉。想道還有 QuickTime 可以投屏來驗(yàn)證。

04-04.png

破案阀湿,果然是藏在劉海后面的赶熟,沒有繼續(xù)深入的價(jià)值了??♂?。

1.3 ScreenShieldKit

04-05.gif

在尋找解決方案的時(shí)候發(fā)現(xiàn)了這樣一個(gè)SDK ScreenShieldKit

Contact us for more information and to receive a free evaluation SDK!

這句話一看就是收錢的了陷嘴,抱著能白嫖絕不三連的宗旨映砖,先略過暫不深入研究。(開玩笑灾挨,如果你覺得我的方案不錯(cuò)邑退,本文求贊評(píng)轉(zhuǎn)+Star!)

1.4 愛奇藝

愛奇藝使用的是截圖后直接讀取用戶相冊(cè)刪除圖片的方式進(jìn)行的劳澄,不給權(quán)限地技,截圖就不會(huì)被刪除。

04-09.PNG

1.5 UITextField

當(dāng)我們將一個(gè) UITextFieldisSecureTextEntry 設(shè)置為 true 的時(shí)候浴骂,會(huì)隱去輸入的文案用 圓點(diǎn) 替代乓土。并且在進(jìn)行錄屏或者截屏的時(shí)候都會(huì)被系統(tǒng)隱去。

下面用我的個(gè)人項(xiàng)目 夢見賬本

如下圖我正在用 QuickTime 進(jìn)行錄屏:

04-06.JPG

那么我們是否可以使用這種特性呢溯警?

二趣苏、 RyukieSwifty/ScreenShield

基于 UITextField 的效果我實(shí)現(xiàn)了一個(gè) ScreenShieldView 可以很方便的進(jìn)行使用。

GitHub: RyukieSwifty/ScreenShield

如果覺得不錯(cuò)的話梯轻,歡迎留個(gè)??哦

2.1 使用方式

Cocoapods 導(dǎo)入

pod 'RyukieSwifty/ScreenShield'

使用

04-07.gif

例如對(duì)整個(gè)控制器的 View 進(jìn)行截屏防護(hù):

import UIKit
import RyukieSwifty

class TransactionAddViewController: UIViewController {
    // MARK: - Life
    override func loadView() {
        view = ScreenShieldView.create()
    }
    ...
}

2.2 如何實(shí)現(xiàn)的

04-08.png

按照向里面添加子視圖的方式驗(yàn)證具體的原因食磕,最后發(fā)現(xiàn)這個(gè)效果是由一個(gè)私有類實(shí)現(xiàn)的 _UITextLayoutCanvasView 。他本質(zhì)上也是一個(gè) UIView 喳挑,所以理論上只要我們能夠創(chuàng)建出來一個(gè)它彬伦,那么就可以將想要保護(hù)的內(nèi)容添加進(jìn)去。

由于它是私有類伊诵,無法直接創(chuàng)建单绑,并且如果直接通過字符串區(qū)創(chuàng)建也擔(dān)心有審核風(fēng)險(xiǎn),于是我通過下面的方式來創(chuàng)建曹宴。

private func makeSecureView() -> UIView? {
    let field = UITextField()
    field.isSecureTextEntry = true
    let fv = field.subviews.first
    fv?.subviews.forEach { $0.removeFromSuperview() }
    fv?.isUserInteractionEnabled = true
    return fv
}

當(dāng)前手頭沒有更多的系統(tǒng)版本設(shè)備可以測試搂橙,已經(jīng)驗(yàn)證的 13.7 ~ 15.3.1 是沒問題的。

不排除會(huì)存在某些版本上 UITextField 的結(jié)構(gòu)發(fā)生了調(diào)整導(dǎo)致失效的問題笛坦,如果有区转,歡迎在 GitHubissue

總結(jié)

不知道各位有沒有其他的實(shí)現(xiàn)方式版扩,有的話歡迎一起交流废离。

如果本文有幫到你,歡迎贊評(píng)轉(zhuǎn)+Star礁芦!

??

我的個(gè)人項(xiàng)目 掃雷Elic 無盡天梯 夢見賬本 隱私訪問記錄
類型 游戲 財(cái)務(wù) 工具
AppStore Elic Umemi 隱私訪問記錄
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜻韭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌湘捎,老刑警劉巖诀豁,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窄刘,死亡現(xiàn)場離奇詭異窥妇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)娩践,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門活翩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翻伺,你說我怎么就攤上這事材泄。” “怎么了吨岭?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵拉宗,是天一觀的道長。 經(jīng)常有香客問我辣辫,道長旦事,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任急灭,我火速辦了婚禮姐浮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘葬馋。我一直安慰自己卖鲤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布畴嘶。 她就那樣靜靜地躺著蛋逾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窗悯。 梳的紋絲不亂的頭發(fā)上区匣,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音蟀瞧,去河邊找鬼沉颂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悦污,可吹牛的內(nèi)容都是我干的铸屉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼切端,長吁一口氣:“原來是場噩夢啊……” “哼彻坛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤昌屉,失蹤者是張志新(化名)和其女友劉穎钙蒙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體间驮,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躬厌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竞帽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扛施。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖屹篓,靈堂內(nèi)的尸體忽然破棺而出疙渣,到底是詐尸還是另有隱情,我是刑警寧澤堆巧,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布妄荔,位于F島的核電站,受9級(jí)特大地震影響谍肤,放射性物質(zhì)發(fā)生泄漏啦租。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一谣沸、第九天 我趴在偏房一處隱蔽的房頂上張望刷钢。 院中可真熱鬧,春花似錦乳附、人聲如沸内地。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阱缓。三九已至,卻和暖如春举农,著一層夾襖步出監(jiān)牢的瞬間荆针,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工颁糟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留航背,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓棱貌,卻偏偏與公主長得像玖媚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子婚脱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容