app功能模块设计开发指南

上传人:第*** 文档编号:31880421 上传时间:2018-02-09 格式:DOCX 页数:9 大小:52.64KB
返回 下载 相关 举报
app功能模块设计开发指南_第1页
第1页 / 共9页
app功能模块设计开发指南_第2页
第2页 / 共9页
app功能模块设计开发指南_第3页
第3页 / 共9页
app功能模块设计开发指南_第4页
第4页 / 共9页
app功能模块设计开发指南_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《app功能模块设计开发指南》由会员分享,可在线阅读,更多相关《app功能模块设计开发指南(9页珍藏版)》请在金锄头文库上搜索。

1、模块开发指南_iOS一 简介APICloud 引擎通过系统 Webkit 浏览器,实现了 HTML+CSS+Javascript 开发语言和Objective-C/Java/C/C+等 Native 开发语言之间的桥接,极大的丰富和增强了标准Javascript 的能力。令前端开发者通过 JS 即可调用移动设备的底层功能,如:电话、短信、定位、多媒体、跨域 http 请求等,并能将如百度地图、支付宝等第三方厂商的 SDK 很容易的集成到自己的 App 中来。为满足广大开发者自定义扩展 Native module 的需求,APICloud 推出模块扩展 SDK,本SDK 开放桥接机制,方便具有一

2、定 iOS 基础的开发者自由开发定义 Native 扩展模块,丰富 JS 的能力,提升 App 的用户体验。阅读对象本文档面向所有使用该 SDK 的 iOS 开发人员、测试人员、合作伙伴以及对此感兴趣的其他用户。阅读该文档要求用户熟悉 iOS 应用开发,并且对 Html、CSS、Javascript 有一定了解。APICloud 引擎强调传输数据的简洁和统一性,因此选择轻量级的 JSON 作为Javascript 和 Native 语言之间通讯的数据载体,所以要求开发者同时要熟悉 Objective-C和 Javascript 中 JSON 格式数据的操作。开发环境 Xcode6.0 或更高版

3、本 Mac os x 10.9 以上下载 SDK前往 http:/ 下载最新版本的模块开发 SDK,找到里面的 ModulesDevProject_iOS.zip,这里面包含 ModuleDemo、ModulesDevProject 和说明文件,进行模块开发之前一定要先阅读 read me.txt,了解各个目录里面的内容和功能。第二章 开发第一个模块1. 创建静态库工程打开 Xcode,在菜单中选择 File-New-Project.,在 Framework & Library 中选择 Cocoa Touch Static Library,创建一个名为 ModuleDemo 的工程,引入必要的

4、 UZModule.h 头文件到工程中,UZAppDelegate.h 和 UZAppUtils.h 根据需要引入,头文件可以在下载的SDK 包里面找到。2. 模块类实现2.1. 新建模块类新建一个 UZModuleDemo 类,继承于 UZModule 类,其中 UZModule 类为模块的基类。模块开发过程中文件命名时提倡加前缀,以避免和其它模块冲突。2.2. 模块生命周期当前端 js 中调用模块方法时,模块首先会被初始化,引擎会调用其 - (id)initWithUZWebView:(UZWebView *)webView 方法;当模块所在的页面被销毁时,引擎会调用其 - (void)d

5、ispose 方法。2.3. 启动方法如果模块需要在应用启动的时候就执行一些操作,那么首先得在 module.json 里面配置launchClassMethod,例如配置的方法为 launch,然后在模块里面实现该方法,当应用启动时该方法就会被执行。+ (void)launch /2.4. 方法调用实现 - (void)showAlert:(NSDictionary *)paramDict 方法,用于显示一个对话框,该方法需要在 module.json 里面配置,然后在前端 js 里面才可以调用该方法。如果前端调用该方法时传入了一个 function,那么在这里可以通过 cbId 字段获取该

6、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:

7、self cancelButtonTitle:取消 otherButtonTitles:确定, nil;alert show;2.5. 回调我们在这里实现 UIAlertViewDelegate 中的 - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 方法,将用户点击的按钮 index 回调给 js 端,代码如下:- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInt

