5个版本
使用旧Rust 2015
0.2.0 | 2023年11月15日 |
---|---|
0.1.3 | 2020年10月31日 |
0.1.2 | 2020年10月31日 |
0.1.1 | 2020年10月31日 |
0.1.0 | 2020年10月31日 |
#38 在 macOS和iOS API
198 每月下载量
125KB
1K SLoC
rust-darwin-webkit
darwin_webkit 提供了对MacOS上WebKit的一些API的绑定。它使用 objc
和 cocoa
crate来与Objective-C绑定。
尚未进行适当的测试。
可以通过获取本地webview句柄并将其添加到插件本地的 NSWindowView
句柄中来将其嵌入到音频插件中。
闭包捕获是不安全的,因为我们只是传递指针。
安装
cargo add darwin-webkit
示例
extern crate cocoa;
extern crate darwin_webkit;
use darwin_webkit::helpers::dwk_app::DarwinWKApp;
fn main() {
unsafe {
let app = DarwinWKApp::new("Simple WebView");
let webview = app.create_webview();
webview.load_url("https://www.google.com.br");
app.set_webview(&webview);
app.run();
}
}
通信示例
extern crate cocoa;
extern crate darwin_webkit;
use cocoa::base::id;
use darwin_webkit::helpers::dwk_app::DarwinWKApp;
use std::rc::Rc;
fn main() {
unsafe {
let app = DarwinWKApp::new("Host an app");
let webview = Rc::new(app.create_webview());
let callback = Box::into_raw(Box::new(Box::new(|_: id, _: id| {
println!("JavaScript called rust!");
webview.evaluate_javascript("document.body.innerHTML += ' -> response from rust';");
})));
webview.add_message_handler("hello", callback);
webview.load_html_string(
"
<script>
document.body.innerHTML += 'start';
window.webkit.messageHandlers.hello.postMessage('hello');
document.body.innerHTML += ' -> success';
</script>
",
"",
);
app.set_webview(&webview);
app.run();
}
}
缺失
从JavaScript到Rust的回调。- 原始绑定中的TODOs
serverTrust
在WKWebView
- 在
NSURLRequest
- 处理缓存策略
- 访问请求组件
- 获取头部字段
- 控制请求行为
- 访问服务类型
- 支持安全编码
- ...
代码检查
cargo clippy
依赖关系
~0–315KB