CTJSBridge
WKWebView 中在 Obj-C 和 JavaScript 之间发送消息的 iOS 桥接器
特性
- 远程调试
- 从原生到 JS 发送/处理消息
- 从 JS 到原生发送/处理消息
试用演示
-
请确保你的 Mac 已安装了 golang
-
进入
CTJSBridge/WebServer
目录并运行make run
-
如果你遇到错误
listen tcp :80: bind: address already in use make: *** [run] Error 1
,请打开CTJSBridge/WebServer/main.go
文件,将 80 修改为其他端口号。 -
然后运行
pod update
,并在模拟器上运行CTJSBridge.xcworkspace
项目 -
当它在运行时,你将看到网页,然后在屏幕上轻触五次,将显示连接信息,计数为 0。
-
在 Safari 中打开,转到
https://
,输入类似:192.168.1.100:58931
的连接信息以连接到模拟器 -
在模拟器中关闭连接信息警报,再在屏幕上轻触五次以再次显示它,如果计数为 1,则表示 Safari 已连接到你的模拟器。
-
开始玩耍!
-
在真实设备上,按照相同的步骤进行,远程调试也可以在真实设备上工作。
用法
进行通话
见下面的JavaScript调用
window.CTJSBridge.LoadMethod("Demo", "push", {"key":"value"}, {
"success":function(result){
document.getElementById('message').innerHTML = result;
},
"fail":function(result){
document.getElementById('message').innerHTML = result;
},
"progress":function(result){
document.getElementById('message').innerHTML = result;
},
});
CTJSBridge将为名为Action_push:
(Action_ + push) with params {“key”:“value”}
。所以只需确保你有正确的对象和选择器,CTJSBridge会调用它!
参数始终应该是一个字典。
在发送到Action_push:
的参数中,你会找到三个名为success
、fail
、progress
的块,它们都以Objective-C字典作为回调数据传递给JavaScript。
如果你正在使用
window.CTJSBridge.LoadAPI("CTMarvelCharactersAPIManager", {"orderBy":"modified"}, {
"success":function(result){
document.getElementById('message').innerHTML = result;
},
"fail":function(result){
document.getElementById('message').innerHTML = result;
},
"progress":function(result){
document.getElementById('message').innerHTML = result;
},
});
创建WKWebview
使用分类方法创建WKWebview
#import <CTJSBridge/CTJSBridge.h>
- (WKWebView *)webview
{
if (_webview == nil) {
_webview = [WKWebView ct_WKWebViewWithConfiguration:nil prefixUserAgent:nil];
}
return _webview;
}
这就是了!
查看示例代码以获取更多详细信息
从JavaScript调用:https://github.com/casatwy/CTJSBridge/blob/master/WebServer/static/index.html
回调给JavaScript:https://github.com/casatwy/CTJSBridge/blob/master/CTJSBridge/Demo/DemoViewController.m#L47
Cocoapods
pod 'CTJSBridge'
要求
- iOS 9或更高版本
作者
- Casa Taloyum - Casa Taloyum
交流
- 如果你
发现了错误,请提交问题。 - 如果您有功能请求,请提交一个问题。
- 如果您想贡献力量,请提交 pull request。
许可协议
本项目采用 MIT 许可协议。