使用OC开发phonegp 组件

1. 使用oc 对phonegp中的组件近些开发,首先具体的pgonegp跟nativecode之间的一些优劣就不说了,开发phonegp

对应的组件主要就是使用nativecode开发一些具有某些功能的组件,然后这些类交付给js使用就可以了,说简单些就是使用OC开发一些类然后交付使用,这中间涉及一个最主要的问题就是,js如何实现与nativecode代码之间的通信问题,解决了这个麻烦一切问题迎刃而解,首先Cordova为我们提供了一个最核心的组件,依靠这个phonegp中精华的部分可以为我们提供很多方便。

2. 废话少说,直接切入正题,我们先解决一个问题,使用OC 开发一个组件,然后交付js

调用,一个最直接的例子

(1). 首先我们创建一个OC 的类HelloPlugin  继承与 CDVPlugin1

  • (void)nativeFunction:(NSMutableArray*)arguments;  函数定义

- (void)nativeFunction:(NSMutableArray*)arguments{

NSLog(@"hello nativecode...");

}

这里面我们只需要定一个一个类就可以了,他只会打印一句nativecode的一句字符串

2.接下来我们实现我们的js代码模块,js   和nativecode都写好之后然后让他们相互调用

js代码:

首先创建一个js文件,HelloPlugin.js

定义一个js类,然后在接下来的时间里我们会使用这个类

var HelloPlugin = {

callNativeFunction: function (success, fail, resultType)

{

return Cordova.exec( success, fail, "helloPlugin", "nativeFunction", []);

}

};

这个类有一个函数,三个参数,我们回调用这个对象里面的函数接下来

  1. 接下来是正题,在index.html里面,这一块是前段的代码,引入js文件,这个不多说了

<script type="text/javascript"charset="utf-8"src="HelloPlugin.js"></script>

