Общаться между расширением синхронизации искателя и XPC

Я работаю над расширением Finder Sync для OS X и хочу использовать фоновый сервис XPC.

Я могу начать в основном приложении и запустить XPC и работать правильно, но ничего не происходит, когда я пытаюсь получить к нему доступ из Finder Sync. как sync finder, так и XPC являются их собственными пакетами, поэтому это может быть причиной. То, что я хочу, - это синхронизация с поиском, чтобы поговорить с XPC о состоянии файлов и основного приложения, чтобы поговорить как с синхронизатором, так и с XPC о списке папок для просмотра.

Кому-нибудь повезло с этим? Есть ли лучший способ для фоновой службы по запросу? Можно ли говорить между двумя службами XPC?

Ответ 1

Работая с некоторыми инженерами Apple, они поняли, что это проблема, и предложили использовать LoginItem до тех пор, пока не будет найдено лучшее решение.

Итак, это своего рода сервис XPC, который постоянно работает. Связь XPC доступна как для приложения расширения, так и для хоста.

Это работает, хотя это не самое идеальное решение. Я рекомендую проект образца яблока, который имеет дело с элементами входа XPC для примера того, как это сделать.

Ответ 2

Вы не можете напрямую связываться между приложением контейнера и расширением, но вы можете косвенно использовать общие ресурсы. Я сделал именно то, что вы сделали, что совершенно неверно. Надеюсь, вы сохраните статус файла в базе данных, если не сохраните его, а затем поделите базу данных между контейнером и расширением. Я знаю, почему вы хотите использовать XPCService так же, как в Apple FinderSync Doc. (Собственно по причине производительности, создайте NSXPCService для расширения и из XPCService, обратитесь к общей базе данных)

Дополнительные сведения о совместном использовании базы данных:

http://blog.sam-oakley.co.uk/post/92323630293/sharing-core-data-between-app-and-extension-in-ios-8

Надеюсь, это поможет вам,

Ответ 4

Я упорно игнорировал utahwithak ответа и пытался заставить его работать в любом случае. В конечном итоге мне пришлось задать аналогичный вопрос на форумах разработчиков Apple, и, наконец, я получил окончательный ответ о том, почему подключение расширения Finder Sync к встроенной службе XPC не является жизнеспособным проектом системы.

По существу:

  • Расширение Finder Sync по сути ведет себя как стороннее приложение в том смысле, что оно не имеет той же области действия, что и приложение хоста, чтобы иметь возможность установить соединение XPC со встроенной службой XPC.
  • Ответ utahwithak является верным в том смысле, что для того, чтобы расширение Finder Sync могло взаимодействовать со службой XPC, оно должно быть элементом входа в XPC. Однако здесь есть несколько предостережений:

    • Это кажется случайной особенностью. Не уверен, что это что-то, что в конечном итоге может быть исправлено
    • XPC должен всегда работать, даже если он не нужен, поскольку он является элементом входа в систему.
    • Если это элемент входа в систему, пользователь должен будет явно включить эту функцию и иметь возможность отказаться.

Источник: