适用范围
大海Hybrid适用于iOS9.0及以上操作系统。
工程配置
1.手动集成
copy items.png将Hybrid文件拖到项目中,勾选Copy items id needed.选项
2.cocoapods 集成
支持中...
Hybrid接入说明
1.说明和用途
使用大海Hybrid可以便捷的进行js与Native的通信,此外还提供了简捷的插件扩展能力,方便用户自定义插件供js调用,以及提供了一套资源管理能力,提高Hybrid加载速度。
2.初始化接入
// 引入 #import "DHWKWebViewConfiguration.h"头文件
DHWKWebViewConfiguration *configuration = [[DHWKWebViewConfiguration alloc] init];
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 60, self.view.frame.size.width, 450) configuration:configuration];
webView.UIDelegate = self;
webView.navigationDelegate = self;
// 需要绑定webView
configuration.webView = webView;
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]
[webView loadRequest:request];
[self.view addSubview:webView];
3.插件管理
3.1自定义插件
如果用户想要自定义插件,需要继承自DHBasePlugin基类类
// 比如创建了一个TestPlugin 的类 继承自DHBasePlugin
// 在 .m中实现下面方法
- (void)exec:(DHJSRequest *)request callback:(void (^)(DHJSResponse * _Nonnull))callback
{
// Native能力
// 将处理结果callback
}
详细使用见demo
3.2添加到配置文件
自定义插件TestPlugin创建好之后,还需要创建一个命名为UserPluginFile.json
的文件,里面格式如下
{
"User.changeBackgroundColor": {
"module": "User",
"action": "changeBackgroundColor",
"path": "TestPlugin",
"version": "1.0.1",
"describe": "改变当前控制器背景颜色"
}
}
UserPluginFile.json
文件会在Hybrid初始化的时候将里面的信息读取到内存中。当H5调用这个插件的时候,从内存中缓存的信息,找到相应的类。
3.3字段说明
内层字段
key | value |
---|---|
module | 所属模块 |
action | 功能 |
path | 需要和plugin类名保持一致,例如TestPlugin |
version | 版本号,暂时没用到 |
describe | 插件信息描述 |
外层字段User.changeBackgroundColor
即module.action
的拼接需要保持一致,是查找插件信息的关键索引。
3.4前端调用
示例使用见demo
function changeBackgroundColor() {
let callback = function (response) {
returnValue(response);
};
let message = {
'data': {"color":"FF6835"},
'plugin': "User.changeBackgroundColor",
};
_dhbridge.invoke(message, callback);
}
除了用户可以自定义插件外,大海Hybrid
也开发了一些列插件方便用户使用,按需选择。
eg.提供了选择照片plugin,用户除了接入相应插件,还需要在Xcode中info.plist配置NSPhotoLibraryUsageDescription
和 NSCameraUsageDescription
选项。
3.5现有插件
大海开发了一些列插件方便用户使用,按需选择。
eg.提供了照片选择plugin,用户除了接入相应插件,还需要在Xcode中info.plist配置NSPhotoLibraryUsageDescription
和 NSCameraUsageDescription
选项。
4.资源管理
为了提高Web加载速度,大海提供了一套资源管理能力,用户按需集成。
4.1 说明
详细说明见资源管理,这里只做接入说明
// APP异步拉取配置文件
// 下载hybrid配置文件信息
[[DHResourceManager shareResourceManager] loadSourceJsonWith:@"http://cdn.dahai.com/client/dhhybridsource6.json"];
webView拦截到H5跳转请求时,如果判断需要加载下载好Hybrid资源,则通过路由查找
// 根据路由查找hybrid资源
__weak typeof(self) weakSelf = self;
[[DHResourceManager shareResourceManager] fileWithRoute:@"dahai://hybrid/moduleB" callBack:^(NSURL * _Nullable fileUrl, NSError * _Nullable error) {
NSLog(@"hybrid文件 FileUrl %@ if error %@", fileUrl, error);
if (!error) {
[weakSelf.webView loadFileURL:fileUrl allowingReadAccessToURL:fileUrl];
}
}];
如有疑问,欢迎反馈给我们。
网友评论