但是此处会有一个问题,刚第一次接触这个地方的时间发现js文件引用了可就是不成功,后来发现了问题(在Cordova工程的www目录下,这个目录的结构跟iOS自身工程目录结构不同,这个地方的目录 以及文件引用跟java C#中类似,你创建了文件只用放在硬盘上www目录下就行,在xcode里面直接在子目录下创建会有些问题,前提是HelloPlugin.js index.html一定都在www目录下同一文件夹目录下)这个问题搞定,接下来继续入题:

首先定一个一个块

<div id="deviceready"class="blink">

<p class="event listening">Connecting to Device43434343</p>

<p class="event received">Device is Ready</p>

</div>

接下来注册一个事件

<script type="text/javascript">

document.addEventListener("deviceready", onDeviceReady, false);

document.addEventListener("btn", clickBtn, false);

function onDeviceReady() {

/**

* 加载成功调用js

*/

//MyPlugin.add("My","Plugin",addSuc,addFiald);

MyPlugin.nativeFunction(

["HelloWorld"],

function(result) {

alert("Success: \r\n"+result);

},

function(error) {

alert("Error: \r\n"+error);

}

);

}

</script>

这样js 通过网页事件调到对应的方法,这个事件解释下:

首先网页事件触发这个不说了,我们在网页里面通过js 触发事件调用到HelloPlugin.js

总的 MyPlugin.nativeFunction函数,参数一致都有,这个没问题,

接下来看这个函数里面到底写了什么

Cordova.exec( success, fail, "helloPlugin", "nativeFunction", []);

前两个参数分别是失败 成功走的函数,

这个类似与block, 接下俩一个是注册插件名字,以及插件里面的函数名, 最后一个是参数,

解释下,我们写的插件是用OC写的,叫HelloPlugin,

我们在应用程序 config.xml里面配置了,  第一个name只是我们给插件定义的可以在js里面用的名字,第二个 ios-package: HelloPlugin,这个是对应的,我们把写好的OC类配置了一个插件名,可以理解为一个映射,在 js 中我们就用这个叫 helloPlugin的来对应我们用OC写的插件。

<feature name="helloPlugin">

<param name="ios-package"value="HelloPlugin" />

</feature>

接下来: Cordova.exec( success, fail, "helloPlugin", "nativeFunction", []);

这个就是Cordova给我门提供的函数,字面意思执行函数,参数植入,有类名,函数名,具体什么类调用什么函数,OK,这样基本已经连接好了,直接Run,OK。。。

整体来讲,Cordova插件开发主要就是一个解决nativecode和js之间通信问题的,主要是两种语言之间互调,通信数据传输,H5可以更好的优化对应的界面,适应更多的平台,nativecode则更多的做一些局限于平台自身的一些问题的处理,这一点也是不可能逾越的。

使用OC开发phonegp 组件的更多相关文章

  1. iOS开发之组件化架构漫谈

    前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是 ...

  2. 【小程序】小程序开发自定义组件的步骤>>>>>>>>>小程序开发过程中报错:jsEnginScriptError

    报错:jsEnginScriptError VM6342: jsEnginScriptError Component is not found in path "component/spac ...

  3. web前端开发常用组件

    web前端开发常用组件 1. 对话框(dialog):jbox(适合对话框等其它功能).colorbox(也很强大,可以弥补jbox图片轮播的落点),      这二者基本能搞定所有对话框的情况 2. ...

  4. 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 在WePY中实现了小程序的组件化开发,组件的所有业务与功能在组件本身实现,组件与组件之间彼此隔离,上述例子在WePY的组件化开发过程中,A组件只会影响到A所绑定的myclick

    wepyjs - 小程序组件化开发框架 https://tencent.github.io/wepy/document.html#/?id=%e5%be%ae%e4%bf%a1%e5%b0%8f%e7 ...

  6. C# 开发COM组件供c++使用

    C# 开发COM组件供c++使用 Microsoft在解决和以往的COM和SDK开发技术之间的互操作性(Interoperability)方面做了很多的工作,其中包括COM和.NET对象之间的相互调用 ...

  7. OC开发_整理笔记——友盟分享(社交化组件)

    0.友盟的地址 http://dev.umeng.com,进入友盟,在使用友盟之前我们需要注册账号获取key (1 进入我们的产品,添加新应用 (2  输入信息,然后就会获取到key 1.选择社会化分 ...

  8. [DeviceOne开发]-do_LinearLayout组件使用技巧

    一.摘要 今天跟大家主要来介绍一下DeviceOne中的do_linearlayout这个布局,在DeviceOne开发中,do_linearlayout这个布局是相当重要. 现在给大家来总结一下. ...

  9. [js开源组件开发]query组件,获取url参数和form表单json格式

    query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……, ...

随机推荐

  1. 利用纯java捕获和播放音频

    参考: 1.http://www.cjsdn.net/doc/jdk60/javax/sound/sampled/package-summary.html 2.http://www.cjsdn.net ...

  2. codeforce --- 340D

    D. Bubble Sort Graph time limit per test 1 second memory limit per test 256 megabytes input standard ...

  3. Rest中的XML与JSON的序列化与反序列化

    #region 获取XML的序列化和反序列化 /// <summary> /// 对象进行序列化生成XML /// </summary> /// <typeparam n ...

  4. 《Linear Algebra and Its Applications》-chaper6-正交性和最小二乘法-最小二乘问题

    最小二乘问题: 结合之前给出向量空间中的正交.子空间W.正交投影.正交分解定理.最佳逼近原理,这里就可以比较圆满的解决最小二乘问题了. 首先我们得说明一下问题本身,就是在生产实践过程中,对于巨型线性方 ...

  5. spring 学习的开源项目

    http://jinnianshilongnian.iteye.com/blog/1508016 http://jinnianshilongnian.iteye.com/blog/2049092 sp ...

  6. Palindrome - URAL - 1297(求回文串)

    题目大意:RT   分析:后缀数组求回文串,不得不说确实比较麻烦,尤其是再用线段数进行查询,需要注意的细节地方比较多,比赛实用性不高......不过练练手还是可以的.   线段数+后缀数组代码如下: ...

  7. 【基础】多线程更新窗体UI的若干方法

    一.前言 在单线程中设置窗体某个控件的值很简单的事,只需要设置控件文本的值就可以了,但是有的业务场景很是复杂,界面上的控件也很多,这种情况下当数据量比较多的时候,在单线程中更新UI不可避免地会发生假死 ...

  8. 手把手教你mysql(十)索引

    手把手教你mysql(十)索引 一:索引的引入 索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度. 类似于图书的目录,方便快速定位,寻找指定的内容,如一本1000页的 ...

  9. (二)windows下安装PHPCMS V9

    一.准备工作 搭建环境 :参考:Windows下搭建PHP开发环境及相关注意事项 PHPCMS V9 :下载适合自己 PHPCMS V9 版本到本地或服务器,下载地址:http://www.phpcm ...

  10. PDOstament对象执行execute()函数,只要是sql语句正确都是返回true

    [PDO对象操作数据库] PDOstament对象执行execute()函数,只要是sql语句正确都是返回true. 问题: 想要PDO对象实现更改一条记录, 并修改是否成功要返回信息给用户. 上我的 ...