An elegant way to send message between Swift
and WKWebView
.
You don't need to write any javascript code.
And the web developer don't need write any extra javascript code either.
It's very easy to define a javascript function with native code
let plg: (String) -> Void = {
print("🌏 [WebView]:", $0)
}
// the first arg is the function name
webView.injector.inject(path: "window.bridge.log", plugin: plg)
// the web developer can invoke this function directly
// window.bridge.log("hello world");
define a function with callbacks
let plg: (String, Callback) -> Void = {
$1("Got it. ", $0)
}
// Subscripts is supported
webView.injector["window.bridge.test"] = plg
// js: window.bridge.test("message", console.log)
Codable
struct User: Codable {
var name: String
var age: Int
var nickname: String?
}
let plg: (User, Callback) -> Void = { user, callback in
var user = user
user.nickname = "Nickname"
user.age = 10
callback(user)
}
webView.injector["window.bridge.test"] = plg
// window.bridge.test({ name: "Octree", age: 100 }, (user) => { /* ... */ })
Besides, you can inject css into your webView
webView.injector.cssInjector.inject(css: source, forKey: key)
// remove css
webView.injector.cssInjector.removeCSS(forKey: key)
webView.nightFall()
webView.sunrise()
pod 'SwiftWKBridge'
Octree, [email protected]
SwiftWKBridge is available under the MIT license. See the LICENSE file for more info.
link |
Stars: 6 |
Last commit: 2 weeks ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics