我有一个基本的UWP Windows 10应用程序(在PC上运行),它声明了一种自定义文件格式。用户可以打开和编辑该格式的文档(就像在Word Mobile中打开.docx文件一样)。
我的问题是:我们假设用户使用我的应用从OneDrive打开文档,并在其他设备上修改文档。如何通知我的应用程序更改重新加载文档?
奖金问题:)如果在本地和其他设备上同时修改文件时会发生冲突怎么办?
在内部,我使用从StorageFile
获取的FileOpenPicker
来阅读文档。
我查看了StorageFolder.CreateFileQueryWithOptions(...)
,但我无法获得对StorageFile父文件夹的引用,因为我的应用程序只有读取文件本身的权限,而不能访问父文件夹。
我可以定期查看文件的修改日期,但这似乎远非理想......
答案 0 :(得分:1)
我认为可以使用OneDrive API和webhooks来实现 很遗憾,我无法找到UWP的任何示例(只有one for ASP.NET可用)
您也可以尝试使用ContentsChanged事件
auto query = folder.CreateFileQuery();
query.ContentsChanged += queryContentsChanged;
.......
void queryContentsChanged(IStorageQueryResultBase sender, object args)
{
// check what was changed
}
您可以在此处找到一些信息:File system change notifications in WinRT
由于智能文件的概念,它也适用于OneDrive。从本文中可以看出:Working with files across the local PC and SkyDrive
作为开发人员,将SkyDrive文件视为“只是文件” - 它们使用与系统上其他所有文件相同的StorageFile接口,并且可以以相同的方式进行操作。
智能文件是一种文件,它像普通文件一样出现在系统中,但只包含元数据和缩略图,而不是完整的文件内容。该文件的内容位于SkyDrive上,可以根据需要下载。