iCloud:获取文件的现有公共 URL

Posted

技术标签:

【中文标题】iCloud:获取文件的现有公共 URL【英文标题】:iCloud: Getting the already existing public URL for a file 【发布时间】:2012-04-07 22:58:54 【问题描述】:

我的 OS X Lion 应用程序允许用户公开 iCloud 文件。我为此使用URLForPublishingUbiquitousItemAtURL

我可以在调用该方法后将该 URL 呈现给用户。但是有没有办法在文件发布(而不是更改)后获取相同的 URL?例如,如果用户想在另一台设备上查看该 URL?

是的,我可以再次致电URLForPublishingUbiquitousItemAtURL,但我如何知道文件是否已经发布?

我的第一个想法是在 iCloud 中创建某种键值数据,其中包含所有文件的 URL(具有公共 URL)。但我不敢相信没有更简单的方法......

谢谢! 丹尼尔

【问题讨论】:

【参考方案1】:

如果我正确理解您的问题,您想检索或创建 iCloud 中文件的公共 URL。

如果是这样,那么使用 URLForPublishingUbiquitousItemAtURL:expirationDate:error:

它返回一个 URL,可以通过电子邮件发送给用户以下载文件。

- (NSURL *)URLForPublishingUbiquitousItemAtURL:(NSURL *)url expirationDate:(NSDate
**)outDate error:(NSError **)error

参数:

url - 指定您想要在云中的项目的 URL 分享。 URL 必须以从 URLForUbiquityContainerIdentifier:(第 61 页)对应的方法 到项目的位置。

outDate - 输入时,指向日期对象变量的指针。在 输出,此参数包含该项目为否的日期 在返回的 URL 中不再可用。您可以为此指定 nil 参数如果你对日期不感兴趣

error - 在输入时,指向 NSError 对象的变量的指针。如果 发生错误时,此指针被设置为一个 NSError 对象,其中包含 有关错误的信息。您可以为此参数指定 nil 如果您不想要错误信息。

返回值

用户可以通过该 URL 下载项目副本的 URL。如果由于任何原因无法创建 URL,则返回 nil。

讨论

此方法创建指定文件的快照,并将副本放置在临时 iCloud 位置 其他用户可以使用返回的 URL 访问它。快照反映了文件的内容 生成 URL 的时间,并且在对 用户的 iCloud 存储。快照文件在指定的 URL 中保持可用,直到 outDate 参数,之后自动删除。 您的应用程序必须有权访问网络才能成功调用。

所以,如果如你所说,需要检查是否发布成功,请检查错误。

来源:NSFileManagerClass @ Developer.Apple.com

【讨论】:

谢谢,但我都知道。问题是如何获取文件的 URL,该文件已经发布并且从那时起没有更改...

以上是关于iCloud:获取文件的现有公共 URL的主要内容,如果未能解决你的问题,请参考以下文章

在 ios 中从 iCloud 获取文件时出错

从 iCloud 驱动器获取文件而不下载?

iCloud Caldav 连接以获取日历

Laravel 获取存储在存储公共文件夹中的文件的公共 URL

节点 JS AWS S3 文件上传。如何获取公共 URL 响应

如何快速获取 iCloud 图片 URL