STMScriptMessageHandler
STMScriptMessageHandler
用于与 WKWebView
中的 js 通信。它实现了 WKScriptMessageHandler
协议。一个 STMScriptMessageHandler
对应一个 js 对象。当您的 WKWebView
添加一个 STMScriptMessageHandler
时,js 端会自动添加对象。STMScriptMessageHandler
的处理器名称是 js 对象的名称。
要求
iOS 8.0+
使用
- 本地端
//When the native register a STMScriptMessageHandler called `Bridge`, the js register a object called `window.Bridge`.
STMScriptMessageHandler *messageHandler = [[STMScriptMessageHandler alloc] initWithScriptMessageHandlerName:@"Bridge" forWebView:self.webView];
[self.webView stm_addScriptMessageHandler:messageHandler];
// register a message handler named `Page`, so the js should call your method (that the message handler registered) use `window.Page.callMethod...`
STMScriptMessageHandler *page = [[STMScriptMessageHandler alloc] initWithScriptMessageHandlerName:@"Page" forWebView:self.webView];
[self.webView registerScriptMessageHandler:page];
[page registerMethod:@"setButtons" handler:^(id data, STMResponseCallback responseCallback) {
[self setupRightBarButtonItems:data callback:responseCallback];
}];
- JS 端
// Use js object `window.Bridge` call native method or register method for native.
window.Bridge.callMethod('testNativeMethod', {foo:'foo1', bar: 'bar1'}, function(data){
log('JS got native `testNativeMethod` response', data);
});
window.Bridge.registerMethod('log', function(data, callback){
var message = JSON.parse(data);
log('Native calling js method `log`', message);
callback({key: 'from js', value: 'something'});
});
安装
STMScriptMessageHandler 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'STMScriptMessageHandler'
许可证
STMScriptMessageHandler以MIT许可证和996ICU许可证可用。有关更多信息,请参阅文件LICENSE.MIT
和LICENSE.NPL
。