Cordova 开发一个iOS app

最近公司开发涉及到Cordova,记录一下学习历程。

1.首先Cordova在实现iOS原生和js的交互是通过插件开发,可以在原生的iOS端新建继承于CDVPlugin的类,在该类的h文件中暴露插件的方法,然后在m文件中写具体的实现。

如果参数通过检查,它返回一个具有OK状态的PluginResult,传入原始的echo字符串。 最后,它将结果发送到self.commandDelegate,它在JavaScript端执行exec方法的成功或失败回调。 如果调用成功回调,它将传入echo参数。

2.还需要在congfig。xml中进行相应的插件配置,例如

<feature name = "FirstPhotoPlugin">

        <param name = "iOS-package" value="TKFirstPhotoPlugin"/>

    </feature>

    <feature name = "ManagerPlugin">

        <param name = "iOS-package" value = "TKAllManagerPlugin"/>

    </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

               });

猜你喜欢

转载自my.oschina.net/u/2329800/blog/1359099