【问题标题】:Xamarin ios Cloud file copy location issueXamarin ios 云文件复制位置问题
【发布时间】:2019-05-01 01:02:34
【问题描述】:

我使用 xamarin forms ios 连接了 iCloud。我的文件复制到 icloud 没有任何错误。但它保存在 file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~companyname~MobileDoc/ 路径中。

当我在 iCloud 内部检查时,我的文件没有显示。但是当我搜索该文件时,它的位置显示为 iCloud --> MobileDoc--> File.txt。但是当我在 iCloud 中检查时,没有文件夹调用 MobileDoc。

这是我尝试过的例子Here

这是我用来保存文档的代码。

var uburl = NSFileManager.DefaultManager.GetUrlForUbiquityContainer(null);

                 if (uburl == null)
                 {
                     HasiCloud = false;
                 }
                else
                 {
                     HasiCloud = true;
                     iCloudUrl = uburl;

                     var docsFolder = Path.Combine(iCloudUrl.Path, "Documents"); 
             var filePath = Path.Combine(docsFolder, fileName);

         FileService.Save(filePath, attachment.Content);
                     if (option == false)
                         FileService.Instance.Open(filePath);
                }

【问题讨论】:

  • 你的意思是保存文件到icloud成功了,但是无法读取那里的文件?
  • @Junior Jiang - MSFT 文件不可见。
  • 如果我在 mac 中找到我保存的文件,它会显示在搜索窗口中。位置在云端。但如果我检查了 iCloud,它是不可见的。我不知道我犯了什么错误
  • 确保icloud里面有数据。保存数据到icloud时,可以使用NSMetadataQuery查看文件。
  • icloud 已手动上传文件。不可见仅使用 xamarin ios 上传

标签: ios xamarin icloud icloud-drive


【解决方案1】:

保存 iCloud 文档

要将UIDocument 添加到 iCloud,您可以直接调用UIDocument.Save(仅适用于新文档)或使用NSFileManager.DefaultManager.SetUbiquitious 移动现有文件。示例代码使用此代码直接在 ubiquity 容器中创建一个新文档(这里有两个完成处理程序,一个用于保存操作,另一个用于打开):

var docsFolder = Path.Combine (iCloudUrl.Path, "Documents"); // NOTE: Documents folder is user-accessible in Settings
var docPath = Path.Combine (docsFolder, MonkeyDocFilename);
var ubiq = new NSUrl (docPath, false);
var monkeyDoc = new MonkeyDocument (ubiq);
monkeyDoc.Save (monkeyDoc.FileUrl, UIDocumentSaveOperation.ForCreating, saveSuccess => {
Console.WriteLine ("Save completion:" + saveSuccess);
if (saveSuccess) {
    monkeyDoc.Open (openSuccess => {
        Console.WriteLine ("Open completion:" + openSuccess);
        if (openSuccess) {
            Console.WriteLine ("new document for iCloud");
            Console.WriteLine (" == " + monkeyDoc.DocumentString);
            viewController.DisplayDocument (monkeyDoc);
        } else {
            Console.WriteLine ("couldn't open");
        }
    });
} else {
    Console.WriteLine ("couldn't save");
}

根据文档,当你将文件保存到icloud时,你需要使用UIDocument。这样安全稳定。

【讨论】:

  • 感谢您的回复。如您所说,我已添加您的代码并使用 UIDocument 保存文档。文件保存在路径 Library --> Mobile Documents ({file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~company name~MobileA/Documents/SJA%20V001-2.pdf} ) .但在 iCloud 中不可见。请帮忙
  • 在 icloud 中查看 iCloud 同步文件视图有什么办法吗?
  • 建议您可以尝试将demo之类的txt文件保存在文档中,并检查是否有效。
  • 是的,我试过了。它也走这条路。
  • 好的,在iCloud也看不到?建议使用NSMetadataQuery获取你的icloud文件列表,它会显示所有文件。
猜你喜欢
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 2014-04-29
  • 1970-01-01
相关资源
最近更新 更多