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

               });

相关文章
相关标签/搜索