Не удается запустить новое расширение FileProvider в macOS 10.15
Я пытаюсь заставить расширение 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. (в целевой TestFPExtension из проекта TestFP2)
Приложение собирается без ошибок для iOS. Похоже, этот 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)")
}
Иногда я получаю эту ошибку, не знаю почему:
Не удалось добавить поставщика файлов для домена: Error Domain=NSFileProviderInternalErrorDomain Code=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" с облачным значком, что кажется нормальным. Я думаю.
У меня есть класс расширения поставщика файлов, который в основном является сгенерированным кодом, когда я добавил цель расширения поставщика файлов в свое приложение Mac в Xcode:
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: Проверка того, управляется ли приложение в файле:///Users/laszlo.agardi/Library/Developer/Xcode/DerivedData/FileProviderMacTest-eebpahoydvfxovantvhkplus Отладка /FileProviderMacTest.app/Contents/PlugIns/FileProviderExt.appex//com.myapp.fptest.FileProviderExt
Что я сделал до сих пор:
- приложение и расширение находятся в изолированной программной среде, они задаются в файлах прав
- приложение и расширение используют одну и ту же группу приложений, также заданную в правах
- Пытался запустить расширение:
- Запустите поставщик файлов из Xcode, Xcode ждал запуска расширения
- Я открыл папку File Provider Storage в Finder, на ней есть значок облака. Но никакое действие с файлом внутри или просто просмотр не запускает расширение поставщика файлов.
Что мне не хватает? Как мне запустить расширение File Provider в macOS Catalina?