On Android, the web view is represented as WebView
.
Java
Copied to your clipboard@Overridepublic boolean shouldShowMessage(FullscreenMessage fullscreenMessage) {// access to the whole message from the parentMessage message = (Message) fullscreenMessage.getParent();WebView webView = message.getWebView();...}
On iOS, the web view is represented as WKWebView
.
Swift
Copied to your clipboardfunc shouldShowMessage(message: Showable) -> Bool {// access to the whole message from the parentlet fullscreenMessage = message as? FullscreenMessagelet message = fullscreenMessage?.parentlet messageWebView = message?.view as? WKWebView...}
With a reference to the WebView
, the instance method public void evaluateJavascript(@NonNull String script, @Nullable ValueCallback<String> resultCallback)
can now be leveraged to call a JavaScript method.
Further details of this API are explained in the Android documentation - the example below is provided for the purpose of demonstration:
Java
Copied to your clipboard@Overridepublic boolean shouldShowMessage(FullscreenMessage fullscreenMessage) {// access to the whole message from the parentMessage message = (Message) fullscreenMessage.getParent();WebView webView = message.getWebView();// webview operations must be run on the ui threadwebView.post(new Runnable() {@Overridepublic void run() {webView.evaluateJavascript("startTimer()", new ValueCallback<String>() {@Overridepublic void onReceiveValue(String s) {// do something with the content}});}});...}
With a reference to the WKWebView
, the instance method evaluateJavaScript(_:completionHandler:)
can now be leveraged to call a JavaScript method.
Further details of this API are explained in the Apple documentation - the example below is provided for the purpose of demonstration:
Swift
Copied to your clipboardfunc shouldShowMessage(message: Showable) -> Bool {// access to the whole message from the parentlet fullscreenMessage = message as? FullscreenMessagelet message = fullscreenMessage?.parent// the `shouldShowMessage` delegate method is called on a background thread.// need to dispatch code that uses the webview back to the main thread.DispatchQueue.main.async {let messageWebView = message?.view as? WKWebViewmessageWebView?.evaluateJavaScript("startTimer();") { result, error inif error != nil {// handle errorreturn}if result != nil {// do something with the result}}}...}