美文网首页
Hybrid-iOS集成说明

Hybrid-iOS集成说明

作者: whqfor | 来源:发表于2019-04-08 14:51 被阅读0次
    适用范围

    大海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.changeBackgroundColormodule.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配置NSPhotoLibraryUsageDescriptionNSCameraUsageDescription选项。

    3.5现有插件

    大海开发了一些列插件方便用户使用,按需选择。

    eg.提供了照片选择plugin,用户除了接入相应插件,还需要在Xcode中info.plist配置NSPhotoLibraryUsageDescriptionNSCameraUsageDescription选项。

    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];
        }
    }];
    

    如有疑问,欢迎反馈给我们。

    常见问题

    相关文章

      网友评论

          本文标题:Hybrid-iOS集成说明

          本文链接:https://www.haomeiwen.com/subject/wzggbqtx.html