現(xiàn)在app混合開發(fā)越來越多授帕,方便,快捷浮梢。對于一點小的修改就需要提交到App Store進行審核跛十,還要經(jīng)歷難熬的等待,還不一定給你審核通過秕硝。尤其是對于我們公司芥映,每天來自不同地區(qū)的不同需求那么多,每次的調(diào)整都要幾天之后用戶才可以使用远豺。那么混合開發(fā)就是一種福音了奈偏,頁面采用html網(wǎng)頁,直接加載放在服務(wù)器上的html頁面躯护,有什么改動就可以直接改html頁面惊来。
我們公司采用的是Cordova框架
創(chuàng)建Cordova項目
1.新建一個Cordova項目,官網(wǎng)有詳細(xì)步驟棺滞,在這里就不多說了裁蚁。Cordova官網(wǎng)
2.在現(xiàn)有的項目中加入Cordova(這是我目前采用的方式)參考
把CordovaLib文件夾拖入我們的項目(里面包含config.xml,Private和Public文件夾),
把www文件添加到項目中检眯,需要注意勾選的是create foler references厘擂,(里面有cordova.js,還可以放一些本地html文件)锰瘸。
備注:對于web開發(fā)伙伴刽严,我們需要把cordova.js和cordova_plugins.js這兩個文件給他們
開始開發(fā)
1.新建一個controller繼承CDVViewController
在viewDidLoad中加入一段代碼self.startPage = @"index.html";
注意這一句一定要加在[super viewDidLoad];前面,不然加載不了
2.剩下的主要就是寫插件了避凝。當(dāng)需要用到原生底層api就需要自定義插件
比如拍照:
- 1.新建一個插件TakePicture繼承CDVPlugin舞萄,
在.h文件中增加js調(diào)用的方法- (void)photoClick:(CDVInvokedUrlCommand *)command;
注意:新建的插件都要在config.xml聲明
<feature name="TakePicture">
<param name="ios-package" value="TakePicture" />
</feature>
- 2.實現(xiàn)插件的方法
PhotoCommandID = command.callbackId;
NSArray *arguments = command.arguments;
if (arguments.count>0) {
upLoadPictureURL = arguments[0];
[self PhotoUPClick];
}
}
command.callbackId是我們把值返回給js要用的id
command.arguments是js傳給我們的參數(shù),是數(shù)組管削,雙方可以協(xié)商傳值的順序
CDVPluginResult * resultJS = nil;
resultJS = [CDVPluginResult resultWithStatus:(CDVCommandStatus_OK) messageAsDictionary:reponseObj];
[self.commandDelegate sendPluginResult:resultJS callbackId:PhotoCommandID];
回傳給js的數(shù)據(jù)可以是很多種類型倒脓,字典,數(shù)組含思,字符串崎弃,都可以,這些Cordova都提供了含潘。
js調(diào)用Cordova的方法
cordova.exec(successBack,failBack,"TakePicture","photoClick",['1','2']);