美文网首页
iOS 监听用户截屏并获取截屏图片(动态页面)

iOS 监听用户截屏并获取截屏图片(动态页面)

作者: 时光是贼 | 来源:发表于2021-05-18 14:54 被阅读0次

    最近有个需要,需要截取用户当前的页面,但是一般常见的方法只能截取静态页面,动态页面会导致黑屏(如视频),如果先监听用户的截屏,再拿到截屏图片就能避免这个问题,正确姿势如下:
    1,添加截屏通知监听

    //引用框架
    #import <Photos/Photos.h>
    //注册通知
    [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(userDidTakeScreenshot:)
                                                     name:UIApplicationUserDidTakeScreenshotNotification object:nil];
    

    2,截屏响应

    //截屏响应
    - (void)userDidTakeScreenshot:(NSNotification *)notification
    {
        NSLog(@"检测到截屏");
        //由于截屏之后图片不会立即存储到相册,所以需要延迟一些时间再做处理
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    
            PHAsset * asset = [self latestAsset];
            PHImageManager * imageManager = [PHImageManager defaultManager];
             [imageManager requestImageDataForAsset:asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
                    
                        UIImage * image = [UIImage imageWithData:imageData];
                        [self addVideoTaskWithImage:image];
                        self.isJiePing = NO;
            }];
                            
        });
    }
    

    精华:监听用户截屏后,获取相册最新图片
    ps:调用之前需要用户同意完全访问相册权限

    //获取最新图片
    - (PHAsset *)latestAsset {
        // 获取所有资源的集合,并按资源的创建时间排序
        PHFetchOptions *options = [[PHFetchOptions alloc] init];
        options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
        PHFetchResult *assetsFetchResults = [PHAsset fetchAssetsWithOptions:options];
        return [assetsFetchResults firstObject];
    }
    
    //判断相册权限
        PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
        if (status == PHAuthorizationStatusAuthorized ) {
    
        }
    

    相关文章

      网友评论

          本文标题:iOS 监听用户截屏并获取截屏图片(动态页面)

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