文档章节

Cordova 开发一个iOS app

hanbing94
 hanbing94
发布于 2017/07/13 13:57
字数 449
阅读 6
收藏 0

最近公司开发涉及到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

               });

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
hanbing94
粉丝 2
博文 66
码字总数 38602
作品 0
朝阳
Cordova应用的JavaScript代码和自定义插件代码的调试

我之前写过三篇Cordova相关的技术文章。当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候。 本文就介绍Cordova应用的调试步骤。 如果大家读过...

jerrywangsap
09/02
0
0
Cordova(PhoneGap)体系结构(Android)

作者:tonyley 出处:http://my.oschina.net/tonywolf/blog 转载请注明出处 说明: 本文档只争对Cordova(PhoneGap)的Android端,基于Cordova2.1.0版本。 一.总体结构 Cordova的目标是用HTM...

tonyley
2012/10/12
0
0
cordova 常用命令、插件

安装 cordova: npm install -g cordova 创建应用程序 cordova create hello com.example.hello HelloWorld 添加平台 cordova platform add android cordova platform add ios 完成后运行以下......

Jack088
2015/03/24
0
2
Cordova 3.x 基础(1) -- 环境搭建(Windows / Android)

Cordova 3.x 基础(1) -- 环境搭建(Windows / Android) Mobile App分为三大类:Native App,Hybrid App,Web App。其中Hybrid App介于Native App和Web App之间,它能兼顾Native App的良好用...

youxizhe
2014/09/29
0
0
HTML5应用 + Cordova = 平台相关的混合应用

Jerry之前的一篇文章 SAP Fiori应用的三种部署方式 曾经提到SAP Fiori应用的三种部署方式: On Premise环境下以ABAP BSP应用作为Fiori应用部署和运行的载体 部署并运行在On Cloud环境下,比如...

jerrywangsap
09/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
2
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
113
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部