在某些對安全有較高要求的App中,需要有防截屏的需求。但由於iOS系統的限制,App無法阻止截屏,但截屏之后,App可以接收到UIApplicationUserDidTakeScreenshotNotification通知,因此我們可以在接收到此通知后,刪除相冊中最后一張圖片即可(美中不足的是刪除圖片時,會有彈出窗口,讓你對圖片做出選擇是【刪除】,還是【不允許】)。具體步驟如下:
1. 添加對截屏事件UIApplicationUserDidTakeScreenshotNotification的監聽
2. 實現截屏通知響應方法userDidTakeScreenshot:(NSNotification *)notification
2.1. 獲取所有資源並按照創建時間降序排序
2.2. 從返回的查詢結果集中,獲取第一個資源,便是最新的截圖
2.3. 刪除這個最新的截圖資源
2.4. 完整代碼如下圖:
說明: [PHAssetChangeRequest deleteAssets:@[asset]] 操作一定要在 -[PHPhotoLibrary performChanges:completionHandler:]中執行,否則應用會崩潰。