原生代码与网页JS之间互相调用的一种机制,支持同步/异步调用。
可调用的js函数格式约定:
同步返回
参数个数:一个
参数类型:{object}
返回值: {object} 或 void
异步返回
方法名: 带有_async后缀
参数个数: 两个
参数1类型: {object}
参数2类型: {function} function (result) result 返回值 {object}类型
返回值: void
可调用的原生方法约定:
同步返回
参数个数:一个
参数类型:{object}
返回值: {object} 或 void
异步返回
参数个数:两个
参数1类型:{object}
参数2类型:block void (^)(id result, NSError *error)
返回值: void
回调js函数格式约定:
参数个数:两个
参数1类型:{object} result 原生方法的返回值,json对象
参数2类型:{string} error 错误信息字符串象
返回值: void
混合式App(Native + Web)开发
@implementation WebridgeHandler
- (void)nativeCommand:(id)params completion:(SlateWebridgeCompletionBlock)completion webView:(UIWebView *)webView
{
// todo: 得到结果后调用 completion(result, error);
}
@end
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 注册WebridgeHandler
[[SlateWebridge sharedBridge] setPriorHandler:[WebridgeHandler new]];
webridge.jsToNative('nativeCommand', {'param':'value'}, function (result, error) {
if (error.length > 0) {
// 有错误,显示错误信息
}
else {
// 没有错误,得到结果 result
}
});
[self.webView evalJSCommand:@"jsObject.jsCommand" jsParams:@{@"param": @"value"}
completionHandler:^(id result, NSError *error) {
if (error) {
// 有错误,显示错误信息
}
else {
// 没有错误,得到结果 result
}
}];
网页中相关js函数的实现,异步方式:
jsObject.jsCommand_async = function(params, callback) {
// todo: 得到结果result后,调用 callback(result);
};
同步方式:
jsObject.jsCommand = function(params) {
// todo: 得到结果result
return result;
};
pod 'SlateWebridge'