APP功能模块设计开发指南
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模块开发指南_iOS
一简介
APICloud引擎通过系统Webkit浏览器,实现了HTML+CSS+Javascript开发语言和Objective-C/Java/C/C++等Native开发语言之间的桥接,极大的丰富和增强了标准Javascript的能力。令前端开发者通过JS即可调用移动设备的底层功能,如:电话、短信、定位、多媒体、跨域http请求等,并能将如百度地图、支付宝等第三方厂商的SDK很容易的集成到自己的App中来。
为满足广大开发者自定义扩展Native module的需求,APICloud推出模块扩展SDK,本SDK开放桥接机制,方便具有一定iOS基础的开发者自由开发定义Native扩展模块,丰富JS的能力,提升App的用户体验。
阅读对象
本文档面向所有使用该SDK的iOS开发人员、测试人员、合作伙伴以及对此感兴趣的其他用户。阅读该文档要求用户熟悉iOS应用开发,并且对Html、CSS、Javascript有一定了解。APICloud引擎强调传输数据的简洁和统一性,因此选择轻量级的JSON作为Javascript 和Native语言之间通讯的数据载体,所以要求开发者同时要熟悉Objective-C和Javascript 中JSON格式数据的操作。
开发环境
∙Xcode6.0或更高版本
∙Mac os x 10.9以上
下载SDK
前往/APICloud/download下载最新版本的模块开发SDK,找到里面的ModulesDevProject_iOS.zip,这里面包含ModuleDemo、ModulesDevProject和说明文件,进行模块开发之前一定要先阅读read me.txt,了解各个目录里面的内容和功能。
第二章开发第一个模块
1. 创建静态库工程
打开Xcode,在菜单中选择File-New-Project...,在Framework & Library中选择Cocoa Touch Static Library,创建一个名为ModuleDemo的工程,引入必要的UZModule.h头文件到工程中,UZAppDelegate.h和UZAppUtils.h根据需要引入,头文件可以在下载的SDK 包里面找到。
2. 模块类实现
2.1. 新建模块类
新建一个UZModuleDemo类,继承于UZModule类,其中UZModule类为模块的基类。模块开发过程中文件命名时提倡加前缀,以避免和其它模块冲突。
2.2. 模块生命周期
当前端js中调用模块方法时,模块首先会被初始化,引擎会调用其-
(id)initWithUZWebView:(UZWebView *)webView 方法;
当模块所在的页面被销毁时,引擎会调用其- (void)dispose 方法。
2.3. 启动方法
如果模块需要在应用启动的时候就执行一些操作,那么首先得在module.json里面配置launchClassMethod,例如配置的方法为launch,然后在模块里面实现该方法,当应用启动时该方法就会被执行。
+ (void)launch {
//
}
2.4. 方法调用
实现- (void)showAlert:(NSDictionary *)paramDict 方法,用于显示一个对话框,该方法需要在module.json里面配置,然后在前端js里面才可以调用该方法。
如果前端调用该方法时传入了一个function,那么在这里可以通过cbId字段获取该function 对应的id,然后在需要的时候把数据通过该function回调给js。
- (void)showAlert:(NSDictionary *)paramDict {
_cbId = [paramDict integerValueForKey:@"cbId" defaultValue:-1];
NSString *message = [paramDict stringValueForKey:@"msg" defaultValue: nil];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message: message delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alert show];
}
2.5. 回调
我们在这里实现UIAlertViewDelegate中的- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 方法,将用户点击的按钮index回调给js端,代码如下:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NS Integer)buttonIndex {
if (_cbId >= 0) {
NSDictionary *ret = @{@"index":@(buttonIndex)};
[self sendResultEventWithCallbackId:_cbId dataDict:ret errDict:n il doDelete:YES];
}
}
2.6. 编译静态库
选择iOS Device模式编译真机环境库,在工程target的Build Settings中找到Build Active Architecture Only选项,设置为No,同时将iOS Deployment Target设置为iOS 6.0,最终得到包含armv7和arm64架构的静态库。