Post

Replies

Boosts

Views

Activity

Reply to WKScriptMessageHandlerWithReply and strict concurrency checking
Never found a single functioning example of WKScriptMessageHandlerWithReply using the replyHandler with the signature func userContentController( _ userContentController: WKUserContentController, didReceive message: WKScriptMessage, replyHandler: @MainActor (Any?, String?) -> Void Don't believe it has ever worked. You can reliably add a message handler and capture a javascript message pushed to WkWebView by window.webkit.messageHandlers....postMessage, but the replyHandler back to javascript always fails with JavaScript evaluation error: Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type}. This has been going on for at least 7 years. Tried every permutation of Sendable, MainActor. Javascipt push reliably works, reply back fails. Don't think a sample exists. Would like one.
Jul ’24
Reply to WKScriptMessageHandlerWithReply and strict concurrency checking
Inspired myself to go search for working examples. Found a near-working example at Stack Overflow at https://stackoverflow.com/questions/65270083/how-does-the-ios-14-api-wkscriptmessagehandlerwithreply-work-for-communicating-w Pushed a working SwiftUI version to https://github.com/vaughey/WithReplySample/tree/main All the trashing I did with data and object types, Sendable, and MainActor was in vain. Undocumented signature for the javascript call was the culprit.
Jul ’24