Связь Angular / HTML5 с iOS WKWebView - PullRequest
       7

Связь Angular / HTML5 с iOS WKWebView

1 голос
/ 07 ноября 2019

Мы пытаемся выяснить, как лучше всего отправить сигнал На iOS WKWebView из Angular 6, проект HTML5.

Любой примербыло бы действительно здорово.

То, что мы пытаемся сделать, это: у нас есть одна кнопка на веб-странице Angular, при нажатии которой она должна уведомить iOS о выполнении какого-либо действия. Загружаем Angular страницу в iOS WKWebView.

Применительно к Angular 5 и родной IOS / Android связи это не очень понятно. Было бы здорово, если бы были доступны образцы как с ios, так и с угловой стороны.

1 Ответ

1 голос
/ 11 ноября 2019

Apple предоставляет в WebKit механизм для отправки сообщений из вашего HTML-кода на собственный:

На вашей HTML-странице вызовите:

window.webkit.messageHandlers.messageHandler.postMessage("Pass your data here...");

, где messageHandler - этоназвание сообщения, полученного в вашем коде iOS. "Pass your data here..." - это данные, передаваемые iOS через сообщение messageHandler.

В вашем коде iOS:

Добавьте обработчик сообщения, используя метод add(_:name:) WKUserContentController, как показано ниже:

webView.configuration.userContentController.add(self, name: "messageHandler")

Наконец, в вашем коде ViewController реализуйте метод WKScriptMessageHandler userContentController:didReceiveScriptMessage:, например:

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
     if message.name == "messageHandler" {
          // Your Message handler code goes here...            
     }

Согласно документации Apple по методу add(_:name:):

Добавлениеобработчик сообщений сценария с именем name заставляет функцию JavaScript window.webkit.messageHandlers.name.postMessage (messageBody) быть определена во всех фреймах во всех веб-представлениях, использующих контроллер содержимого пользователя.

Ссылка на документацию Apple

...