FireflyJSBridge使用文档

介绍

移动端对动态化的需求越来越大,开发者经常需要在app中嵌入一些网页,然后会在web和native之间进行交互,如传递数据,调用函数,而连接web与native需要一个桥梁,FireflyJSBridge就是提供了bridge的具体实现方案,来满足开发者的大部分需求。

特性

  • 轻量且强大、安全且健壮
  • 同时支持同步调用和异步调用
  • 支持以类的方式集中统一管理API
  • 支持API命名空间

集成

1.将FireflyJSBridge.framework和依赖的其他库一起导入工程中;详细参见接入iOS

2.在xcode->build phases->link binary with libraries中加入系统的framework

3.在需要使用的文件中,导入头文件

#import <FireflyJSBridge/FireflyJSBridge.h>

使用

初始化容器

FireflyJSBridge.framework中包括基于UIWebView和WKWebView的两种容器,使用方式相同

初始化FireflyJSUIWebViewController容器

#import <FireflyJSBridge/FireflyJSBridge.h>

FireflyJSUIWebViewController *jsvc = [[FireflyJSUIWebViewController alloc] init];

注册命名空间

注册命名空间和响应对象,命名空间和响应对象一一对应,FireflyJSBridge更具命名空间来确定实现方法的具体对象,例如下面注册的命名空间为miniapp,响应对象为FireflyMiniappAbiFactory的实例对象jsobj,命名空间和响应对象一一对应。

FireflyMiniappAbiFactory *jsobj = [[FireflyMiniappAbiFactory alloc] init];
//命名空间miniapp
[jsvc addJavascriptObject:jsobj nameSpace:@"miniapp"];

native与web交互

当集成了jssdk的web页面,在调用方法时,需要增加命名空间的前缀,FireflyJSBridge会根据命名空间,将需要响应的方法派发到响应对象,完成前端到native的调用,响应对象完成后将结果信息以同步或者异步的方式回调给web页面,完成一次web端和native段的通信。

例如:前端js 调用:miniapp.getSystemInfo()时,sdk会调用到注册miniapp命名空间的实例对象jsobj中的方法中

- (void)getSystemInfo:(FireflyJSCallNativeArg *)arg completionHandler:(FireflyJSCallback)completionHandler
{ 
    NSDictionary * dict = getSystemInfo();
    completionHandler([dict ff_toJSONString],YES);
}

jsobj实现getSystemInfo()请求,完成之后以异步的方式回调给前端。

同步调用和异步调用

FireflyJSBridge中回调给前端请求时有同步和异步方式,具体的方式确定需要开发过程中前端和后端协商,异步方式的方法名称后边回追加completionHandler:(FireflyJSCallback)completionHandler参数。

例如前端调用miniapp.getSystemInfo()

同步方法需要实现

- (NSString *)getSystemInfoSync:(FireflyJSCallNativeArg *) arg

异步方法需要实现

- (void)getSystemInfo:(FireflyJSCallNativeArg *)arg completionHandler:(FireflyJSCallback)completionHandler

同步回调需要方法直接返回结果,异步回调的方式需要使用传入的completionHandler来调用结果回调。

//同步方式获取系统信息
- (NSString *)getSystemInfoSync:(FireflyJSCallNativeArg *) arg
{
    NSDictionary * dict = getSystemInfo();
    return [dict ff_toJSONString];
}
//异步方式获取系统信息
- (void)getSystemInfo:(FireflyJSCallNativeArg *)arg completionHandler:(FireflyJSCallback)completionHandler
{ 
    NSDictionary * dict = getSystemInfo();
    completionHandler([dict ff_toJSONString],YES);
}
Copyright © 民生科技有限公司 2019 all right reserved,powered by Gitbook联系方式: wanglihang@mskj.com
修订时间: 2019-08-02 16:19:33

results matching ""

    No results matching ""