Могу ли я отправить сообщение прямо с фоновой страницы веб-расширения Safari в собственное приложение?
Я разрабатываю веб-расширение сафари. Мне нужно отправить данные с фоновой страницы веб-расширения в собственное приложение. Собственное приложение получает это сообщение и подписывает его с помощью USB-ключа для генерации значения подписи. Затем собственное приложение отправляет значение подписи обратно на фоновую страницу.Обмен сообщениями с собственным приложением веб-расширения
Сначала я создаю порт в background.js
let port = browser.runtime.connectNative("application.id");
Добавьте прослушиватель к этому порту для получения сообщения от собственного приложения , следующим образом:
port.onMessage.addListener(function(message) {
console.log("Received native port message:");
console.log(message);
});
В моем собственном приложении я могу отправить сообщение на фоновую страницу со следующими кодами:
SFSafariApplication.dispatchMessage(withName: "Hello from App",
toExtensionWithIdentifier: extensionBundleIdentifier,
userInfo: ["AdditionalInformation": "Goes Here"],
completionHandler: { (error) -> Void in
os_log(.default, "Dispatching message to the extension finished")
})
Но как я могу отправить сообщение с фоновой страницы в собственное приложение? В демонстрации «Обмен сообщениями в собственном приложении веб-расширения» сообщения отправляются с помощью следующего кода:
port.postMessage("Hello from JavaScript Port");
Но нет кодов, показывающих, как получить это сообщение в собственном приложении.
Как я могу получать сообщения, отправленные с помощью postMessage, с фоновой страницы в собственном приложении? Если вы можете предоставить демонстрацию с object-C, я буду очень признателен. Спасибо!
1 ответ
Нашел следующий ответ на свой вопрос в сессии WWDC'20Meet Safari Web Extensions
Приложение ⭤ расширение:
Общие NSUserDefaults из группы приложений или NSXPCConnection
См. также ПРИМЕЧАНИЯ к WWDC.