iOS 集成

注:以下文档都是假设您已经具备一定的iOS开发经验。 这篇教程,讲述了如何将Hippy集成到iOS工程

集成到自定义工程中

使用pod集成

1.安装CocoaPods 2.在用户自定义工程目录下创建podfile文件,文本如下 1. #保持pod文件目录结构 2. install! "cocoapods", :preserve_pod_file_structure => true 3. platform :ios, '8.0' 4. #TargetName替换成用户工程名 5. target TargetName do 6. #使用hippy最新版本 7. pod 'hippy' 8. #若想指定使用的hippy版本号,比如2.0.0版,请使用 9. #pod 'hippy', '2.0.0' 10. end

3.在命令行中执行命令 1. pod install

4.使用cocoapods生成的.xcworkspace后缀名的工程文件来打开工程。

使用源码直接集成

1.从GitHub中将源码ios源码下载,将ios/sdk文件夹以及core文件夹拖入工程中 2.删除对core/js文件夹的引用。

core/js文件夹中包含的是不参与编译的js文件 3.删除对core/napi/v8文件夹的引用 core文件夹代码涉及ios/adr JS引擎,ios使用的JSC 4.在xcode build settings中设置 User Header Search Paths 项为core文件夹所在路径 假设core文件夹路径为/documents/project/hippy/demo/core ,那应当设置为 /documents/project/hippy/demo/而不是 ~/documents/project/hippy/demo/core

编写代码开始调试或者加载业务代码

Hippy提供分包加载接口以及不分包加载接口, 所有的业务包都是通过HippyRootView进行承载,创建业务也就是创建RootView。 目前HippyRootView提供分包加载接口以及不分包加载接口

1. 使用分包加载接口

  1. /** 此方法适用于以下场景:
    2.  * 在业务还未启动时先准备好JS环境,并加载包1,当业务启动时加载包2,减少包加载时间
    3.  * 我们建议包1作为基础包,与业务无关,只包含一些通用基础组件,所有业务通用
    4.  * 包2作为业务代码加载
    5. */
    6.   7. //先加载包1地址,创建执行环境
    8. //commonBundlePath值包1路径
    9. NSURL * commonBundlePath = getCommonBundlePath();
    10. HippyBridge *bridge = [[HippyBridge alloc] initWithBundleURL: commonBundlePath
    11.                                                 moduleProvider: nil
    12.                                                 launchOptions: nil];
    13.   14. // 通过bridge以及包2地址创建rootview
    15. - (instancetype)initWithBridge:(HippyBridge *)bridge  
    16.     businessURL:(NSURL *)businessURL // 业务包地址
    17.     moduleName:(NSString *)moduleName // 业务包启动函数名
    18.     initialProperties:(NSDictionary *)initialProperties // 初始化参数
    19.     shareOptions:(NSDictionary *)shareOptions  // 配置参数(进阶)
    20.     isDebugMode:(BOOL)isDebugMode // 是否是调试模式
    21.     delegate:(id<HippyRootViewDelegate>)delegate // rootview加载回调

2. 使用不分包加载接口

  1. - (instancetype)initWithBundleURL:(NSURL *)bundleURL  // 包地址
    2.     moduleName:(NSString *)moduleName // 业务包启动函数名
    3.     initialProperties:(NSDictionary *)initialProperties  // 初始化参数
    4.     shareOptions:(NSDictionary *)shareOptions // 配置参数(进阶)
    5.     isDebugMode:(BOOL)isDebugMode // 是否是调试模式
    6.     delegate:(id <HippyRootViewDelegate>)delegate // rootview加载回调

不管使用分包还是不分包初始化rootview, 如果isDebugMode 为YES的情况下,会忽略所有参数,直接使用tnpm本地服务加载测试bundle。 使用分包加载可以结合一系列策略,比如提前预加载bridge, 全局单bridge等来优化页面打开速度。