使用PHAssetChangeRequest.FromVideo

时间:2017-07-18 13:11:20

标签: ios xamarin photokit

我正在编写一个通过HTTP从远程服务器(无人机)导入视频文件的应用程序。将文件下载到本地存储空间(/Documents/video)后,我使用PHPhotLibrary将其导入PHAssetChangeRequest.FromVideo中的自定义相册。

我可以导入视频,当在模拟器中访问照片应用时,视频会显示在正确的相册中。但是,如果我从相册中删除该文件,则不会从我的应用/Documents/video文件夹中删除该文件。

然后我尝试使用/Documents/video导出文件后从PHAssetChangeRequest.FromVideo删除该文件,但视频会从照片应用中消失。

如何确保视频文件只有一个副本,最好存储在共享照片库中?我可以检测到文件已被删除,以便我可以从/Documents/video文件夹中删除它吗?或者我需要"同步"每次应用程序启动时我的自我?

1 个答案:

答案 0 :(得分:0)

我认为您应该将下载的视频存储到临时目录,例如

NSString *outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output.mov"];

然后您可以将其存储到照片应用中。

将其存储到临时目录中的好处是操作系统会在需要时自动清除它,但您可以随时通过创建以下类方法手动删除它

+ (void)clearTemporaryDirectoryData
{
    NSArray* tempDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
    for (NSString *file in tempDirectory) {
        [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];
    }
}

在您的情况下,您可以在将下载的视频保存到照片应用程序后删除临时数据。