APP功能模块设计开发指南

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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架构的静态库。

相关文档
最新文档