Я пытаюсь заставить расширение 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-интерфейс File Provider вообще недоступен на 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/[username]/Library/Group Containers/group.com.myappgroup/Хранилище поставщика файлов
В Finder папка «Хранилище поставщика файлов» отображается со значком облака, что, похоже, нормально. Наверное.
У меня есть класс расширения поставщика файлов, который в основном представляет собой сгенерированный код, когда я добавил цель расширения поставщика файлов в свое приложение для 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-eebpahoydvfxovantvhkplhgrcty/Build/Products/ Debug/FileProviderMacTest.app/Contents/PlugIns/FileProviderExt.appex//com.myapp.fptest.FileProviderExt
Что я сделал на данный момент:
- приложение и расширение находятся в песочнице, это задается в файлах прав
- приложение и расширение используют одну и ту же группу приложений, также заданную в правах
- Tried to launch the extension:
- Run the file provider from Xcode, Xcode was waiting for the extension to launch
- Я открыл папку File Provider Storage в Finder, она имеет значок облака. Но никакие действия с файлами внутри или просто просмотр не запускают расширение поставщика файлов.
Что я упускаю? Как запустить расширение поставщика файлов в macOS Catalina?
NSFileProviderReplicatedExtension
(только для macOS) иNSFileProviderExtension
(только для iOS). Catalyst явно не поддерживается API-интерфейсом поставщика файлов, как указано Xcode при попытке портировать последний. - person Peter   schedule 09.03.2021