MacOS - 使用 iCloud 为 iOS/MacOS 创建 Finder 同步扩展

Posted

技术标签:

【中文标题】MacOS - 使用 iCloud 为 iOS/MacOS 创建 Finder 同步扩展【英文标题】:MacOS - creating Finder Sync Extension with iCloud for iOS/MacOS 【发布时间】:2020-04-02 11:22:41 【问题描述】:

这是一个非常理论化的问题,但对我来说很重要,我如何着手下一步。

我正在开发一个 SwiftUI MacOS 应用程序,用户可以在其中上传自己的文件。存储在 CoreData 中的元数据和我手动存储在文件系统中的文件。目前我正在为我的应用程序使用默认文件夹。

很快我想在我的 Mac OSX 应用程序和我的 ios 应用程序之间进行 iCloud 同步。我读过它,它应该可以工作。 CoreData应该没问题。

现在我的问题是,是否有可能以我想的方式处理它:

我想为我的 Mac OSX 应用程序创建一个Finder Sync 扩展,所以我有一个自己的文件夹,可以将其添加到收藏夹并进行观察。我希望我所有的本地文件都存储在那里。这应该工作..

我能否将存储在 Finder Sync Extension with iCloud 中的这些文件同步到我的 iOS 应用程序? 我可以在 iOS 上创建一个扩展来显示这些文件吗?

我没有将我的文档存储在 CoreData 的数据 blob 中,也没有允许外部存储。我手动存储所有。我还能通过 iCloud 同步我的文档吗?

总而言之,我想知道我是否可以将我的文件存储在 Finder 文件夹中,并且仍然让它们与 iCloud 同步到 iOS?如果这不可能,请告诉我。了解正手会很有趣。

【问题讨论】:

【参考方案1】:

Finder 同步扩展不应“执行”任何同步。事实上,Apple 特别建议为任何类似网络的活动使用单独的后台进程:

如果扩展程序专注于处理徽章、上下文菜单和工具栏按钮,通常是最好的。 将执行同步、更新状态或与远程数据源通信的任何代码放在单独的服务(登录项或启动代理)中。这种方法确保只有一个同步服务在运行时间。

https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/Finder.html

Finder 同步扩展用于提供文件标记、菜单以及以其他方式修改 Finder 的 UI。

添加 Finder 扩展不会给你一个文件夹,更不用说同步了。

您需要提供文件夹和与之相关的所有沙盒详细信息。您的主应用和/或后台进程需要提供同步服务。

总之,您的主应用会处理所有同步。

Finder 扩展更新某些文件夹的 UI。它本身不提供任何同步。因此,您的任何“与 iCloud 同步”问题都应该独立于 Finder 同步扩展上下文来提出。

【讨论】:

非常感谢您的澄清。我现在明白了很多。所以,我认为它将用于默认文件夹,Finder Sync 并不安静。还有一个可能你知道,当我将文件本地存储在没有任何 Finder 同步的目录中时,我是否也能够将这些文件同步到 iOS。它不直接在CoreData中,只有引用存储在那里。 @davidev 我不确定 iCloud 存储是如何为应用程序工作的。这可能最适合提出新问题。 好的..感谢您的帮助和时间!谢谢!

以上是关于MacOS - 使用 iCloud 为 iOS/MacOS 创建 Finder 同步扩展的主要内容,如果未能解决你的问题,请参考以下文章

访问 iCloud 日历事件 - macOS 应用程序

macOS 版 iWork 升级!支持 iCloud 文件夹共享,支持鼠标和触控板

iOS 和 macOS 应用程序之间的 iCloud 核心数据共享不起作用

将 CoreData 存储在 iCloud 中

macOS Catalina 10.15.4亮点在iCloud 云盘!要不要更新?先来看看更新都有哪些利弊

CloudKit 使用的云账号