FinderSync проверяет, выбрано ли расширение
Я разрабатываю FinderSync
расширение и у меня есть некоторые проблемы в проверке выбора выбора или выбора / отмены выбора расширения.
Есть ли способ программно проверить, если FinderSync
расширение выбрано в System Preferences->Extensions
?
Есть ли какие-либо API, чтобы получать уведомления, когда этот выбор изменяется?
Есть ли какой-либо API для выбора / отмены выбора расширения, кроме использования следующего?
system("pluginkit -e use -i com.mycompany.finderExt")
Обратите внимание, что я уже посетил эти страницы:
Как включить расширение FinderSync в Системных настройках в Какао - Цель C
3 ответа
pluginkit -m -A -i com.mycompany.finderExt
Если добавочный номер включен, вызов вернется
"+ com.mycompany.finderExt(1)"
Если добавочный номер не включен, вызов вернется
"- com.mycompany.finderExt(1)"
Обратите внимание на знаки плюс и минус, просто проанализируйте возврат, чтобы определить, включено ли расширение.
macOS 10.14 Mojave добавляет два полезных новых метода для управления расширениями:
Приложение, содержащее расширение Finder Sync, может определить, активировал ли пользователь расширение, и может показать пользовательский интерфейс для управления расширениями. Когда приложение снова становится активным, оно может проверить, активировал ли пользователь расширение.
@available(OSX 10.14, *)
open class var isExtensionEnabled: Bool { get }
@available(OSX 10.14, *)
open class func showExtensionManagementInterface()
Расширение FinderSync - это "приложение", точно. но его комплект называется.appex. когда вы включите его в Системных настройках, macOS загрузит его автоматически (вы можете проверить это с помощью приложения Activity или команды ps -ef)
Таким образом, вы можете легко проверить это с помощью следующего кода:
runningApps = [[NSRunningApplication runningApplicationsWithBundleIdentifier:@"your.bundle.id"] retain];
if runningApps.count != 0{
//your extension was enabled
}
else{
//your extension was not enabled
}