美文网首页iOS大咖说
iOS 添加防截屏的功能

iOS 添加防截屏的功能

作者: 叫我小黑 | 来源:发表于2020-06-15 07:10 被阅读0次
    [[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];
    }
    

    相关文章

      网友评论

        本文标题:iOS 添加防截屏的功能

        本文链接:https://www.haomeiwen.com/subject/ycttictx.html