美文网首页
获取相册最新照片或删除

获取相册最新照片或删除

作者: 叫我困兽 | 来源:发表于2017-09-18 14:24 被阅读8次

    最近,客户要求在”在线考试“功能中加入防舞弊相关的修改。其中主要有2点:
    1.禁止进入后台;
    2.禁止复制试题,禁止截屏;

    解决思路:

    1、禁止进入后台,根本不可能。解决方法是,监测应用进入后台次数,应用进入后台超过三次视为违规操作;应用再次进入前台视为交卷。
    2、禁止复制试题很简单,禁止截屏功能经过调研,企业账号可以通过配置文件达到效果文档在这里,个人账号面谈;又考虑在截屏照片存入相册之前去图片进行模糊处理,但是通知只有UIApplicationUserDidTakeScreenshotNotification,接收到回调图片已经放在相册里了;最后,经过小伙伴们提示,是不是可以生成后删除这张截图即可,删除可以,iOS8得到相册权限后,就可以删,但是会有提示,你可以选择不删.......无奈之下,就按照禁止进入后台的逻辑做了

    涉及代码

    //监听截屏事件
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotAction) name:UIApplicationUserDidTakeScreenshotNotification  object:nil];
    
    //删除对应相册最新的照片
        PHFetchResult *collectonResuts = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:[PHFetchOptions new]] ;
        [collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            PHAssetCollection *assetCollection = obj;
    //你想进入的相册
            if ([assetCollection.localizedTitle isEqualToString:@"Camera Roll"] || [assetCollection.localizedTitle isEqualToString:@"相机胶卷"]) {
                PHFetchResult *assetResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:[PHFetchOptions new]];
                [assetResult enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
                    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ //获取相册的最后一张照片
                        if (idx == [assetResult count] - 1) {
                            [PHAssetChangeRequest deleteAssets:@[obj]];
                        }
                    } completionHandler:^(BOOL success, NSError *error) { NSLog(@"Error: %@", error);
                    }];
                }];
            }
        }];
    

    相关文章

      网友评论

          本文标题:获取相册最新照片或删除

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