FinderSync проверяет, выбрано ли расширение

Я разрабатываю расширение FinderSync, и у меня есть некоторые проблемы с проверкой выбора или выбора/отмены выбора расширения.

Есть ли способ программно проверить, выбрано ли расширение FinderSync в System Preferences->Extensions?

Существуют ли какие-либо API для получения уведомлений об изменении этого выбора?

Есть ли какой-либо API для выбора/отмены выбора расширения, помимо использования следующего?

system("pluginkit -e use -i com.mycompany.finderExt")

Обратите внимание, что я уже посетил эти страницы:

Как включить расширение FinderSync в системе Preference в Cocoa — Objective C

Расширение синхронизации OSX Finder


person ciprian    schedule 05.10.2015    source источник
comment
Насколько я знаю, ответы на ваши вопросы - нет, нет и нет. Я бы с радостью ошибся.   -  person dejuknow    schedule 05.10.2015
comment
Зачем вам нужно проверять, выбран ли он? Почему бы не принудительно выбирать его время от времени? Почему вас беспокоит команда pluginkit?   -  person Mugen    schedule 08.10.2015
comment
Одна из функций, которую я должен реализовать, — это установить флажок в диалоговом окне настроек приложения, чтобы пользователь мог включать/отключать расширение Finder, и этот параметр должен быть синхронизирован с выбором из Системных настроек->Расширения. Я мог бы сделать так, как вы сказали, но если пользователь хочет отключить мое расширение в Системных настройках, я не хочу переопределять его действие. Кроме того, я могу довольно легко рассинхронизировать два флажка. Пока я просто показываю кнопку, и при нажатии перенаправляю пользователя в предварительную панель расширений.   -  person ciprian    schedule 12.10.2015
comment
Кто-нибудь знает, как расширение сохраняет значение флажка. Если я сниму отметку с расширения, удалю его и снова добавлю, оно останется неотмеченным, и если я отмечу его перед удалением и повторным добавлением, оно останется отмеченным при повторном добавлении.   -  person Sandeep T D S    schedule 13.06.2017


Ответы (3)


pluginkit -m -A -i com.mycompany.finderExt

Если расширение включено, вызов вернется

"+ com.mycompany.finderExt(1)"

Если расширение не включено, вызов вернется

"- com.mycompany.finderExt(1)"

Обратите внимание на знаки плюс и минус, просто проанализируйте возврат, чтобы определить, включено ли расширение.

person Cale    schedule 13.10.2015

macOS 10.14 Mojave добавляет два полезных новых метода управления расширениями:

Приложение, в котором размещено расширение Finder Sync, может определить, включил ли пользователь расширение, и может показать пользовательский интерфейс для управления расширениями. Когда приложение снова становится активным, оно может проверить, включил ли пользователь расширение.

@available(OSX 10.14, *)
open class var isExtensionEnabled: Bool { get }

@available(OSX 10.14, *)
open class func showExtensionManagementInterface()
person pkamb    schedule 14.08.2018

Расширение 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
}
person Hung Nguyen    schedule 11.09.2017
comment
Система может управлять несколькими экземплярами расширения Finder Sync и произвольно запускать/останавливать эти процессы. Поэтому не рекомендуется проверять работающее приложение с заданным идентификатором пакета. - person Rafael Bugajewski; 03.12.2018