iOS:如何防止临时文件可见性
Posted
技术标签:
【中文标题】iOS:如何防止临时文件可见性【英文标题】:iOS: How do i prevent temporary files Visibility 【发布时间】:2013-03-21 03:58:05 【问题描述】:我正在开发一个从静止图像生成临时视频的应用程序。但我不希望用户查看我生成的临时文件。但是当应用程序生成视频文件的那一刻,视频被相机胶卷列出。
我的问题是如何生成无法访问“相机胶卷、iTunes 和 iCloud”的临时媒体文件?
请帮助我。提前致谢。
代码:
[assetWriter finishWritingWithCompletionHandler:^
NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:url
completionBlock:^(NSURL *assetURL, NSError *error)
NSLog(@"Done!");
];
];
【问题讨论】:
你在写什么目录?如果你写到相机胶卷,那么它会在哪里。如果你写到一个临时目录,你就不会有这个问题。 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"MyFirstDownloadmp4.mp4"]; 我正在使用上面的代码来创建网址 【参考方案1】:这个块:
[assetWriter finishWritingWithCompletionHandler:^
NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:url
completionBlock:^(NSURL *assetURL, NSError *error)
NSLog(@"Done!");
];
];
是在相机胶卷中写入文件。因此,在您只创建临时视频时不要使用它。将临时视频文件写入documentDirectory
,(或者它可能已经在documentDirectory
中,当您创建它时,您需要做的就是不要使用此代码将该文件写入相机胶卷)。
【讨论】:
【参考方案2】:您应该使用NSTemporaryDirectory()
并在末尾为任何临时文件附加您自己的词缀。该目录中的文件将由操作系统清理,或者您可以在完成后立即删除。
【讨论】:
path = [NSString stringWithFormat:@"%@/%llu.mov", NSTemporaryDirectory(), mach_absolute_time()];我已经尝试过了,但视频在相机胶卷中可见 @user1713827 这不太可能,您可以将代码发布到您实际使用生成的路径的位置吗?或者您是否安装了任何可能改变相机胶卷行为的越狱调整?[assetWriter finishWritingWithCompletionHandler:^ NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeVideoAtPathToSavedPhotosAlbum:url completionBlock:^(NSURL *assetURL, NSError *error) NSLog(@"Done!"); ]; ];
@user1713827 我假设您正在使用 _outMovieURL 初始化 AVAssetWriter 对吗?如果您不在完成块中使用 ALAssetsLibrary 调用,则相机胶卷中不会出现任何内容。或者您的问题是视频在您开始创作时出现,而不是在您全部完成之后?以上是关于iOS:如何防止临时文件可见性的主要内容,如果未能解决你的问题,请参考以下文章
如何取消 AFdownloadrequest 操作而不保留以前的进度(删除临时文件) iOS