Я передаю данные между приложением расширения Safari и приложением MacOS с помощью Центра распределенных уведомлений. Я использую DistributedNotificationCenter.default().addObserver
с указанным c именем уведомления и отправляю уведомление из приложения MacOS под тем же именем DistributedNotificationCenter.default().postNotificationName
Я продолжаю получать attempt to post distributed notification 'nameofnotification' thwarted by sandboxing.
Я видел в документация apple, что
Приложения в песочнице могут отправлять уведомления, только если они не содержат словаря. Если отправляющее приложение находится в изолированной программной среде приложения, userInfo должно быть равно nil.
Информация о моем пользователе не равна nil, но это прекрасно работало в предыдущих версиях Ma c. Что мне не хватает? Это относительно новое?
Какая альтернатива для связи между расширением и приложением? Будет ли работать служба XP C?
ОБНОВЛЕНИЕ
Я внедрил службу XP C, следуя документации Apple , но когда я вызвать его из расширения safari Я получаю эту ошибку Couldn’t communicate with a helper application.
Я могу без проблем вызвать ее из приложения, которое встраивает службу XP C.
Я пытался:
- скопировать службу в расширение
Contents/XPCServices
- , добавить группу приложений и использовать
let connectionXPC = SXPCConnection.init(serviceName:"XXXXXXX.com.bundlename.XPCService")
вместо let connectionXPC = NSXPCConnection.init(serviceName: "com.bundlename.XPCService")
где XXXXXXX - группа приложений.
Любая идея о том, как правильно использовать службу XP C из приложения расширения, или любой другой способ передачи и передачи данных между изолированным расширением и приложением.