3

我试图让File Provider 扩展macOS 10.15 Beta 7 (19A546d)Xcode 11 Beta (11M392r) 上工作,到目前为止还没有设法让它与示例项目一起启动。文档非常缺乏,一定有我错过的东西。


更新

macOS Beta 8 (19A558d)Xcode 11 GM (11A419c)中,NSFileProviderExtensionMac 应用程序不再可用。但是文档说它可用于 Mac Catalyst 应用程序。

当我尝试使用文件提供程序扩展构建 Mac Catalyst 应用程序时,我收到以下错误:

错误:“TestFPExtension.appex”是文件提供程序扩展,在为 Mac Catalyst 构建时不可用。您可能需要限制应在目标编辑器中嵌入此应用程序扩展的平台。(在项目“TestFP2”的目标“TestFP2”中)

错误:为 Mac Catalyst 构建时文件提供程序扩展不可用。(在项目“TestFP2”的目标“TestFPExtension”中)

该应用程序在 iOS 上构建时没有错误。似乎这个 File Provider API 在 Mac 上根本不可用。


原始问题

我有一个 Mac 应用程序,它在启动时执行以下操作:

let domain = NSFileProviderDomain(identifier: NSFileProviderDomainIdentifier(rawValue: "com.app.testfileprovider"), displayName: "TestFileProvider", pathRelativeToDocumentStorage: "")

NSFileProviderManager.add(domain) { error in
    if let error = error {
        NSLog("Could not add file provider for domain: \(error)")
        return
    }

    guard let newManager = NSFileProviderManager(for: domain) else {
        NSLog("Could not create file provider manager.")
        return
    }

    self.manager = newManager
    NSLog("File provider URL: \(newManager.documentStorageURL.path)")
}

我有时会收到此错误,不知道为什么:

无法为域添加文件提供程序:错误域 = NSFileProviderInternalErrorDomain 代码 = 3“值“com.myappbundleid”对于参数“callerBundleID”无效。” UserInfo={NSLocalizedDescription=值“com.myappbundleid”对于参数“callerBundleID”无效。}

  该错误可以通过killall Finder终端中的命令解决,然后它成功运行并输出:

文件提供者 URL:/Users/[用户名]/Library/Group Containers/group.com.myappgroup/File Provider Storage

  在 Finder 中,“File Provider Storage”文件夹会出现一个云徽章,这似乎没问题。我猜。

我有我的文件提供程序扩展类,它基本上是当我在 Xcode 中将文件提供程序扩展目标添加到我的 Mac 应用程序时生成的代码:

class FileProviderExtension: NSFileProviderExtension {
    var fileManager = FileManager()
    override init() {
        NSLog("File provider initialized")
        super.init()
    }
    ...

这里File provider initialized永远不会记录消息,并且永远不会初始化扩展。我根本无法启动它。

在 Console.app 中,这是我能找到的唯一相关消息:

默认 09:14:35.447849+0200 lsd com.apple.launchservices - 45683955:检查应用程序是否在 file:///Users/laszlo.agardi/Library/Developer/Xcode/DerivedData/FileProviderMacTest-eebpahoydvfxovantvhkplhgrcty/Build/Products/ 管理Debug/FileProviderMacTest.app/Contents/PlugIns/FileProviderExt.appex//com.myapp.fptest.FileProviderExt

到目前为止我做了什么:

  • 应用程序和扩展程序是沙盒的,它在权利文件中设置
  • 应用程序和扩展程序共享同一个应用程序组,也在权利中设置
  • 尝试启动扩展:
    • 从 Xcode 运行文件提供程序,Xcode 正在等待扩展启动
    • 我在 Finder 中打开了 File Provider Storage 文件夹,它有云徽章。但是内部没有文件操作或只是浏览启动文件提供程序扩展

我错过了什么?如何让文件提供程序扩展在 macOS Catalina 上启动?

4

0 回答 0