8、eger)buttonIndex if (_cbId = 0) NSDictionary *ret = index:(buttonIndex);self sendResultEventWithCallbackId:_cbId dataDict:ret errDict:nil doDelete:YES;2.6. 编译静态库选择 iOS Device 模式编译真机环境库,在工程 target 的 Build Settings 中找到 Build Active Architecture Only 选项,设置为 No,同时将 iOS Deployment Target 设置为 iOS 6.0,最终得到

9、包含 armv7 和 arm64 架构的静态库。2.7. module.json 配置新建一个 module.json 文件,将以下内容添加进去。name 对应值为模块的名称,js 中通过该名称来使用模块;class 对应值为模块的类名;methods 中配置的是实例方法,js 中调用的就是这里的方法,多个方法以英文逗号隔开;launchClassMethod 为可选项配置,若配置,引擎将在应用启动的时候调用该方法,注意该方法需是类方法,没有参数。name:moduleDemo,class:UZModuleDemo,methods:showAlert,launchClassMethod:lau

10、nch2.8. 模块包制作模块包根目录必须以该模块的 JS 对象名命名,这里为 moduleDemo,模块包内包含res_moduleDemo、target 文件夹以及 module.json。目录解释: res_moduleDemo 目录:放置资源文件等,此文件夹会以 Create folder references 方式加入工程,读取资源文件时路径需要加上 res_moduleDemo target 目录:存放编译生成的静态库文件、第三方 framework 库、bundle 束等。若该目录下存在其它的文件夹,其它的文件夹也会以 Create folder references 的方式加入

11、到应用工程 module.json 文件:内容为 JSON 格式,定义了模块的类名称、JS 对象名称、方法等;将外层的 moduleDemo 文件夹压缩成为 moduleDemo.zip。2.9. 云端上传自定义模块登录到网站控制台,进入你的应用里面,在模块栏里面找到自定义模块选项卡,选择上传自定义模块,输入模块信息并上传 moduleDemo.zip 文件然后保存。保存成功后将会显示出该模块,此时模块并未被添加,点击模块右上角的加号添加模块,最后云编译的时候模块就会被编译进去。2.10. 调试如果每次都把模块上传到云端编译调试,未免太不方便,找到之前下载的 SDK 里面的ModulesDev

12、Project 文件夹,这是一个包含引擎和测试 widget 的调试工程,开发模块过程中可以把模块静态库工程中的源代码拖到工程里面进行断点调试,待调试没问题以后再去网站上传自定义模块进行测试。打开工程,在 Supporting Files 下面的 uz 文件夹下面找到 module.json 文件,其内容为一数组,这里的 moduleDemo 只是其中的一个模块,一个应用可能需要用到多个模块。name:moduleDemo,class:UZModuleDemo,methods:showAlert,launchClassMethod:launch前端 JS 必须使用 JSON 格式数据作为 JS

13、 与 Native 之间交换数据的传参,APICloud 引擎会对 JS 传入的参数进行解析并封装,前端 JS 使用模块之前需要 require 模块对象。找到 widget 目录下 html 目录里面的 module-con.html,我们在这里面调用 showAlert 方法,如下:var param = msg:Hello App!;var demo = api.require(moduleDemo);demo.showAlert(param, callBack);function callBack(ret, err)var msg = 点击了第+ret.index+个按钮;api.to

14、ast(msg:msg);第三章 其它 SDK 说明1. 显示 UI 视图对于需要添加 UIView 类视图的接口,需要提供 fixedOn 参数,让前端 js 传入 frame 的名字,然后将视图添加到该 frame 上面,同时还应该提供 fixed 参数,控制视图是否随着frame 内容的移动而跟着移动。UZModule 类提供 - (BOOL)addSubview:(UIView )view fixedOn:(NSString )fixedOn fixed:(BOOL)fixed 方法,用于往指定的 frame 上面添加视图。- (void)show:(NSDictionary *)pa

15、ramDict NSString *fixedOn = paramDict stringValueForKey:fixedOn defaultValue:nil;BOOL fixed = paramDict boolValueForKey:fixed defaultValue:YES;self addSubview:yourView fixedOn:fixedOn fixed:fixed;同时 UZModule 提供属性 controller,可通过该控制器对目标控制器进行 push 或者present 操作。/ pushself.viewController.navigationController pushViewController:controller animated:YES;/ presentself.viewController presentViewController:controller animated:YES completion:nil;2. 文件路径转换为消除 iOS 和 Android 平台系统间文件路径的差异,APICloud 为前端 js 提供了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号