我试图让File Provider 扩展在macOS 10.15 Beta 7 (19A546d)和Xcode 11 Beta (11M392r) 上工作,到目前为止还没有设法让它与示例项目一起启动。文档非常缺乏,一定有我错过的东西。
更新
在macOS Beta 8 (19A558d)和Xcode 11 GM (11A419c)中,NSFileProviderExtension
Mac 应用程序不再可用。但是文档说它可用于 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 上启动?