iOS 添加防截屏的功能

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenShot) name:UIApplicationUserDidTakeScreenshotNotification object:nil];
#pragma mark - 監聽用戶截屏事件
- (void)screenShot
{
    [self getPhotosAuthorizationStatus];
}
#pragma mark - 判斷相冊的授權狀態
- (void)getPhotosAuthorizationStatus
{
    if ([PHPhotoLibrary respondsToSelector:@selector(authorizationStatus)]){
        if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized){
            [self deleteScreenShot];
        } else {
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                if (status == PHAuthorizationStatusAuthorized) {
                    [self deleteScreenShot];
                }
            }];
        }
    } else
    {
        [self deleteScreenShot];
        [MBProgressHUD showMessage:nil detailMsg:@"您保存的圖片內容可能涉及到敏感信息,建議您刪除" position:MBProgressHUBPositionTop showTime:3];
    }
}
#pragma mark - 刪除相冊最后一張圖片
- (void)deleteScreenShot
{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            PHAssetCollection *assetCollection = obj;
            if (assetCollection.assetCollectionSubtype == PHAssetCollectionSubtypeSmartAlbumUserLibrary)  {
                PHFetchOptions *options = [PHFetchOptions new];
                options.fetchLimit = 1;
                options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
                PHFetchResult *assetResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:options];
                
                [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
                    //獲取相冊的最后一張照片
                    if (assetResult.firstObject) {
                        [PHAssetChangeRequest deleteAssets:@[assetResult.firstObject]];
                    }
                } completionHandler:^(BOOL success, NSError *error) {
                    NSLog(@"Error: %@", error);
                }];
                
                [MBProgressHUD showMessage:nil detailMsg:@"您保存的圖片內容可能涉及到敏感信息,建議您刪除" position:MBProgressHUBPositionTop showTime:3];
            }
        }];
    });
}
- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationUserDidTakeScreenshotNotification object:nil];
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。