最近公司開發涉及到Cordova,記錄一下學習歷程。ios
1.首先Cordova在實現iOS原生和js的交互是經過插件開發,能夠在原生的iOS端新建繼承於CDVPlugin的類,在該類的h文件中暴露插件的方法,而後在m文件中寫具體的實現。ide
若是參數經過檢查,它返回一個具備OK狀態的PluginResult,傳入原始的echo字符串。 最後,它將結果發送到self.commandDelegate,它在JavaScript端執行exec方法的成功或失敗回調。 若是調用成功回調,它將傳入echo參數。學習
2.還須要在congfig。xml中進行相應的插件配置,例如ui
<feature name = "FirstPhotoPlugin">插件
<param name = "iOS-package" value="TKFirstPhotoPlugin"/>xml
</feature>cordova
<feature name = "ManagerPlugin">繼承
<param name = "iOS-package" value = "TKAllManagerPlugin"/>ip
</feature>開發
<feature name = "CommandPlugin">
<param name = "iOS-package" value = "TKCommandPlugin"/>
</feature>
<feature name = "MediaPlugin">
<param name = "iOS-package" value = "TKMediaPlugin"/>
</feature>
3.會在js上開發相似的plugin文件做爲橋樑,例如
cordova.define("cordova-plugin-Pactera.Pactera", function(require, exports, module) {
var exec = require('cordova/exec');
module.exports = {
GetSpeechRecognizeData:function(RequestData,onSuccess,onError) {
alert("3333333");
exec(onSuccess,onError,"SpeechRecognize","pacteraSpeechRecognizeData",[RequestData]);
},
getCameraData:function(RequestData, onSuccess, onError){
exec(onSuccess,onError,"FirstPhotoPlugin","takeTheSystemPhoto",[RequestData]);
},
getStartPage:function(RequestData, onSuccess, onError){
exec(onSuccess,onError,"FirstPhotoPlugin","takeStartPage",[RequestData]);
},
getRequestBody:function(RequestData, onSuccess, onError){
exec(onSuccess,onError,"CommandPlugin","takeRequestBody",[RequestData]);
},
TaskList:function(RequestData, onSuccess, onError){
exec(onSuccess,onError,"ManagerPlugin","MyManagerListPlugin",[RequestData]);
},
customCamera:function(RequestData, onSuccess, onError){
exec(onSuccess,onError,"FirstPhotoPlugin","thePersonFaceCream",[RequestData]);
},
getLocationData:function(RequestData, onSuccess, onError){
exec(onSuccess,onError,"FirstPhotoPlugin","theLocationLoad",[RequestData]);
},
playVideo:function(RequestData, onSuccess, onError){
exec(onSuccess,onError,"MediaPlugin","playTheMediaVideo",[RequestData]);
},
uploadVideo:function(RequestData, onSuccess, onError){
exec(onSuccess, onError,"MediaPlugin","upTheMediaVideo",[RequestData]);
},
downloadFile:function(RequestData, onSuccess, onError){
exec(onSuccess, onError,"MediaPlugin","downloadTheMediaVideo",[RequestData])
},
};
});
4.而後在Cordova-plugins.js上進行相應的文件配置,例如:
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
"file": "plugins/cordova-plugin-Pactera/Pactera.js",
"id": "cordova-plugin-Pactera.Pactera",
"clobbers": [
"Pactera"
]
},
{
"file": "plugins/cordova-plugin-camera/www/CameraConstants.js",
"id": "cordova-plugin-camera.Camera",
"pluginId": "cordova-plugin-camera",
"clobbers": [
"Camera"
]
},
{
"file": "plugins/cordova-plugin-camera/www/CameraPopoverOptions.js",
"id": "cordova-plugin-camera.CameraPopoverOptions",
"pluginId": "cordova-plugin-camera",
"clobbers": [
"CameraPopoverOptions"
]
},
{
"file": "plugins/cordova-plugin-camera/www/Camera.js",
"id": "cordova-plugin-camera.camera",
"pluginId": "cordova-plugin-camera",
"clobbers": [
"navigator.camera"
]
},
{
"file": "plugins/cordova-plugin-camera/www/ios/CameraPopoverHandle.js",
"id": "cordova-plugin-camera.CameraPopoverHandle",
"pluginId": "cordova-plugin-camera",
"clobbers": [
"CameraPopoverHandle"
]
}
];
module.exports.metadata =
// TOP OF METADATA
{
"cordova-plugin-whitelist": "1.2.2",
"cordova-plugin-Pactera":"1.0.0"
};
// BOTTOM OF METADATA
});