Cordova 開發一個iOS app

最近公司開發涉及到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

               });

相關文章
相關標籤/搜索