Могу ли я отправить сообщение прямо с фоновой страницы веб-расширения 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.

Другие вопросы по тегам